/** * @param MenuItem $item */ public function addChild(MenuItem $item) { $item->setParent($this); $this->children->add($item); }
/** * @param MenuItem $item */ public function addMenuItem(MenuItem $item) { $item->setMenu($this); $this->items->add($item); }
public function processChildren($data, $i, $menuid, $order, $level) { $menuitems = array(); for ($i++; $i < count($data['level']) && $data['level'][$i] == $level; $i++) { if (strlen($data['label'][$i]) > 0) { $menuitem = new MenuItem(); $menuitem->setLabel($data['label'][$i]); $menuitem->setUrl($data['url'][$i]); if (!isset($order[$data['level'][$i]])) { $order[$data['level'][$i]] = 0; } $menuitem->setItemOrder($order[$data['level'][$i]]++); $menuitem->setMenu($menuid); $menuitem->setHidden(false); //Se questo elemento ha figli if ($data['level'][$i + 1] > $data['level'][$i]) { $processedItems = $this->processChildren($data, $i, $menuid, $order, $data['level'][$i + 1]); $i += count($processedItems); foreach ($processedItems as $item) { $menuitem->addChild($item); } } array_push($menuitems, $menuitem); } } return $menuitems; }