Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'ui/app/controllers/CControllerUserroleEdit.php')
-rw-r--r--ui/app/controllers/CControllerUserroleEdit.php43
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;
}