MDL-48070 navigation: optimised the login page

The navigation and settings no longer get initialised on the login
page by default, this is achieved by calling to ignore the active
page on the navbar.
It is safe because the login page is not represented in either the
navigation or the settings.

This change saves a few MB or ram and a couple of database queries
This commit is contained in:
Sam Hemelryk
2014-11-06 14:03:38 +13:00
parent c106341098
commit aac8dfa8b6
2 changed files with 14 additions and 9 deletions

View File

@@ -3088,12 +3088,14 @@ class navbar extends navigation_node {
} else if ($this->hasitems !== false) {
return true;
}
$this->page->navigation->initialise($this->page);
$activenodefound = ($this->page->navigation->contains_active_node() ||
$this->page->settingsnav->contains_active_node());
$outcome = (count($this->children) > 0 || count($this->prependchildren) || (!$this->ignoreactive && $activenodefound));
if (count($this->children) > 0 || count($this->prependchildren) > 0) {
// There have been manually added items - there are definitely items.
$outcome = true;
} else if (!$this->ignoreactive) {
// We will need to initialise the navigation structure to check if there are active items.
$this->page->navigation->initialise($this->page);
$outcome = ($this->page->navigation->contains_active_node() || $this->page->settingsnav->contains_active_node());
}
$this->hasitems = $outcome;
return $outcome;
}
@@ -3148,11 +3150,10 @@ class navbar extends navigation_node {
$items = array_reverse($this->children);
}
$navigationactivenode = $this->page->navigation->find_active_node();
$settingsactivenode = $this->page->settingsnav->find_active_node();
// Check if navigation contains the active node
if (!$this->ignoreactive) {
$navigationactivenode = $this->page->navigation->find_active_node();
$settingsactivenode = $this->page->settingsnav->find_active_node();
if ($navigationactivenode && $settingsactivenode) {
// Parse a combined navigation tree