/** * Function to get an instance of the Vtiger MenuStructure Model from list of menu models * @param <array> $menuModelList - array of Vtiger_Menu_Model instances * @return Vtiger_MenuStructure_Model instance */ public static function getInstanceFromMenuList($menuModelList, $selectedMenu = '') { $structureModel = new self(); $topMenuLimit = $structureModel->getResponsiveMode() ? 0 : $structureModel->getLimit(); $currentTopMenuCount = 0; $menuListArray = array(); $menuListArray[self::TOP_MENU_INDEX] = array(); $menuListArray[self::MORE_MENU_INDEX] = $structureModel->getEmptyMoreMenuList(); foreach ($menuModelList as $menuModel) { if ($menuModel->get('tabsequence') != -1 && (!$topMenuLimit || $currentTopMenuCount < $topMenuLimit)) { $menuListArray[self::TOP_MENU_INDEX][$menuModel->get('name')] = $menuModel; $currentTopMenuCount++; } $parent = $menuModel->get('parent'); if ($parent == 'Sales' || $parent == 'Marketing') { $parent = 'MARKETING_AND_SALES'; } $menuListArray[self::MORE_MENU_INDEX][strtoupper($parent)][$menuModel->get('name')] = $menuModel; } if (!empty($selectedMenu) && !array_key_exists($selectedMenu, $menuListArray[self::TOP_MENU_INDEX])) { $selectedMenuModel = $menuModelList[$selectedMenu]; if ($selectedMenuModel) { $menuListArray[self::TOP_MENU_INDEX][$selectedMenuModel->get('name')] = $selectedMenuModel; } } // Apply custom comparator foreach ($menuListArray[self::MORE_MENU_INDEX] as $parent => &$values) { uksort($values, array('Vtiger_MenuStructure_Model', 'sortMenuItemsByProcess')); } //uksort($menuListArray[self::TOP_MENU_INDEX], array('Vtiger_MenuStructure_Model', 'sortMenuItemsByProcess')); return $structureModel->setData($menuListArray); }