2016-01-30 01:18:23 +01:00
< ? php
/*
* Router paths
*/
// Define namespace
namespace Sakura ;
2016-01-30 14:25:18 +01:00
2016-03-26 17:36:58 +01:00
// Check if logged out
Router :: filter ( 'logoutCheck' , function () {
2016-04-02 17:59:45 +02:00
if ( ActiveUser :: $user -> isActive ()) {
2016-03-26 17:36:58 +01:00
$message = " You must be logged out to do that! " ;
2016-04-03 23:29:46 +02:00
Template :: vars ( compact ( 'message' ));
2016-03-26 17:36:58 +01:00
return Template :: render ( 'global/information' );
}
});
// Check if logged in
Router :: filter ( 'loginCheck' , function () {
2016-04-02 17:59:45 +02:00
if ( ! ActiveUser :: $user -> isActive ()) {
2016-03-26 17:36:58 +01:00
$message = " You must be logged in to do that! " ;
2016-04-03 23:29:46 +02:00
Template :: vars ( compact ( 'message' ));
2016-03-26 17:36:58 +01:00
return Template :: render ( 'global/information' );
}
});
2016-04-25 04:01:14 +02:00
// Maintenance check
Router :: filter ( 'maintenance' , function () {
if ( Config :: get ( 'site_closed' )) {
ActiveUser :: $session -> destroy ();
2016-02-05 13:26:31 +01:00
2016-04-25 04:01:14 +02:00
http_response_code ( 503 );
2016-01-30 14:25:18 +01:00
2016-04-25 04:01:14 +02:00
$message = Config :: get ( 'site_closed_reason' );
2016-03-20 17:37:59 +01:00
2016-04-25 04:01:14 +02:00
Template :: vars ( compact ( 'message' ));
2016-03-10 19:54:36 +01:00
2016-04-25 04:01:14 +02:00
return Template :: render ( 'global/maintenance' );
}
});
Router :: group ([ 'before' => 'maintenance' ], function () {
// Meta pages
Router :: get ( '/' , 'MetaController@index' , 'main.index' );
Router :: get ( '/faq' , 'MetaController@faq' , 'main.faq' );
Router :: get ( '/search' , 'MetaController@search' , 'main.search' );
Router :: get ( '/p/{id}' , 'MetaController@infoPage' , 'main.infopage' );
// Auth
Router :: group ([ 'before' => 'logoutCheck' ], function () {
Router :: get ( '/login' , 'AuthController@loginGet' , 'auth.login' );
Router :: post ( '/login' , 'AuthController@loginPost' , 'auth.login' );
Router :: get ( '/register' , 'AuthController@registerGet' , 'auth.register' );
Router :: post ( '/register' , 'AuthController@registerPost' , 'auth.register' );
Router :: get ( '/resetpassword' , 'AuthController@resetPasswordGet' , 'auth.resetpassword' );
Router :: post ( '/resetpassword' , 'AuthController@resetPasswordPost' , 'auth.resetpassword' );
Router :: get ( '/reactivate' , 'AuthController@reactivateGet' , 'auth.reactivate' );
Router :: post ( '/reactivate' , 'AuthController@reactivatePost' , 'auth.reactivate' );
Router :: get ( '/activate' , 'AuthController@activate' , 'auth.activate' );
});
2016-03-28 16:47:43 +02:00
Router :: group ([ 'before' => 'loginCheck' ], function () {
2016-04-25 04:01:14 +02:00
Router :: get ( '/logout' , 'AuthController@logout' , 'auth.logout' );
2016-03-28 16:47:43 +02:00
});
2016-02-04 21:56:40 +01:00
2016-04-25 04:01:14 +02:00
// News
Router :: group ([ 'prefix' => 'news' ], function () {
Router :: get ( '/{category:c}?' , 'NewsController@category' , 'news.category' );
Router :: get ( '/post/{id:i}' , 'NewsController@post' , 'news.post' );
});
2016-02-04 21:56:40 +01:00
2016-04-25 04:01:14 +02:00
// Forum
Router :: group ([ 'prefix' => 'forum' ], function () {
// Post
Router :: group ([ 'prefix' => 'post' ], function () {
Router :: get ( '/{id:i}' , 'ForumController@post' , 'forums.post' );
Router :: group ([ 'before' => 'loginCheck' ], function () {
Router :: get ( '/{id:i}/raw' , 'ForumController@postRaw' , 'forums.post.raw' );
Router :: get ( '/{id:i}/delete' , 'ForumController@deletePost' , 'forums.post.delete' );
Router :: post ( '/{id:i}/delete' , 'ForumController@deletePost' , 'forums.post.delete' );
Router :: post ( '/{id:i}/edit' , 'ForumController@editPost' , 'forums.post.edit' );
});
});
2016-03-28 16:47:43 +02:00
2016-04-25 04:01:14 +02:00
// Thread
Router :: group ([ 'prefix' => 'thread' ], function () {
Router :: get ( '/{id:i}' , 'ForumController@thread' , 'forums.thread' );
Router :: post ( '/{id:i}/mod' , 'ForumController@threadModerate' , 'forums.thread.mod' );
Router :: post ( '/{id:i}/reply' , 'ForumController@threadReply' , 'forums.thread.reply' );
});
2016-03-28 16:47:43 +02:00
2016-04-25 04:01:14 +02:00
// Forum
Router :: get ( '/' , 'ForumController@index' , 'forums.index' );
Router :: get ( '/{id:i}' , 'ForumController@forum' , 'forums.forum' );
Router :: group ([ 'before' => 'loginCheck' ], function () {
Router :: get ( '/{id:i}/mark' , 'ForumController@markForumRead' , 'forums.mark' );
Router :: get ( '/{id:i}/new' , 'ForumController@createThread' , 'forums.new' );
Router :: post ( '/{id:i}/new' , 'ForumController@createThread' , 'forums.new' );
});
});
2016-03-30 23:30:15 +02:00
2016-04-25 04:01:14 +02:00
// Members
Router :: group ([ 'prefix' => 'members' , 'before' => 'loginCheck' ], function () {
Router :: get ( '/' , 'UserController@members' , 'members.index' );
Router :: get ( '/{rank:i}' , 'UserController@members' , 'members.rank' );
});
2016-02-15 22:20:46 +01:00
2016-04-25 04:01:14 +02:00
// User
Router :: group ([ 'prefix' => 'u' ], function () {
Router :: get ( '/{id}' , 'UserController@profile' , 'user.profile' );
Router :: get ( '/{id}/report' , 'UserController@report' , 'user.report' );
Router :: get ( '/{id}/header' , 'FileController@header' , 'user.header' );
});
2016-01-30 14:25:18 +01:00
2016-04-25 04:01:14 +02:00
// Notifications
Router :: group ([ 'prefix' => 'notifications' ], function () {
Router :: get ( '/' , 'NotificationsController@notifications' , 'notifications.get' );
Router :: get ( '/{id}/mark' , 'NotificationsController@mark' , 'notifications.mark' );
});
2016-02-13 14:36:21 +01:00
2016-04-25 04:01:14 +02:00
// Comments
Router :: group ([ 'prefix' => 'comments' , 'before' => 'loginCheck' ], function () {
Router :: post ( '/{category:c}/post/{reply:i}?' , 'CommentsController@post' , 'comments.category.post' );
Router :: post ( '/{id:i}/delete' , 'CommentsController@delete' , 'comments.comment.delete' );
Router :: 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
Router :: group ([ 'prefix' => 'friends' , 'before' => 'loginCheck' ], function () {
Router :: post ( '/{id:i}/add' , 'FriendsController@add' , 'friends.add' );
Router :: post ( '/{id:i}/remove' , 'FriendsController@remove' , 'friends.remove' );
});
2016-03-28 03:18:59 +02:00
2016-04-25 04:01:14 +02:00
// Files
Router :: get ( '/a/{id}' , 'FileController@avatar' , 'file.avatar' );
Router :: get ( '/bg/{id}' , 'FileController@background' , 'file.background' );
2016-03-28 03:18:59 +02:00
2016-04-25 04:01:14 +02:00
// Premium
Router :: group ([ 'prefix' => 'support' , 'before' => 'loginCheck' ], function () {
Router :: get ( '/' , 'PremiumController@index' , 'premium.index' );
Router :: get ( '/handle' , 'PremiumController@handle' , 'premium.handle' );
Router :: get ( '/complete' , 'PremiumController@complete' , 'premium.complete' );
Router :: post ( '/purchase' , 'PremiumController@purchase' , 'premium.purchase' );
2016-03-28 03:18:59 +02:00
});
2016-04-25 04:01:14 +02:00
// Helpers
Router :: group ([ 'prefix' => 'helper' ], function () {
// BBcode
Router :: group ([ 'prefix' => 'bbcode' , 'before' => 'loginCheck' ], function () {
Router :: post ( '/parse' , 'HelperController@bbcodeParse' , 'helper.bbcode.parse' );
2016-03-28 03:18:59 +02:00
});
});
2016-04-25 04:01:14 +02:00
// Settings
Router :: group ([ 'prefix' => 'settings' , 'before' => 'loginCheck' ], function () {
2016-03-28 03:18:59 +02:00
Router :: get ( '/' , function () {
2016-04-25 04:01:14 +02:00
$route = Router :: route ( 'settings.general.home' );
2016-03-28 03:18:59 +02:00
return header ( " Location: { $route } " );
2016-04-25 04:01:14 +02:00
}, 'settings.index' );
// General section
Router :: group ([ 'prefix' => 'general' ], function () {
Router :: get ( '/' , function () {
$route = Router :: route ( 'settings.general.home' );
return header ( " Location: { $route } " );
});
Router :: get ( '/home' , 'Settings.GeneralController@home' , 'settings.general.home' );
Router :: get ( '/profile' , 'Settings.GeneralController@profile' , 'settings.general.profile' );
Router :: post ( '/profile' , 'Settings.GeneralController@profile' , 'settings.general.profile' );
Router :: get ( '/options' , 'Settings.GeneralController@options' , 'settings.general.options' );
Router :: post ( '/options' , 'Settings.GeneralController@options' , 'settings.general.options' );
2016-03-28 03:18:59 +02:00
});
2016-04-25 04:01:14 +02:00
// Friends section
Router :: group ([ 'prefix' => 'friends' ], function () {
Router :: get ( '/' , function () {
$route = Router :: route ( 'settings.friends.listing' );
return header ( " Location: { $route } " );
});
2016-03-28 03:18:59 +02:00
2016-04-25 04:01:14 +02:00
Router :: get ( '/listing' , 'Settings.FriendsController@listing' , 'settings.friends.listing' );
Router :: get ( '/requests' , 'Settings.FriendsController@requests' , 'settings.friends.requests' );
2016-03-28 03:18:59 +02:00
});
2016-04-25 04:01:14 +02:00
// Groups section
Router :: group ([ 'prefix' => 'groups' ], function () {
Router :: get ( '/' , function () {
$route = Router :: route ( 'settings.groups.listing' );
return header ( " Location: { $route } " );
});
2016-03-28 03:18:59 +02:00
2016-04-25 04:01:14 +02:00
Router :: get ( '/listing' , 'Settings.GroupsController@listing' , 'settings.groups.listing' );
Router :: get ( '/invites' , 'Settings.GroupsController@invites' , 'settings.groups.invites' );
2016-03-28 03:18:59 +02:00
});
2016-04-25 04:01:14 +02:00
// Notifications section
Router :: group ([ 'prefix' => 'notifications' ], function () {
Router :: get ( '/' , function () {
$route = Router :: route ( 'settings.notifications.history' );
return header ( " Location: { $route } " );
});
2016-03-28 03:18:59 +02:00
2016-04-25 04:01:14 +02:00
Router :: get ( '/history' , 'Settings.NotificationsController@history' , 'settings.notifications.history' );
2016-03-28 03:18:59 +02:00
});
2016-04-25 04:01:14 +02:00
// Appearance section
Router :: group ([ 'prefix' => 'appearance' ], function () {
Router :: get ( '/' , function () {
$route = Router :: route ( 'settings.appearance.avatar' );
return header ( " Location: { $route } " );
});
Router :: get ( '/avatar' , 'Settings.AppearanceController@avatar' , 'settings.appearance.avatar' );
Router :: post ( '/avatar' , 'Settings.AppearanceController@avatar' , 'settings.appearance.avatar' );
Router :: get ( '/background' , 'Settings.AppearanceController@background' , 'settings.appearance.background' );
Router :: post ( '/background' , 'Settings.AppearanceController@background' , 'settings.appearance.background' );
Router :: get ( '/header' , 'Settings.AppearanceController@header' , 'settings.appearance.header' );
Router :: post ( '/header' , 'Settings.AppearanceController@header' , 'settings.appearance.header' );
Router :: get ( '/userpage' , 'Settings.AppearanceController@userpage' , 'settings.appearance.userpage' );
Router :: post ( '/userpage' , 'Settings.AppearanceController@userpage' , 'settings.appearance.userpage' );
Router :: get ( '/signature' , 'Settings.AppearanceController@signature' , 'settings.appearance.signature' );
Router :: post ( '/signature' , 'Settings.AppearanceController@signature' , 'settings.appearance.signature' );
});
2016-03-28 03:18:59 +02:00
2016-04-25 04:01:14 +02:00
// Account section
Router :: group ([ 'prefix' => 'account' ], function () {
Router :: get ( '/' , function () {
$route = Router :: route ( 'settings.account.email' );
return header ( " Location: { $route } " );
});
Router :: get ( '/email' , 'Settings.AccountController@email' , 'settings.account.email' );
Router :: post ( '/email' , 'Settings.AccountController@email' , 'settings.account.email' );
Router :: get ( '/username' , 'Settings.AccountController@username' , 'settings.account.username' );
Router :: post ( '/username' , 'Settings.AccountController@username' , 'settings.account.username' );
Router :: get ( '/title' , 'Settings.AccountController@title' , 'settings.account.title' );
Router :: post ( '/title' , 'Settings.AccountController@title' , 'settings.account.title' );
Router :: get ( '/password' , 'Settings.AccountController@password' , 'settings.account.password' );
Router :: post ( '/password' , 'Settings.AccountController@password' , 'settings.account.password' );
Router :: get ( '/ranks' , 'Settings.AccountController@ranks' , 'settings.account.ranks' );
Router :: post ( '/ranks' , 'Settings.AccountController@ranks' , 'settings.account.ranks' );
2016-03-28 03:18:59 +02:00
});
2016-04-25 04:01:14 +02:00
// Advanced section
Router :: group ([ 'prefix' => 'advanced' ], function () {
Router :: get ( '/' , function () {
$route = Router :: route ( 'settings.advanced.sessions' );
return header ( " Location: { $route } " );
});
Router :: get ( '/sessions' , 'Settings.AdvancedController@sessions' , 'settings.advanced.sessions' );
Router :: post ( '/sessions' , 'Settings.AdvancedController@sessions' , 'settings.advanced.sessions' );
Router :: get ( '/deactivate' , 'Settings.AdvancedController@deactivate' , 'settings.advanced.deactivate' );
Router :: post ( '/deactivate' , 'Settings.AdvancedController@deactivate' , 'settings.advanced.deactivate' );
});
2016-03-28 03:18:59 +02:00
});
2016-03-11 20:13:14 +01: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
* General
* - Dashboard
* - Info pages ( possibly deprecate with wiki )
* Configuration
* - General
* - Files
* - User
* - Mail
* 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
});