Пример #1
0
 /**
  * @param MenuItem $item
  */
 public function addChild(MenuItem $item)
 {
     $item->setParent($this);
     $this->children->add($item);
 }
Пример #2
0
 /**
  * @param MenuItem $item
  */
 public function addMenuItem(MenuItem $item)
 {
     $item->setMenu($this);
     $this->items->add($item);
 }
Пример #3
0
 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;
 }