Exemplo n.º 1
0
 /**
  * Find a matching route.
  *
  * @param array $routesByCondition
  * @param Request $request
  * @return null|\Themosis\Route\Route
  */
 protected function check(array $routesByCondition, Request $request)
 {
     foreach ($routesByCondition as $routes) {
         foreach ($routes as $route) {
             if (call_user_func($route->condition(), $route->getParams())) {
                 // Check if a template is associated and compare it to current route condition.
                 if ($this->hasTemplate() && 'themosis_is_template' !== $route->condition()) {
                     continue;
                 }
                 // Check if http only.
                 if ($route->httpOnly()) {
                     if ($request->isSecure()) {
                         continue;
                     }
                 }
                 // Check if https only.
                 if ($route->httpsOnly()) {
                     if (!$request->isSecure()) {
                         continue;
                     }
                 }
                 return $route;
             }
         }
     }
     return null;
 }