function url($url = null) { if (is_null($url)) { if (isset($this->cachedUrl)) { return $this->cachedUrl; } if (is_callable($url = $this->url)) { $url = $url(); } if (isset($url) && $this->parent && ($url === '' || $url[0] != '/') && !preg_match('/^\\w+:/', $url)) { $base = $this->parent->url(); $url = exists($base) ? exists($url) ? "{$base}/{$url}" : $base : $url; } else { if ($url && $url[0] == '/') { $url = $this->getRequest()->getAttribute('baseUri') . $url; } } $this->url = $url; if (exists($url)) { $url = $this->evaluateUrl($url); } return $this->cachedUrl = $url; } //else DO NOT CACHE IT YET! $this->url = $url; return $this; }
private function linkIsActive(NavigationLinkInterface $link, $url) { $linkUrl = $link->url(); if ($linkUrl === $url) { return true; } foreach ($link->links() as $sub) { if ($this->linkIsActive($sub, $url)) { return true; } } return false; }