/** * @param RokMenuNodeTree $menu * @return RokMenuNodeTree menu after reprocessing */ protected function preProcessMenu(RokMenuNodeTree &$menu) { $remove_nodes = array(); $nodeIterator = new RecursiveIteratorIterator($menu, RecursiveIteratorIterator::SELF_FIRST); foreach ($nodeIterator as $node) { if (!$this->isAccessable($node)){ $remove_nodes[] = $node->getId(); } } foreach($remove_nodes as $remove_node){ $menu->removeNode($remove_node); } return $menu; }