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