/**
  * 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;
 }
示例#2
0
 /**
  * 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];
     }
 }
示例#3
0
 /**
  * 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;
     }
 }
示例#4
0
 /**
  * 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;
     }
 }
示例#5
0
 /**
  * Prida k identifikatoru cache informaci o webinstanci
  *
  * @param string $cacheId
  * @return string
  */
 private static function getCacheId($cacheId)
 {
     return Lib_Tools::getWebInstance() . '/' . $cacheId;
 }
示例#6
0
 /**
  * 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;
 }
示例#7
0
 /**
  * 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;
 }