private function _buildNav($nodes, $parentId = 0, $level = 1)
{
// Do we have a maximum level?
if ($this->_parseEnvironment) {
$maxLevel = $this->_getParam('maxLevel', false);
if ($maxLevel !== false && $level > $maxLevel) {
return false;
}
}
$nav = array();
foreach ($nodes as $node) {
if ($node['parentId'] == $parentId) {
// Do additional stuff if we use this function from the front end
if ($this->_parseEnvironment) {
if ($node['enabled'] || $this->_getParam('overrideStatus', false)) {
$node['active'] = $this->_isNodeActive($node);
$node['hasActiveChild'] = $this->_isChildActive($nodes, $node['id']);
$node['url'] = $this->_parseUrl($node);
} else {
// Skip this node
continue;
}
}
$node['level'] = $level;
$children = $this->_buildNav($nodes, $node['id'], $level + 1);
$node['hasChildren'] = $children ? true : false;
if ($children) {
$node['children'] = $children;
}
$nav[] = $node;
}
}
return $nav;
}