/** * 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; } } }