From 2e33afda0cb47534ecbbd2a40a0970e038a7bff0 Mon Sep 17 00:00:00 2001 From: Diego Najar Date: Tue, 11 Sep 2018 23:37:45 +0200 Subject: [PATCH] New rule for routing URLs --- bl-kernel/boot/admin.php | 16 ++++++---------- bl-kernel/boot/init.php | 2 +- bl-kernel/boot/rules/60.router.php | 15 +++++++++++++++ bl-kernel/boot/rules/69.pages.php | 7 ------- bl-kernel/boot/site.php | 8 +------- bl-kernel/helpers/redirect.class.php | 6 +++--- bl-kernel/site.class.php | 2 +- 7 files changed, 27 insertions(+), 29 deletions(-) create mode 100644 bl-kernel/boot/rules/60.router.php diff --git a/bl-kernel/boot/admin.php b/bl-kernel/boot/admin.php index a3c9c48b..0b494b0f 100644 --- a/bl-kernel/boot/admin.php +++ b/bl-kernel/boot/admin.php @@ -6,7 +6,7 @@ if (Session::started()===false) { exit('Bludit CMS. Session initialization failure.'); } -$login = $Login = new Login(); +$login = new Login(); $layout = array( 'controller'=>null, @@ -52,6 +52,7 @@ if ($layout['slug']==='ajax') { else { // Boot rules + include(PATH_RULES.'60.router.php'); include(PATH_RULES.'69.pages.php'); include(PATH_RULES.'99.header.php'); include(PATH_RULES.'99.paginator.php'); @@ -62,16 +63,11 @@ else // User not logged. // Slug is login. // Slug is login-email. - if($url->notFound() || !$login->isLogged() || ($url->slug()==='login') || ($url->slug()==='login-email') ) { + if ($url->notFound() || !$login->isLogged() || ($url->slug()==='login') ) { $layout['controller'] = 'login'; $layout['view'] = 'login'; $layout['template'] = 'login.php'; - if ($url->slug()==='login-email') { - $layout['controller'] = 'login-email'; - $layout['view'] = 'login-email'; - } - // Generate the tokenCSRF for the user not logged, when the user log-in the token will be change. $security->generateTokenCSRF(); } @@ -84,17 +80,17 @@ else Theme::plugins('beforeAdminLoad'); // Load init.php if the theme has one. - if( Sanitize::pathFile(PATH_ADMIN_THEMES, $site->adminTheme().DS.'init.php') ) { + if (Sanitize::pathFile(PATH_ADMIN_THEMES, $site->adminTheme().DS.'init.php')) { include(PATH_ADMIN_THEMES.$site->adminTheme().DS.'init.php'); } // Load controller. - if( Sanitize::pathFile(PATH_ADMIN_CONTROLLERS, $layout['controller'].'.php') ) { + if (Sanitize::pathFile(PATH_ADMIN_CONTROLLERS, $layout['controller'].'.php')) { include(PATH_ADMIN_CONTROLLERS.$layout['controller'].'.php'); } // Load view and theme. - if( Sanitize::pathFile(PATH_ADMIN_THEMES, $site->adminTheme().DS.$layout['template']) ) { + if (Sanitize::pathFile(PATH_ADMIN_THEMES, $site->adminTheme().DS.$layout['template'])) { include(PATH_ADMIN_THEMES.$site->adminTheme().DS.$layout['template']); } diff --git a/bl-kernel/boot/init.php b/bl-kernel/boot/init.php index 9333a3fa..56bad359 100644 --- a/bl-kernel/boot/init.php +++ b/bl-kernel/boot/init.php @@ -227,7 +227,7 @@ define('DOMAIN_UPLOADS_THUMBNAILS', DOMAIN.HTML_PATH_UPLOADS_THUMBNAILS); define('DOMAIN_PLUGINS', DOMAIN.HTML_PATH_PLUGINS); define('DOMAIN_CONTENT', DOMAIN.HTML_PATH_CONTENT); -define('DOMAIN_ADMIN', DOMAIN_BASE.ADMIN_URI_FILTER); +define('DOMAIN_ADMIN', DOMAIN_BASE.ADMIN_URI_FILTER.'/'); define('DOMAIN_TAGS', Text::addSlashes(DOMAIN_BASE.TAG_URI_FILTER, false, true)); define('DOMAIN_CATEGORIES', Text::addSlashes(DOMAIN_BASE.CATEGORY_URI_FILTER, false, true)); diff --git a/bl-kernel/boot/rules/60.router.php b/bl-kernel/boot/rules/60.router.php new file mode 100644 index 00000000..7ac8024d --- /dev/null +++ b/bl-kernel/boot/rules/60.router.php @@ -0,0 +1,15 @@ +uri()=='/'.ADMIN_URI_FILTER) { + Redirect::url(DOMAIN_ADMIN); +} + +// Redirect pages, from /my-page/ to /my-page +if ($url->whereAmI()=='page' && !$url->notFound()) { + $pageKey = $url->slug(); + if (Text::endsWith($pageKey, '/')) { + $pageKey = rtrim($pageKey, '/'); + Redirect::url(DOMAIN_PAGES.$pageKey); + } +} diff --git a/bl-kernel/boot/rules/69.pages.php b/bl-kernel/boot/rules/69.pages.php index 63b8f14e..d802c767 100644 --- a/bl-kernel/boot/rules/69.pages.php +++ b/bl-kernel/boot/rules/69.pages.php @@ -58,13 +58,6 @@ if ($site->homepage() && $url->whereAmI()==='home') { // Build specific page if ($url->whereAmI()==='page') { - // If the page ends with slash redirect to the correct url - $pageKey = $url->slug(); - if (Text::endsWith($pageKey, '/')) { - $pageKey = rtrim($pageKey, '/'); - Redirect::url(DOMAIN_PAGES.$pageKey); - } - $content[0] = $page = buildThePage(); } // Build content by tag diff --git a/bl-kernel/boot/site.php b/bl-kernel/boot/site.php index 424ec3ee..5616c768 100644 --- a/bl-kernel/boot/site.php +++ b/bl-kernel/boot/site.php @@ -1,12 +1,5 @@ '); + exit(''); } public static function page($page) { - self::url(HTML_PATH_ROOT.ADMIN_URI_FILTER.'/'.$page); + self::url(HTML_PATH_ADMIN_ROOT.$page); } public static function home() diff --git a/bl-kernel/site.class.php b/bl-kernel/site.class.php index fd785eff..04efa384 100644 --- a/bl-kernel/site.class.php +++ b/bl-kernel/site.class.php @@ -76,7 +76,7 @@ class Site extends dbJSON { // Also, you can get the a particular filter public function uriFilters($filter='') { - $filters['admin'] = '/' . ADMIN_URI_FILTER . '/'; + $filters['admin'] = '/'.ADMIN_URI_FILTER.'/'; $filters['page'] = $this->getField('uriPage'); $filters['tag'] = $this->getField('uriTag'); $filters['category'] = $this->getField('uriCategory');