static function boot() { self::$url_app_map = (array) (require ROOT_DIR . '/config/mapper.php'); self::$url_app_map['/setup'] = 'setup'; if (get_magic_quotes_gpc()) { self::strip_magic_quotes($_GET); self::strip_magic_quotes($_POST); } $pathinfo = self::request()->get_path_info(); $jump = false; if (isset($pathinfo[1])) { if ($p = strpos($pathinfo, '/', 2)) { $part = substr($pathinfo, 0, $p); } else { $part = $pathinfo; $jump = true; } } else { $part = '/'; } if ($part == '/api') { cachemgr::init(); return kernel::single('base_rpc_service')->process($pathinfo); } elseif ($part == '/app-doc') { cachemgr::init(); return kernel::single('base_misc_doc')->display($pathinfo); } if (isset(self::$url_app_map[$part])) { if ($jump) { $request_uri = self::request()->get_request_uri(); $urlinfo = parse_url($request_uri); $query = $urlinfo['query'] ? '?' . $urlinfo['query'] : ''; header('Location: ' . $urlinfo['path'] . '/' . $query); exit; } else { $app = self::$url_app_map[$part]; $prefix_len = strlen($part) + 1; } } else { $app = self::$url_app_map['/']; $prefix_len = 1; } if (!$app) { readfile(ROOT_DIR . '/app/base/readme.html'); exit; } if (!self::is_online()) { if (file_exists(APP_DIR . '/setup/app.xml')) { if ($app != 'setup') { header('Location: ' . app::get('setup')->base_url()); exit; } } else { echo '<h1>System is Offline, install please.</h1>'; exit; } } else { require ROOT_DIR . '/config/config.php'; } date_default_timezone_set(defined('DEFAULT_TIMEZONE') ? 'Etc/GMT' . (DEFAULT_TIMEZONE >= 0 ? DEFAULT_TIMEZONE * -1 : '+' . DEFAULT_TIMEZONE * -1) : 'UTC'); @(include APP_DIR . '/base/defined.php'); if (isset($pathinfo[$prefix_len])) { $path = substr($pathinfo, $prefix_len); } else { $path = ''; } //init cachemgr if ($app == 'setup') { cachemgr::init(false); } else { cachemgr::init(); } //get app router self::$__router = app::get($app)->router(); self::$__router->dispatch($path); }
static function boot() { set_error_handler(array('kernel', 'exception_error_handler')); try { if (!self::register_autoload()) { require dirname(__FILE__) . '/autoload.php'; } require ROOT_DIR . '/config/mapper.php'; if (self::is_online()) { require ROOT_DIR . '/config/config.php'; } @(include APP_DIR . '/base/defined.php'); date_default_timezone_set(defined('DEFAULT_TIMEZONE') ? 'Etc/GMT' . (DEFAULT_TIMEZONE >= 0 ? DEFAULT_TIMEZONE * -1 : '+' . DEFAULT_TIMEZONE * -1) : 'UTC'); self::$url_app_map = $urlmap; foreach (self::$url_app_map as $flag => $value) { self::$app_url_map[$value['app']] = $flag; } if (get_magic_quotes_gpc()) { self::strip_magic_quotes($_GET); self::strip_magic_quotes($_POST); } $pathinfo = self::request()->get_path_info(); $jump = false; if (isset($pathinfo[1])) { if ($p = strpos($pathinfo, '/', 2)) { $part = substr($pathinfo, 0, $p); } else { $part = $pathinfo; $jump = true; } } else { $part = '/'; } if ($part == '/api') { return kernel::single('base_rpc_service')->process($pathinfo); } elseif ($part == '/openapi') { return kernel::single('base_rpc_service')->process($pathinfo); } elseif ($part == '/app-doc') { //cachemgr::init(); return kernel::single('base_misc_doc')->display($pathinfo); } if (isset(self::$url_app_map[$part])) { if ($jump) { $request_uri = self::request()->get_request_uri(); $urlinfo = parse_url($request_uri); $query = $urlinfo['query'] ? '?' . $urlinfo['query'] : ''; header('Location: ' . $urlinfo['path'] . '/' . $query); exit; } else { $app = self::$url_app_map[$part]['app']; $prefix_len = strlen($part) + 1; kernel::set_lang(self::$url_app_map[$part]['lang']); } } else { $app = self::$url_app_map['/']['app']; $prefix_len = 1; kernel::set_lang(self::$url_app_map['/']['lang']); } if (!$app) { readfile(ROOT_DIR . '/app/base/readme.html'); exit; } if (!self::is_online()) { if (file_exists(APP_DIR . '/setup/app.xml')) { if ($app != 'setup') { //todo:进入安装check setcookie('LOCAL_SETUP_URL', app::get('setup')->base_url(1), 0, '/'); header('Location: ' . kernel::base_url() . '/app/setup/check.php'); exit; } } else { echo '<h1>System is Offline, install please.</h1>'; exit; } } // 检查是否手机端 if (base_mobiledetect::is_mobile()) { base_mobiledetect::select_terminator($part, $_GET['ignore_ua_check'], self::$url_app_map); } if (isset($pathinfo[$prefix_len])) { $path = substr($pathinfo, $prefix_len); } else { $path = ''; } //init cachemgr if ($app == 'setup') { cachemgr::init(false); } else { cachemgr::init(); cacheobject::init(); } //get app router self::$__router = app::get($app)->router(); self::$__router->dispatch($path); } catch (Exception $e) { base_errorpage::exception_handler($e); } }