protected function getModuleGroups()
 {
     $config = Config::getArray();
     $groups = array(self::NO_GROUP_ASSIGNED => array('caption' => Translate::get('Other'), 'modules' => array(), 'position' => 9999999));
     if (count($config['backendModules']) > 0) {
         foreach ($config['backendModules'] as $module_id => $module) {
             $temp_controller = new Controller($module_id, $module);
             if ($temp_controller->canUserAccessCustomBackendModule()) {
                 $visible = true;
                 if (isset($module['invisible'])) {
                     if ($module['invisible'] === true) {
                         $visible = false;
                     }
                 }
                 if ($visible) {
                     $group_id = self::NO_GROUP_ASSIGNED;
                     if (isset($module['showInTabGroup'])) {
                         if (isset($config['backendModulesTabGroups'][$module['showInTabGroup']])) {
                             $group_id = $module['showInTabGroup'];
                         }
                     }
                     if (!isset($groups[$group_id])) {
                         $groups[$group_id] = $config['backendModulesTabGroups'][$group_id];
                         $groups[$group_id]['modules'] = array();
                     }
                     $groups[$group_id]['modules'][$module_id] = $module;
                 }
             }
         }
     }
     if (count($groups > 0)) {
         foreach ($groups as $group_id => $group) {
             uasort($groups[$group_id]['modules'], array($this, 'sortModuleGroupsCompare'));
         }
         uasort($groups, array($this, 'sortModuleGroupsCompare'));
     }
     return $groups;
 }