840f94ca by Chris Boden

Fixed hierarchy menu

1 parent 2ea55b3d
......@@ -23,25 +23,35 @@ class HierarchicalMenu implements Countable, Iterator {
private $target_lookup = Array();
public function __construct(Array $menu, $parent = 0) {
$i = 0;
$last_id = -1;
$last_id = $i = -1;
$nest = Array();
foreach ($menu as $key => $item) {
foreach ($menu as $key => $realitem) {
$item = clone $realitem;
$item->_children = false;
if ($item->menu_item_parent == $parent) {
$i++;
$this->contents[$i] = $item;
$this->id_lookup[$item->ID] = $i;
$this->target_lookup[$item->object_id] = $i;
$i++;
$last_id = $item->ID;
} elseif ($item->menu_item_parent == $last_id) {
$this->contents[$this->id_lookup[$last_id]]->_children = true;
$nest[] = $last_id;
$last_id = $item->ID;
} elseif (count($nest) > 0) {
$last_id = array_pop($nest);
if (isset($this->id_lookup[$last_id])) {
$this->contents[$this->id_lookup[$last_id]]->_children = true;
}
}
}
foreach ($this->contents as $key => $item) {
foreach ($this->contents as $key => &$item) {
if (true === $item->_children) {
$item->HierarchicalMenu = new HierarchicalMenu($menu, $item->ID);
}
......