2016-01-30 01:18:23 +01:00
< ? php
/*
* Router paths
*/
// Define namespace
namespace Sakura ;
2016-01-30 14:25:18 +01:00
2016-09-10 17:05:54 +02:00
use Phroute\Phroute\Exception\HttpMethodNotAllowedException ;
use Phroute\Phroute\Exception\HttpRouteNotFoundException ;
2016-03-26 17:36:58 +01:00
// Check if logged out
2016-09-11 16:25:22 +02:00
Routerv1 :: filter ( 'logoutCheck' , function () {
2016-08-07 16:10:27 +02:00
if ( CurrentSession :: $user -> isActive ()) {
2016-09-10 17:05:54 +02:00
throw new HttpRouteNotFoundException ();
2016-03-26 17:36:58 +01:00
}
});
// Check if logged in
2016-09-11 16:25:22 +02:00
Routerv1 :: filter ( 'loginCheck' , function () {
2016-08-07 16:10:27 +02:00
if ( ! CurrentSession :: $user -> isActive ()) {
2016-09-10 17:05:54 +02:00
throw new HttpMethodNotAllowedException ();
2016-03-26 17:36:58 +01:00
}
});
2016-04-25 04:01:14 +02:00
// Maintenance check
2016-09-11 16:25:22 +02:00
Routerv1 :: filter ( 'maintenance' , function () {
2016-07-26 19:29:53 +02:00
if ( config ( 'general.maintenance' )) {
2016-08-07 16:10:27 +02:00
CurrentSession :: stop ();
2016-04-25 04:01:14 +02:00
http_response_code ( 503 );
2016-09-10 17:05:54 +02:00
return view ( 'errors/503' );
2016-04-25 04:01:14 +02:00
}
});
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'before' => 'maintenance' ], function () {
2016-04-25 04:01:14 +02:00
// Meta pages
2016-09-11 16:25:22 +02:00
Routerv1 :: get ( '/' , 'MetaController@index' , 'main.index' );
Routerv1 :: get ( '/faq' , 'MetaController@faq' , 'main.faq' );
Routerv1 :: get ( '/search' , 'MetaController@search' , 'main.search' );
2016-04-25 04:01:14 +02:00
// Auth
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'before' => 'logoutCheck' ], function () {
Routerv1 :: get ( '/login' , 'AuthController@login' , 'auth.login' );
Routerv1 :: post ( '/login' , 'AuthController@login' , 'auth.login' );
Routerv1 :: get ( '/register' , 'AuthController@register' , 'auth.register' );
Routerv1 :: post ( '/register' , 'AuthController@register' , 'auth.register' );
Routerv1 :: get ( '/resetpassword' , 'AuthController@resetPassword' , 'auth.resetpassword' );
Routerv1 :: post ( '/resetpassword' , 'AuthController@resetPassword' , 'auth.resetpassword' );
Routerv1 :: get ( '/reactivate' , 'AuthController@reactivate' , 'auth.reactivate' );
Routerv1 :: post ( '/reactivate' , 'AuthController@reactivate' , 'auth.reactivate' );
Routerv1 :: get ( '/activate' , 'AuthController@activate' , 'auth.activate' );
2016-04-25 04:01:14 +02:00
});
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'before' => 'loginCheck' ], function () {
Routerv1 :: get ( '/logout' , 'AuthController@logout' , 'auth.logout' );
2016-09-13 16:41:42 +02:00
Routerv1 :: post ( '/logout' , 'AuthController@logout' , 'auth.logout' );
2016-03-28 16:47:43 +02:00
});
2016-02-04 21:56:40 +01:00
2016-07-31 03:32:37 +02:00
// Link compatibility layer, prolly remove this in like a year
2016-09-11 16:25:22 +02:00
Routerv1 :: get ( '/r/{id}' , function ( $id ) {
2016-07-31 03:32:37 +02:00
header ( " Location: /p/ { $id } " );
});
2016-09-11 16:25:22 +02:00
Routerv1 :: get ( '/p/{id}' , function ( $id ) {
2016-07-31 03:32:37 +02:00
$resolve = [
'terms' => 'info.terms' ,
'contact' => 'info.contact' ,
'rules' => 'info.rules' ,
'welcome' => 'info.welcome' ,
//'profileapi' => 'api.manage.index',
'chat' => 'chat.redirect' ,
2016-09-10 16:10:26 +02:00
'irc' => 'chat.irc' ,
2016-07-31 03:32:37 +02:00
'feedback' => 'forums.index' ,
2016-07-31 21:36:13 +02:00
'mcp' => 'manage.index' ,
'mcptest' => 'manage.index' ,
2016-07-31 03:32:37 +02:00
//'report' => 'report.something',
//'osu' => 'eventual link to flashii team',
'everlastingness' => 'https://i.flash.moe/18661469927746.txt' ,
'fuckingdone' => 'https://i.flash.moe/18671469927761.txt' ,
];
if ( ! array_key_exists ( $id , $resolve )) {
throw new \Phroute\Phroute\Exception\HttpRouteNotFoundException ();
}
$link = $resolve [ $id ];
header ( " Location: " . ( substr ( $link , 0 , 4 ) === 'http' ? $link : route ( $link )));
});
// Info
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'info' ], function () {
Routerv1 :: get ( '/terms' , 'InfoController@terms' , 'info.terms' );
Routerv1 :: get ( '/privacy' , 'InfoController@privacy' , 'info.privacy' );
Routerv1 :: get ( '/contact' , 'InfoController@contact' , 'info.contact' );
Routerv1 :: get ( '/rules' , 'InfoController@rules' , 'info.rules' );
Routerv1 :: get ( '/welcome' , 'InfoController@welcome' , 'info.welcome' );
2016-07-31 03:32:37 +02:00
});
2016-08-04 01:40:47 +02:00
// Status
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'status' ], function () {
Routerv1 :: get ( '/' , 'StatusController@index' , 'status.index' );
2016-08-04 01:40:47 +02:00
});
2016-04-25 04:01:14 +02:00
// News
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'news' ], function () {
Routerv1 :: get ( '/{category:c}?' , 'NewsController@category' , 'news.category' );
Routerv1 :: get ( '/post/{id:i}' , 'NewsController@post' , 'news.post' );
2016-04-25 04:01:14 +02:00
});
2016-02-04 21:56:40 +01:00
2016-07-29 21:31:36 +02:00
// Chat
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'chat' ], function () {
Routerv1 :: get ( '/redirect' , 'ChatController@redirect' , 'chat.redirect' );
Routerv1 :: get ( '/settings' , 'ChatController@settings' , 'chat.settings' );
Routerv1 :: get ( '/auth' , 'ChatController@auth' , 'chat.auth' );
Routerv1 :: get ( '/resolve' , 'ChatController@resolve' , 'chat.resolve' );
Routerv1 :: get ( '/irc' , 'ChatController@irc' , 'chat.irc' );
2016-07-29 21:31:36 +02:00
});
2016-08-10 18:10:57 +02:00
// Authentication for the "old" chat
2016-09-11 16:25:22 +02:00
Routerv1 :: get ( '/web/sock-auth.php' , 'ChatController@authLegacy' );
2016-08-10 18:10:57 +02:00
2016-04-25 04:01:14 +02:00
// Forum
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'forum' ], function () {
2016-04-25 04:01:14 +02:00
// Post
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'post' ], function () {
Routerv1 :: get ( '/{id:i}' , 'Forum.PostController@find' , 'forums.post' );
Routerv1 :: group ([ 'before' => 'loginCheck' ], function () {
Routerv1 :: get ( '/{id:i}/raw' , 'Forum.PostController@raw' , 'forums.post.raw' );
Routerv1 :: get ( '/{id:i}/delete' , 'Forum.PostController@delete' , 'forums.post.delete' );
Routerv1 :: post ( '/{id:i}/delete' , 'Forum.PostController@delete' , 'forums.post.delete' );
Routerv1 :: post ( '/{id:i}/edit' , 'Forum.PostController@edit' , 'forums.post.edit' );
2016-04-25 04:01:14 +02:00
});
});
2016-03-28 16:47:43 +02:00
2016-07-30 15:48:09 +02:00
// Topic
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'topic' ], function () {
Routerv1 :: get ( '/{id:i}' , 'Forum.TopicController@view' , 'forums.topic' );
Routerv1 :: get ( '/{id:i}/sticky' , 'Forum.TopicController@sticky' , 'forums.topic.sticky' );
Routerv1 :: get ( '/{id:i}/announce' , 'Forum.TopicController@announce' , 'forums.topic.announce' );
Routerv1 :: get ( '/{id:i}/lock' , 'Forum.TopicController@lock' , 'forums.topic.lock' );
Routerv1 :: get ( '/{id:i}/delete' , 'Forum.TopicController@delete' , 'forums.topic.delete' );
Routerv1 :: get ( '/{id:i}/restore' , 'Forum.TopicController@restore' , 'forums.topic.restore' );
Routerv1 :: get ( '/{id:i}/move' , 'Forum.TopicController@move' , 'forums.topic.move' );
Routerv1 :: post ( '/{id:i}/reply' , 'Forum.TopicController@reply' , 'forums.topic.reply' );
2016-04-25 04:01:14 +02:00
});
2016-03-28 16:47:43 +02:00
2016-04-25 04:01:14 +02:00
// Forum
2016-09-11 16:25:22 +02:00
Routerv1 :: get ( '/' , 'Forum.ForumController@index' , 'forums.index' );
Routerv1 :: get ( '/{id:i}' , 'Forum.ForumController@forum' , 'forums.forum' );
Routerv1 :: group ([ 'before' => 'loginCheck' ], function () {
Routerv1 :: get ( '/{id:i}/mark' , 'Forum.ForumController@markRead' , 'forums.mark' );
Routerv1 :: get ( '/{id:i}/new' , 'Forum.TopicController@create' , 'forums.new' );
Routerv1 :: post ( '/{id:i}/new' , 'Forum.TopicController@create' , 'forums.new' );
2016-04-25 04:01:14 +02:00
});
});
2016-03-30 23:30:15 +02:00
2016-04-25 04:01:14 +02:00
// Members
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'members' , 'before' => 'loginCheck' ], function () {
Routerv1 :: get ( '/' , 'UserController@members' , 'members.index' );
Routerv1 :: get ( '/{rank:i}' , 'UserController@members' , 'members.rank' );
2016-04-25 04:01:14 +02:00
});
2016-02-15 22:20:46 +01:00
2016-04-25 04:01:14 +02:00
// User
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'u' ], function () {
Routerv1 :: get ( '/{id}' , 'UserController@profile' , 'user.profile' );
Routerv1 :: get ( '/{id}/report' , 'UserController@report' , 'user.report' );
2016-09-14 00:05:03 +02:00
Routerv1 :: get ( '/{id}/avatar' , 'FileController@avatar' , 'user.avatar' );
Routerv1 :: post ( '/{id}/avatar' , 'FileController@avatar' , 'user.avatar' );
Routerv1 :: delete ( '/{id}/avatar' , 'FileController@avatar' , 'user.avatar' );
Routerv1 :: get ( '/{id}/background' , 'FileController@background' , 'user.background' );
Routerv1 :: post ( '/{id}/background' , 'FileController@background' , 'user.background' );
Routerv1 :: delete ( '/{id}/background' , 'FileController@background' , 'user.background' );
2016-09-11 16:25:22 +02:00
Routerv1 :: get ( '/{id}/header' , 'FileController@header' , 'user.header' );
2016-09-14 00:05:03 +02:00
Routerv1 :: post ( '/{id}/header' , 'FileController@header' , 'user.header' );
Routerv1 :: delete ( '/{id}/header' , 'FileController@header' , 'user.header' );
2016-04-25 04:01:14 +02:00
});
2016-01-30 14:25:18 +01:00
2016-04-25 04:01:14 +02:00
// Notifications
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'notifications' ], function () {
Routerv1 :: get ( '/' , 'NotificationsController@notifications' , 'notifications.get' );
Routerv1 :: get ( '/{id}/mark' , 'NotificationsController@mark' , 'notifications.mark' );
2016-04-25 04:01:14 +02:00
});
2016-02-13 14:36:21 +01:00
2016-04-25 04:01:14 +02:00
// Comments
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'comments' , 'before' => 'loginCheck' ], function () {
Routerv1 :: post ( '/{category:c}/post/{reply:i}?' , 'CommentsController@post' , 'comments.category.post' );
Routerv1 :: post ( '/{id:i}/delete' , 'CommentsController@delete' , 'comments.comment.delete' );
Routerv1 :: post ( '/{id:i}/vote' , 'CommentsController@vote' , 'comments.comment.vote' );
2016-03-25 02:31:57 +01:00
});
2016-04-25 04:01:14 +02:00
// Comments
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'friends' , 'before' => 'loginCheck' ], function () {
Routerv1 :: post ( '/{id:i}/add' , 'FriendsController@add' , 'friends.add' );
Routerv1 :: post ( '/{id:i}/remove' , 'FriendsController@remove' , 'friends.remove' );
2016-04-25 04:01:14 +02:00
});
2016-03-28 03:18:59 +02:00
2016-04-25 04:01:14 +02:00
// Premium
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'support' , 'before' => 'loginCheck' ], function () {
Routerv1 :: get ( '/' , 'PremiumController@index' , 'premium.index' );
Routerv1 :: get ( '/error' , 'PremiumController@error' , 'premium.error' );
Routerv1 :: get ( '/handle' , 'PremiumController@handle' , 'premium.handle' );
Routerv1 :: get ( '/complete' , 'PremiumController@complete' , 'premium.complete' );
Routerv1 :: post ( '/purchase' , 'PremiumController@purchase' , 'premium.purchase' );
2016-03-28 03:18:59 +02:00
});
2016-04-25 04:01:14 +02:00
// Helpers
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'helper' ], function () {
2016-04-25 04:01:14 +02:00
// BBcode
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'bbcode' , 'before' => 'loginCheck' ], function () {
Routerv1 :: post ( '/parse' , 'HelperController@bbcodeParse' , 'helper.bbcode.parse' );
2016-03-28 03:18:59 +02:00
});
});
2016-04-25 04:01:14 +02:00
// Settings
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'settings' , 'before' => 'loginCheck' ], function () {
Routerv1 :: get ( '/' , function () {
$route = Routerv1 :: route ( 'settings.account.profile' );
2016-03-28 03:18:59 +02:00
return header ( " Location: { $route } " );
2016-04-25 04:01:14 +02:00
}, 'settings.index' );
2016-08-02 22:35:12 +02:00
// Account section
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'account' ], function () {
Routerv1 :: get ( '/' , function () {
$route = Routerv1 :: route ( 'settings.account.profile' );
2016-04-25 04:01:14 +02:00
return header ( " Location: { $route } " );
});
2016-09-11 16:25:22 +02:00
Routerv1 :: get ( '/profile' , 'Settings.AccountController@profile' , 'settings.account.profile' );
Routerv1 :: post ( '/profile' , 'Settings.AccountController@profile' , 'settings.account.profile' );
Routerv1 :: get ( '/details' , 'Settings.AccountController@details' , 'settings.account.details' );
Routerv1 :: post ( '/details' , 'Settings.AccountController@details' , 'settings.account.details' );
Routerv1 :: get ( '/ranks' , 'Settings.AccountController@ranks' , 'settings.account.ranks' );
Routerv1 :: post ( '/ranks' , 'Settings.AccountController@ranks' , 'settings.account.ranks' );
2016-09-16 22:18:59 +02:00
Routerv1 :: get ( '/userpage' , 'Settings.AccountController@userpage' , 'settings.account.userpage' );
Routerv1 :: post ( '/userpage' , 'Settings.AccountController@userpage' , 'settings.account.userpage' );
Routerv1 :: get ( '/signature' , 'Settings.AccountController@signature' , 'settings.account.signature' );
Routerv1 :: post ( '/signature' , 'Settings.AccountController@signature' , 'settings.account.signature' );
2016-03-28 03:18:59 +02:00
});
2016-04-25 04:01:14 +02:00
// Friends section
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'friends' ], function () {
Routerv1 :: get ( '/' , function () {
$route = Routerv1 :: route ( 'settings.friends.listing' );
2016-04-25 04:01:14 +02:00
return header ( " Location: { $route } " );
});
2016-03-28 03:18:59 +02:00
2016-09-11 16:25:22 +02:00
Routerv1 :: get ( '/listing' , 'Settings.FriendsController@listing' , 'settings.friends.listing' );
Routerv1 :: get ( '/requests' , 'Settings.FriendsController@requests' , 'settings.friends.requests' );
2016-03-28 03:18:59 +02:00
});
2016-04-25 04:01:14 +02:00
// Notifications section
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'notifications' ], function () {
Routerv1 :: get ( '/' , function () {
$route = Routerv1 :: route ( 'settings.notifications.history' );
2016-04-25 04:01:14 +02:00
return header ( " Location: { $route } " );
});
2016-03-28 03:18:59 +02:00
2016-09-11 16:25:22 +02:00
Routerv1 :: get ( '/history' , 'Settings.NotificationsController@history' , 'settings.notifications.history' );
2016-03-28 03:18:59 +02:00
});
2016-04-25 04:01:14 +02:00
// Advanced section
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'advanced' ], function () {
Routerv1 :: get ( '/' , function () {
$route = Routerv1 :: route ( 'settings.advanced.sessions' );
2016-04-25 04:01:14 +02:00
return header ( " Location: { $route } " );
});
2016-09-11 16:25:22 +02:00
Routerv1 :: get ( '/sessions' , 'Settings.AdvancedController@sessions' , 'settings.advanced.sessions' );
Routerv1 :: post ( '/sessions' , 'Settings.AdvancedController@sessions' , 'settings.advanced.sessions' );
Routerv1 :: get ( '/deactivate' , 'Settings.AdvancedController@deactivate' , 'settings.advanced.deactivate' );
Routerv1 :: post ( '/deactivate' , 'Settings.AdvancedController@deactivate' , 'settings.advanced.deactivate' );
2016-04-25 04:01:14 +02:00
});
2016-03-28 03:18:59 +02:00
});
2016-03-11 20:13:14 +01:00
2016-07-31 21:36:13 +02:00
// Settings
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'manage' , 'before' => 'loginCheck' ], function () {
Routerv1 :: get ( '/' , function () {
$route = Routerv1 :: route ( 'manage.overview.index' );
2016-07-31 21:36:13 +02:00
return header ( " Location: { $route } " );
}, 'manage.index' );
// Overview section
2016-09-11 16:25:22 +02:00
Routerv1 :: group ([ 'prefix' => 'overview' ], function () {
Routerv1 :: get ( '/' , function () {
$route = Routerv1 :: route ( 'manage.overview.index' );
2016-07-31 21:36:13 +02:00
return header ( " Location: { $route } " );
2016-08-02 22:35:12 +02:00
});
2016-07-31 21:36:13 +02:00
2016-09-11 16:25:22 +02:00
Routerv1 :: get ( '/index' , 'Manage.OverviewController@index' , 'manage.overview.index' );
Routerv1 :: get ( '/data' , 'Manage.OverviewController@data' , 'manage.overview.data' );
2016-07-31 21:36:13 +02:00
});
});
2016-02-15 22:20:46 +01:00
// Management
2016-04-25 04:01:14 +02:00
/*
2016-02-15 22:20:46 +01:00
* Forums
* - Manage
* - Settings
* Comments
* - Manage
* Users
* - Manage users
* - Manage ranks
* - Profile fields
* - Option fields
* - Bans and restrictions
* - Warnings
* Permissions
* - Site
* - Management
* - Forum
* Logs
* - Actions
* - Management
* - Errors
*/
2016-04-25 04:01:14 +02:00
});