/** * Lokalizuje command, za predpokladu, ze preklad existuje. * * @param string $link * @return string */ public static function build($link, $isStatic = FALSE) { if (FALSE === $isStatic) { // Nactem si lokalizovane linky a jejich matchovaci protejsky $linkCreator = new Lib_LinkCreator(); // @todo logovat ktere linky se na dane pageId pouzivaji a cechovat to // at se neprovadi tento proces neustale dokola. $linkCreator->load(); foreach ($linkCreator->getLinkPatterns() as $pattern) { if (0 < preg_match('@' . $pattern['pattern'] . '@i', $link, $matches)) { array_shift($matches); return self::getWebRoot() . Lib_Tools::mergeCommand($pattern['localize'], $matches); } } return 'Link neni lokalizovan'; } else { return self::getWebRoot() . $link; } }
/** * Pokud se jedna o dynamickou routu nastavi ji a vrati TRUE. * * @return boolean */ private function checkDynamicRoute() { $dynamicRoute = new Bobr_Request_DynamicRoute($this->lang); $uri = Bobr_Request_HttpRequest::uri(); foreach ($dynamicRoute->items as $route) { // Pokud se to projde regularem mame lokalizovanou dinamickou routu. // Routa se ale jeste musi projet command validatorem. Jestli na ni ma user pravo. if (0 < preg_match('@' . $route->command . '@', $uri, $matches)) { $commandValidator = new Bobr_CommandValidator(); $command = $commandValidator->getCommand($route->moduleFunctionId); // Pokud by byl command null znamenalo by to, ze uzivatel nema pravo na dany command. if (NULL !== $command) { // Zjistime jestli jsme na spravne webInstanci $webInstanceValidator = new Bobr_WebInstanceValidator(); if (FALSE === $webInstanceValidator->isCurrent($route->getWebInstanceId())) { var_dump($webInstanceValidator->isCurrent($route->getWebInstanceId())); Lib_Messanger::addNote('Url byla zadana chybne, presvedcte se zda-li jste na spravne strance.'); Bobr_Request_HttpRequest::redirect($this->webRoot); } // Pokud se uri neshoduje je v ni neco navic if ($uri !== $matches[0]) { Lib_Messanger::addNote('Url byla zadana chybne, presvedcte se zda-li jste na spravne strance.'); Bobr_Request_HttpRequest::redirect($this->webRoot . $matches[0]); } // Odstranime prvni polozku z pole, ta nas nezajima. array_shift($matches); // Mergneme lokalizovany command za vychozi. $command = Lib_Tools::mergeCommand($command, $matches); // A nastavime hodnoty pro dalsi praci. $this->setCommand($command); $this->setPageId($route->pageId); return TRUE; } else { Lib_Messanger::addNote('Nemate pravo na pristup na tuto stranku.'); Bobr_Request_HttpRequest::redirect($this->webRoot); return FALSE; } } } return FALSE; }