<?php

class Menu extends BaseModel{

    public function menuItems () {
        return $this->hasMany("MenuItem");
    }
    
    public function website () {
        return $this->belongsTo("Website");
    }
    
    public function getStructuredItems () {
        $menuItems = $this->menuItems()->with('Entry')->orderBy('position')->get();
        $list = array();
        foreach ($menuItems as $menuItem) {
            $list[$menuItem->id] = $menuItem;
        }
        return $this->_structureMenu($list);
    }
    
    private function _structureMenu ($listItems, $root = null) {
        $return = array();
        foreach ($listItems as $id => $menuItem) {
            if ($menuItem->parent_id == $root) {
                unset($listItems[$id]);
                $menuItem->children = $this->_structureMenu($listItems, $menuItem->id);
                $return[] = $menuItem;
            }    
        }
        return $return;
    }
}
