protected function convertNodes(RokMenuNodeTree $menu) { $top = new RokNavMenuTree(); $top->_params = $this->convertArgsToParams(); $subnodes = array(); // convert the nodes to an array of old school node types $itr = new RecursiveIteratorIterator($menu, RecursiveIteratorIterator::SELF_FIRST); foreach ($itr as $tmp) { $node = new RokNavMenuNode(); $node->id = $tmp->getId(); $node->parent = $tmp->getParent(); $node->title = $tmp->getTitle(); $node->access = $tmp->getAccess(); $node->link = $tmp->getLink(); $node->level = $tmp->getLevel(); $node->image = $tmp->getImage(); $node->alias = $tmp->isAlias(); $node->nav = $tmp->getTarget(); $node->access = $tmp->getAccess(); switch ($tmp->getTarget()) { case 'newnotool': $node->displayType = 2; break; case 'new': $node->displayType = 1; break; default: $node->displayType = 0; break; } $node->setParameters($tmp->getParams()); $node->type = $tmp->getType(); //$node->order = $item->ordering; foreach (explode(" ", $tmp->getListItemClasses()) as $class) { $node->addListItemClass($class); } foreach (explode(" ", $tmp->getSpanClasses()) as $class) { $node->addSpanClass($class); } foreach (explode(" ", $tmp->getLinkClasses()) as $class) { $node->addLinkClass($class); } foreach ($tmp->getLinkAttribsArray() as $name => $attrib) { $node->addLinkAttrib($name, $attrib); } foreach ($tmp->getLinkAdditionsArray() as $name => $value) { $node->addLinkAddition($name, $value); } if ($node->parent == RokNavMenu::TOP_LEVEL_PARENT_ID) { $node->_parentRef = $top; $top->_children[$node->id] = $node; } else { foreach ($subnodes as $subnode) { if ($node->parent == $subnode->id) { $subnode->addChild($node); break; } } } $subnodes[] = $node; } return $top; }