/**
  * 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);
 }