* Code for task #89847.

This commit is contained in:
hufangzhou
2023-04-06 13:33:46 +08:00
parent bba7fa92d7
commit 39c6457675
4 changed files with 300 additions and 80 deletions
+43
View File
@@ -1010,4 +1010,47 @@ class group extends control
return print(html::select('actions[]', $privList, '', "multiple='multiple' class='form-control'"));
}
/**
* AJAX: Get priv's dependent priv list.
*
* @param string $privIdList
* @access public
* @return bool
*/
public function ajaxGetDependentPrivs($privIdList)
{
$relatedPrivs = $this->dao->select('t1.relationPriv,t2.parent,t2.module,t2.method,t3.`key`,t3.value')->from(TABLE_PRIVRELATION)->alias('t1')
->leftJoin(TABLE_PRIV)->alias('t2')->on('t1.relationPriv=t2.id')
->leftJoin(TABLE_PRIVLANG)->alias('t3')->on('t2.relationPriv=t3.objectID')
->leftJoin(TABLE_PRIVMANAGER)->alias('t4')->on('t2.parent=t4.id')
->where('t1.priv')->in($privIdList)
->andWhere('t1.relationPriv')->notin($privIdList)
->andWhere('t2.type')->eq('depend')
->andWhere('t3.objectType')->eq('priv')
->andWhere('t1.edition')->like("%,{$this->config->edition},%")
->andWhere('t1.vision')->like("%,{$this->config->vision},%")
->fetchAll('relationPriv');
if(empty($relatedPrivs)) return print('');
$modulePairs = $this->group->getPrivManagerPairs('module');
$managerList = $this->dao->select('*')->from(TABLE_PRIVMANAGER)->fetchAll('id');
$relatedPrivs = $this->group->transformPrivLang($relatedPrivs);
$privList = array('depend' => array(), 'recommend' => array());
foreach($relatedPrivs as $privID => $relatedPriv)
{
$module = $relatedPriv->module;
if(!isset($privList['depend'][$module])) $privList[$type][$module] = array();
$moduleCode = $managerList[$relatedPriv->parent]->type == 'package' ? $managerList[$managerList[$relatedPriv->parent]->parent]->code : $managerList[$relatedPriv->parent]->code;
$privList['depend'][$module]['title'] = $modulePairs[$moduleCode];
$privList['depend'][$module]['module'] = $moduleCode;
$privList['depend'][$module]['children'][] = array('title' => $relatedPriv->name, 'relationPriv' => $privID);
}
$privList[$type] = array_values($privList[$type]);
return print(json_encode($privList));
}
}