Beispiel #1
0
 public static function between($string, $start, $end)
 {
     $a = StringHelper::explode($string, $start);
     if (count($a) >= 2) {
         $a = $a[1];
         $b = StringHelper::explode($a, $end);
         if (count($b) >= 1) {
             return $b[0];
         }
     }
     return "";
 }
Beispiel #2
0
 private function run()
 {
     $url = "/";
     if (isset($_GET["url"])) {
         $url = "/" . $_GET["url"];
     }
     if (!(substr($url, strlen($url) - 1, 1) == "/")) {
         $url .= "/";
     }
     $hit = false;
     foreach ($this->routes as $route) {
         if (preg_match("/" . $route->regex . "/", $url)) {
             if (is_callable($route->result)) {
                 $hit = true;
                 call_user_func($route->result);
                 break;
             }
             if (is_object($route->result)) {
                 if (isset($route->result->filter)) {
                     $filters = StringHelper::explode($route->result->filter, "|");
                     $break = false;
                     foreach ($filters as $filter) {
                         $name = $filter;
                         $params = array();
                         if (strpos($filter, ":")) {
                             $name = substr($filter, 0, strpos($filter, ":", 1));
                             $params = StringHelper::between($filter, "(", ")");
                             $params = explode(",", $params);
                             foreach ($params as $i => $param) {
                                 $params[$i] = StringHelper::between($param, "'", "'");
                             }
                         }
                         if (isset($this->filters[$name])) {
                             if (!call_user_func_array($this->filters[$name], $params)) {
                                 $hit = true;
                                 ErrorHelper::notFound("Filter error (" . $name . ")");
                                 $break = true;
                                 break;
                             }
                         } else {
                             $hit = true;
                             ErrorHelper::notFound("Filter not found");
                             $break = true;
                             break;
                         }
                     }
                     if ($break) {
                         break;
                     }
                 }
                 if (isset($route->result->view)) {
                     if (is_string($route->result->view)) {
                         $parts = explode("::", $route->result->view);
                         if (count($parts) == 2) {
                             $class = $parts[0];
                             $method = $parts[1];
                             if (file_exists(ROOT . "/game/views/" . strtolower($class) . ".php")) {
                                 require_once ROOT . "/game/views/" . strtolower($class) . ".php";
                                 $class .= "View";
                                 $view = new $class();
                                 if (method_exists($view, $method)) {
                                     $hit = true;
                                     $view->{$method}();
                                     break;
                                 }
                             }
                         }
                     }
                     if (is_callable($route->result->view)) {
                         $hit = true;
                         call_user_func($route->result->view);
                         break;
                     }
                 }
                 ErrorHelper::notFound("Page not found.");
             }
         }
     }
     if (!$hit) {
         ErrorHelper::notFound("Page not found.");
     }
 }