$layout = array( 'controller'=>null, 'view'=>null, 'template'=>'index.php', 'slug'=>null, 'plugin'=>false, 'parameters'=>null, 'title'=>'Bludit' ); // Get from the URL the controller and view $explodeSlug = $url->explodeSlug(); $layout['controller'] = $layout['view'] = $layout['slug'] = empty($explodeSlug[0])?'dashboard':$explodeSlug[0]; unset($explodeSlug[0]); // Check if the user want to get access to an admin controller or view from a plugin // To get access to a plugin controller or view the URL should be: http://localhost/admin/plugin/ // $explodeSlug = [0=>''] if ($layout['controller'] === 'plugin' && !empty($explodeSlug)) { // Lowercase plugins class name to search by case-insensitive $pluginsLowerCases = array_change_key_case($pluginsInstalled); $pluginName = Text::lowercase(array_shift($explodeSlug)); if (isset($pluginsLowerCases[$pluginName])) { $layout['plugin'] = $pluginsLowerCases[$pluginName]; } } // Get the URL parameters $layout['parameters'] = implode('/', $explodeSlug); // --- AJAX --- if ($layout['slug']==='ajax') { if ($login->isLogged()) { // Rules: Security check CSRF include(PATH_RULES.'99.security.php'); // Load the ajax file if (Sanitize::pathFile(PATH_AJAX.$layout['parameters'].'.php')) { include(PATH_AJAX.$layout['parameters'].'.php'); } } header('HTTP/1.1 401 User not logged.'); exit(0); } // Boot rules include(PATH_RULES.'69.pages.php'); include(PATH_RULES.'99.header.php'); include(PATH_RULES.'99.paginator.php'); include(PATH_RULES.'99.themes.php'); include(PATH_RULES.'99.security.php'); // Define layout login-form for: // - User not logged // - Page not found // - Slug is login. http://localhost/admin/login if ($url->notFound() || !$login->isLogged() || ($url->slug()==='login') ) { $layout['controller'] = 'login'; $layout['view'] = 'login'; $layout['template'] = 'login.php'; // Generate the tokenCSRF for the user not logged, when the user log-in the token will change $security->generateTokenCSRF(); } // Define global variables $ADMIN_CONTROLLER = $layout['controller']; $ADMIN_VIEW = $layout['view']; // Execute plugins before load the admin area execPluginsByHook('beforeAdminLoad'); // Load init.php if the theme has one 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')) { include(PATH_ADMIN_CONTROLLERS.$layout['controller'].'.php'); } elseif ($layout['plugin'] && method_exists($layout['plugin'], 'adminController')) { $layout['plugin']->adminController(); } // Load view and theme if (Sanitize::pathFile(PATH_ADMIN_THEMES.$site->adminTheme().DS.$layout['template'])) { include(PATH_ADMIN_THEMES.$site->adminTheme().DS.$layout['template']); } // Execute plugins after the admin area is loaded execPluginsByHook('afterAdminLoad');