diff options
Diffstat (limited to 'ui/app/controllers/CControllerUserroleEdit.php')
-rw-r--r-- | ui/app/controllers/CControllerUserroleEdit.php | 43 |
1 files changed, 25 insertions, 18 deletions
diff --git a/ui/app/controllers/CControllerUserroleEdit.php b/ui/app/controllers/CControllerUserroleEdit.php index f18e80d3c09..bc4f96d72f3 100644 --- a/ui/app/controllers/CControllerUserroleEdit.php +++ b/ui/app/controllers/CControllerUserroleEdit.php @@ -180,7 +180,19 @@ class CControllerUserroleEdit extends CControllerUserroleEditGeneral { ]; } - $data['labels'] = $this->getLabels(); + $db_modules = API::Module()->get([ + 'output' => ['moduleid', 'relative_path', 'status'] + ]); + + $disabled_modules = array_filter($db_modules, + static function(array $db_module): bool { + return $db_module['status'] == MODULE_STATUS_DISABLED; + } + ); + + $data['disabled_moduleids'] = array_column($disabled_modules, 'moduleid', 'moduleid'); + + $data['labels'] = $this->getLabels($db_modules); $data['rules']['service_read_list'] = API::Service()->get([ 'output' => ['serviceid', 'name'], @@ -291,10 +303,7 @@ class CControllerUserroleEdit extends CControllerUserroleEditGeneral { return $data; } - /** - * @throws APIException - */ - private function getLabels(): array { + private function getLabels(array $db_modules): array { $labels = [ 'sections' => CRoleHelper::getUiSectionsLabels(USER_TYPE_SUPER_ADMIN), 'actions' => CRoleHelper::getActionsLabels(USER_TYPE_SUPER_ADMIN) @@ -304,23 +313,21 @@ class CControllerUserroleEdit extends CControllerUserroleEditGeneral { $labels['rules'][$section] = CRoleHelper::getUiSectionRulesLabels($section, USER_TYPE_SUPER_ADMIN); } - $db_modules = API::Module()->get([ - 'output' => ['moduleid', 'relative_path'], - 'filter' => [ - 'status' => MODULE_STATUS_ENABLED - ] - ]); + $labels['modules'] = []; if ($db_modules) { - $module_manager = new CModuleManager(APP::ModuleManager()->getModulesDir()); - foreach ($db_modules as $module) { - $manifest = $module_manager->addModule($module['relative_path']); - $labels['modules'][$module['moduleid']] = $manifest['name']; + $module_manager = new CModuleManager(APP::getRootDir()); + + foreach ($db_modules as $db_module) { + $manifest = $module_manager->addModule($db_module['relative_path']); + + if ($manifest !== null) { + $labels['modules'][$db_module['moduleid']] = $manifest['name']; + } } } - else { - $labels['modules'] = []; - } + + natcasesort($labels['modules']); return $labels; } |