function setMenuItemsMenuPath($items) { $this->setMenuItems(WFMenuTree::menuTreeBuildingToMenuTree($items)); }
/** * Builds a hierarchical array of {@link WFMenuItemBasic} objects from the passed hierarchical associative array. * * assoc array format: * <code> * $menuArray = array( * 'topMenu1' => array( * 'Menu Item 1' => '/link/to/target1', * 'Menu Item 2' => '/link/to/target2', * 'Menu Item 2' => WFMenuItemBasic::WFMenuItemBasic()->setLink('http://yahoo.com')->setTarget('_blank') * ), * 'topMenuItem2' => '/link/to/target' * ); * </code> * * NOTE: This function is very useful for converting menus set up in skin delegates (ie namedContent) to nice menus. * * @param array The array of menu items. * @param object WFMenuItemBasic The menu item to add items found to as submenus. * @return array An array of WFMenuItemBasic objects. */ static function nestedArrayToMenuTree($menuArray, $addToMenuItem = null) { $topMenuItems = array(); foreach ($menuArray as $label => $value) { if ($value instanceof WFMenuItemBasic) { $currentMenuItem = $value; if ($currentMenuItem->label() === NULL) { $currentMenuItem->setLabel($label); } } else { $currentMenuItem = new WFMenuItemBasic(); $currentMenuItem->setLabel($label); } if ($addToMenuItem == NULL) { $topMenuItems[] = $currentMenuItem; } else { $addToMenuItem->addChild($currentMenuItem); } if (is_array($value)) { $item = WFMenuTree::nestedArrayToMenuTree($value, $currentMenuItem); } else { if (!$value instanceof WFMenuItemBasic) { $currentMenuItem->setLink($value); } } } return $topMenuItems; }