Esempio n. 1
0
 /**
  * Analise a url comparando se existe uma roda cadastrada. retorna um
  * Request tratado
  * @param \S9\Pattern\Request $oRequest
  * @return \S9\Pattern\Request tratado
  */
 public function analyzer(Request $oRequest)
 {
     $URI = $oRequest->getURI();
     $route = $this->get($URI);
     #Não é uma Route válido
     if (!$route) {
         $controller = implode("\\", array($oRequest->getItem("MODULE"), "Controller", array_shift(array_reverse(explode("\\", $oRequest->getItem("CONTROLLER"))))));
         if (!class_exists($controller)) {
             $oRequest->setItem("MODULE", "Padrao");
             $oRequest->setItem("CONTROLLER", "Padrao\\Controller\\Error");
             $oRequest->setItem("ACTION", "error404");
             return $oRequest;
         } else {
             $oRequest->setItem("CONTROLLER", $controller);
         }
         if (!$oRequest->getItem("ACTION")) {
             $oRequest->setItem("ACTION", "index");
         }
         return $oRequest;
     } else {
         $controller = implode("\\", array($route["MODULE"], "Controller", $route["CONTROLLER"]));
         if (!class_exists($controller)) {
             $oRequest->setItem("MODULE", "Padrao");
             $oRequest->setItem("CONTROLLER", "Padrao\\Controller\\Error");
             $oRequest->setItem("ACTION", "error404");
             return $oRequest;
         } else {
             $oRequest->setItem("MODULE", $route["MODULE"]);
             $oRequest->setItem("CONTROLLER", $controller);
             $oRequest->setItem("ACTION", $route["ACTION"]);
             if (isset($route["PARAMS"])) {
                 $route["PARAMS"] = unserialize($route["PARAMS"]);
                 foreach ($route["PARAMS"] as $key => $value) {
                     $oRequest->setParam($key, $value);
                 }
             }
             if (isset($route["PERMISSION"])) {
                 $route["PERMISSION"] = unserialize($route["PERMISSION"]);
                 $oRequest->setItem("PERMISSION", $route["PERMISSION"]);
             }
             return $oRequest;
         }
     }
 }