public static function run() { // $url = isset($_GET['url']) ? '/' . $_GET['url'] : '/'; //echo $url; if (!Config::get("maintenance.activate") || in_array($url, Config::get("maintenance.outRoutes"))) { for ($i = 0; $i < count(self::$_uri); $i++) { if (strpos(self::$_uri[$i], '{}') !== false) { self::$_uri[$i] = str_replace('{}', '(.*)?', self::$_uri[$i]); } } // $ok = 0; foreach (self::$_uri as $key => $value) { if (preg_match("#^{$value}\$#", $url, $params)) { if (self::$_type[$key] == "post" && Res::isPost()) { array_shift($params); // //before filter // call_user_func(App::$Callbacks['before']); // //new filter // $ok = true; $falseok = null; $oks = array(); // if (is_string(self::$_request[$key])) { if (!empty(self::$_request[$key])) { $call = self::$_filters[self::$_request[$key]]; $ok = call_user_func($call); if (!$ok) { $falseok = self::$_request[$key]; } } } else { if (is_array(self::$_request[$key])) { if (!empty(self::$_request[$key])) { foreach (self::$_request[$key] as $key2 => $value2) { $call = self::$_filters[$value2]; $ok = call_user_func($call); if (!$ok) { $falseok = $value2; break; } } } } } // run the route callback if ($ok) { self::$current = $value; call_user_func_array(self::$_callback[$key], $params); } else { if (isset(self::$_falsecall[$falseok]) && !empty(self::$_falsecall[$falseok])) { $call = self::$_falsecall[$falseok]; $ok = call_user_func($call); } } // //after filter // call_user_func(App::$Callbacks['after']); $ok = 1; break; // // old // array_shift($params); // call_user_func_array(self::$_callback[$key], $params); // $ok=1; } else { if (self::$_type[$key] == "post" && !Res::isPost()) { $ok = 0; } else { if (self::$_type[$key] == "get") { array_shift($params); // //before filter // call_user_func(App::$Callbacks['before']); // //new filter // $ok = true; $falseok = null; $oks = array(); // if (is_string(self::$_request[$key])) { if (!empty(self::$_request[$key])) { $call = self::$_filters[self::$_request[$key]]; $ok = call_user_func($call); if (!$ok) { $falseok = self::$_request[$key]; } } } else { if (is_array(self::$_request[$key])) { if (!empty(self::$_request[$key])) { foreach (self::$_request[$key] as $key2 => $value2) { $call = self::$_filters[$value2]; $ok = call_user_func($call); if (!$ok) { $falseok = $value2; break; } } } } } // run the route callback if ($ok) { self::$current = $value; call_user_func_array(self::$_callback[$key], $params); } else { if (isset(self::$_falsecall[$falseok]) && !empty(self::$_falsecall[$falseok])) { $call = self::$_falsecall[$falseok]; $ok = call_user_func($call); } } // //after filter // call_user_func(App::$Callbacks['after']); $ok = 1; break; } } } } } if ($ok == 0) { Errors::r_404(); } } else { if (Config::get("maintenance.maintenanceEvent") == "string") { echo Config::get("maintenance.maintenanceResponse"); } else { if (Config::get("maintenance.maintenanceEvent") == "link") { Url::redirect(Config::get("maintenance.maintenanceResponse")); } } } }
protected static function runRoute($request, $params) { self::$current = $request["name"]; return call_user_func_array($request["callback"], $params); }