tokenProvided()) { unset($_GET['flush']); } else { $chain->setSuppression(false); } /** * Include Sapphire's core code */ require_once("core/Core.php"); if (function_exists('mb_http_output')) { mb_http_output('UTF-8'); mb_internal_encoding('UTF-8'); } Session::start(); if (isset($_GET['debug_profile'])) { Profiler::init(); Profiler::mark('all_execution'); Profiler::mark('main.php init'); } // Connect to database require_once("core/model/DB.php"); global $databaseConfig; if (isset($_GET['debug_profile'])) Profiler::mark('DB::connect'); if ($databaseConfig) DB::connect($databaseConfig); if (isset($_GET['debug_profile'])) Profiler::unmark('DB::connect'); if ($token->parameterProvided() && !$token->tokenProvided()) { // First, check if we're in dev mode, or the database doesn't have any security data $canFlush = Director::isDev() || !Security::database_is_ready(); // Otherwise, we start up the session if needed, then check for admin if (!$canFlush) { if(!isset($_SESSION) && (isset($_COOKIE[session_name()]) || isset($_REQUEST[session_name()]))) { Session::start(); } if (Permission::check('ADMIN')) { $canFlush = true; } else { $loginPage = Director::absoluteURL('Security/login'); $loginPage .= "?BackURL=" . urlencode($_SERVER['REQUEST_URI']); header('location: '.$loginPage, true, 302); die; } } // And if we can flush, reload with an authority token if ($canFlush) $token->reloadWithToken(); } } function silverstripe_main_flushOnError() { global $token; if ($token->parameterProvided() && !$token->tokenProvided()) { $token->reloadWithToken(); } } $chain ->then('silverstripe_main') ->thenIfErrored('silverstripe_main_flushOnError') ->execute(); // Redirect to the installer if no database is selected if(!isset($databaseConfig) || !isset($databaseConfig['database']) || !$databaseConfig['database']) { $s = (isset($_SERVER['SSL']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off')) ? 's' : ''; $installURL = "http$s://" . $_SERVER['HTTP_HOST'] . BASE_URL . '/install.php'; // The above dirname() will equate to "\" on Windows when installing directly from http://localhost (not using // a sub-directory), this really messes things up in some browsers. Let's get rid of the backslashes $installURL = str_replace('\\', '', $installURL); header("Location: $installURL"); die(); } if (isset($_GET['debug_profile'])) Profiler::unmark('main.php init'); // Direct away - this is the "main" function, that hands control to the appropriate controller Director::direct($url); if (isset($_GET['debug_profile'])) { Profiler::unmark('all_execution'); if(!Director::isLive()) { Profiler::show(isset($_GET['profile_trace'])); } }