/** * Zjisti jestli se jedna o konkretni spustenou webInstanci * * @param mixed $webInstance * @return boolean */ public function isCurrent($webInstance) { if (is_integer($webInstance) && Lib_Tools::getWebInstance() === $this->webInstanceList[$webInstance]) { return TRUE; } elseif (is_string($webInstance) && Lib_Tools::getWebInstance() === $webInstance) { return TRUE; } return FALSE; }
/** * Pokud konfigurator existuje v lokalnim configu vrati ho. * Pokud neexistuje zavola config spustene web instance a pokusi se ho najit tam. * (Pokud webInstancovy config v sobe nenajde hledany konfigurator, podiva se do defaultniho configu, * pokud ani tam nebude vyhodi se neodchycena vyjimka) * * @param string $name * @return mixed */ public function offsetGet($name) { // Zvetsime pismena. $value = strtoupper($name); // Zjistime jestli konfigurator existuje. if (isset($this->settings[$value])) { return $this->settings[$value]; } else { // Konfigurator neexistuje, zavolame si webInstancovy config $configName = Lib_Tools::getWebInstance() . 'Config'; $instanceConfig = new $configName(); return $instanceConfig[$name]; } }
/** * Vyrizne ze script name nazev * @todo provadet kontrolu oproti databazovym webInstancim jestli vubec takova existuje * * @return string $matches[1] vrati nazev scriptu oriznute o php * @throws Exception */ public static function getWebInstance() { if (empty(self::$bootWebInstance)) { preg_match("/(\\w*)\\.php/", $_SERVER['SCRIPT_NAME'], $matches); if (isset($matches[1])) { self::$bootWebInstance = $matches[1]; return self::$bootWebInstance; } else { throw new Exception("Nelze identifikovat spoustejici script."); } } else { return self::$bootWebInstance; } }
/** * 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; } }
/** * Prida k identifikatoru cache informaci o webinstanci * * @param string $cacheId * @return string */ private static function getCacheId($cacheId) { return Lib_Tools::getWebInstance() . '/' . $cacheId; }
/** * 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; }
/** * Zvaliduje session a nastavi uzivatele. * * @return Bobr */ private function setUser() { // Zvalidujem platnost Session new Bobr_SessionValidator(); $validator = new Bobr_User_UserValidator(); // Zvalidujem uzivatele v session if (FALSE === $validator->validate()) { // Uzivatel nebyl validni nastavime anonymouse $user = Bobr_Session::getInstance()->user = new Bobr_User_User(2); echo '<p>Nastavil jsem <b>' . $user->nick . '</b>.</p>'; } else { $user = Bobr_Session::getInstance()->user; echo '<p>Uzivatel <b>' . $user->nick . '</b> mel j*z vytvorenou session.</p>'; } $user = Bobr_Session::getInstance()->user; $webInstanceValidatdor = new Bobr_WebInstanceValidator(); if (TRUE === $webInstanceValidatdor->validate(Lib_Tools::getWebInstance())) { echo '<p>Uzivatel ma pristup na tuto web instanci</p>'; } else { Lib_Messanger::addError('Nemate pristup na tuto stranku.'); //@todo tato hlaska se pri presmerovani vymaze!! Bobr_Request_HttpRequest::redirect('/'); } return $this; }