Esempio n. 1
0
 /**
  * Build navbar
  * 
  * Return a navbar element
  * build from the application
  * navbar configuration yaml 
  * files
  * 
  * @param Router $router - the application router service
  * 
  * @return NavBar - the builded navbar
  */
 public function buildNavbar(Router $router)
 {
     $closure = function ($router, $serialize = true) {
         $bundlesNames = $this->bundles->getNames();
         $config = array();
         foreach ($bundlesNames as $name) {
             $bundle = $this->bundles->get($name);
             $configFilePath = $bundle->getPath() . $this->basePath;
             $yaml = new Parser();
             $navbarConfig = $yaml->parse(file_get_contents($configFilePath));
             if (is_array($navbarConfig)) {
                 $config = array_merge($config, $navbarConfig["navbar"]);
             }
         }
         $navBar = new NavBar();
         $navBar->parseArray($config, $router, $this->defaultPosition);
         if ($serialize) {
             return serialize($navBar);
         } else {
             return $navBar;
         }
     };
     if ($this->cacheEnabled) {
         $navbar = unserialize($this->cacheManager->process($this->cacheId . "@navbar", $closure, $router, true));
     } else {
         $navbar = $closure($router, false);
     }
     return $navbar;
 }