Exemplo n.º 1
0
 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"));
             }
         }
     }
 }
Exemplo n.º 2
0
 protected static function runRoute($request, $params)
 {
     self::$current = $request["name"];
     return call_user_func_array($request["callback"], $params);
 }