* Code for task #89843.

This commit is contained in:
hufangzhou
2023-04-07 13:28:44 +08:00
parent 71981a8847
commit bea4620137
2 changed files with 39 additions and 8 deletions
+28 -6
View File
@@ -307,18 +307,40 @@ class group extends control
$this->view->title = $this->lang->company->common . $this->lang->colon . $this->lang->group->managePriv;
$this->view->position[] = $this->lang->group->managePriv;
$modules = $this->dao->select('*')->from(TABLE_PRIVMANAGER)->where('type')->eq('module')->fetchAll('code');
$modulePairs = $this->group->getPrivManagerPairs('module');
$packageGroup = array();
$privs = $this->group->getPrivsListByView('');
$privs = $this->group->getCustomPrivs('', $privs);
$modules = $this->dao->select('*')->from(TABLE_PRIVMANAGER)->where('type')->eq('module')->fetchAll('code');
$modulePairs = $this->group->getPrivManagerPairs('module');
$unassignedModules = array_diff(array_keys(array_filter(get_object_vars($this->lang->resource), function($modulePrivs){return !empty((array)$modulePrivs);})), array_keys($modulePairs));
foreach($unassignedModules as $unassignedModule)
{
$this->app->loadLang($unassignedModule);
$modulePairs[$unassignedModule] = isset($this->lang->{$unassignedModule}->common) ? $this->lang->{$unassignedModule}->common : $unassignedModule;
}
$packageGroup = array();
foreach($modulePairs as $moduleCode => $moduleLang)
{
$packageGroup[$moduleCode] = $this->group->getPrivManagerPairs('package', $moduleCode);
$packageGroup[$moduleCode] = $packageGroup[$moduleCode] + array($modules[$moduleCode]->id => $this->lang->group->unassigned);
$modulePackages = $this->group->getPrivManagerPairs('package', $moduleCode);
$unassignedPrivs = $this->group->getUnassignedPrivsByModule($moduleCode);
$packageGroup[$moduleCode] = isset($modules[$moduleCode]) ? $modulePackages : array();
$unassignedPrivPackages = isset($modules[$moduleCode]) ? $modules[$moduleCode]->id : 0;
$packageGroup[$moduleCode] = $packageGroup[$moduleCode] + array($unassignedPrivPackages => $this->lang->group->unassigned);
}
$customPrivs = $this->group->getCustomPrivs('');
foreach($customPrivs as $privKey => $customPriv)
{
if(!isset($modulePairs[$customPriv->module])) $modulePairs[$customPriv->module] = isset($this->lang->{$customPriv->module}->common) ? $this->lang->{$customPriv->module}->common : $customPriv->module;
}
$indexPrivs = $this->group->getPrivByParent(isset($packageGroup['index']) ? array_keys($packageGroup['index']) : $modules['index']->id);
$indexPrivs = $this->group->transformPrivLang($indexPrivs, true);
$indexPrivs = $this->group->transformPrivLang($indexPrivs);
foreach($indexPrivs as $privID => $priv)
{
$indexPrivs["{$priv->module}-{$priv->method}"] = $priv->name;
unset($indexPrivs[$privID]);
}
$this->view->groups = $this->group->getPairs();
$this->view->modulePairs = $modulePairs;