* Fix bug#39017.
This commit is contained in:
@@ -2362,6 +2362,34 @@ class groupModel extends model
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process circular dependency.
|
||||
*
|
||||
* @param array $depends
|
||||
* @param array $privs
|
||||
* @access protected
|
||||
* @return array
|
||||
*/
|
||||
protected function processDepends($depends, $privs)
|
||||
{
|
||||
foreach($privs as $priv)
|
||||
{
|
||||
if(!isset($depends[$priv])) continue;
|
||||
|
||||
foreach($depends[$priv] as $dependPriv)
|
||||
{
|
||||
if(isset($privs[$dependPriv])) continue;
|
||||
$privs[$dependPriv] = $dependPriv;
|
||||
|
||||
$dependPrivs = $this->processDepends($depends, $depends[$dependPriv]);
|
||||
|
||||
foreach($dependPrivs as $depend) $privs[$depend] = $depend;
|
||||
}
|
||||
}
|
||||
|
||||
return $privs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get related privs.
|
||||
*
|
||||
@@ -2375,6 +2403,8 @@ class groupModel extends model
|
||||
{
|
||||
$this->loadResourceLang();
|
||||
|
||||
$depends = array();
|
||||
|
||||
$privSubsets = array();
|
||||
$relatedPrivs = array('depend' => array(), 'recommend' => array());
|
||||
foreach($this->config->group->package as $packagePage => $package)
|
||||
@@ -2387,6 +2417,7 @@ class groupModel extends model
|
||||
{
|
||||
/* Show related pirvs when select. */
|
||||
if($type == 'recommend' && in_array($privCode, $recommendSelect)) $relatedPrivs[$type][$privCode] = $privCode;
|
||||
if($type == 'depend') $depends[$privCode] = $priv['depend'];
|
||||
|
||||
if(!in_array($privCode, $selectedPrivList) || !isset($priv[$type])) continue;
|
||||
|
||||
@@ -2398,6 +2429,9 @@ class groupModel extends model
|
||||
}
|
||||
}
|
||||
|
||||
/* Process circular dependency. */
|
||||
$relatedPrivs['depend'] = $this->processDepends($depends, $relatedPrivs['depend']);
|
||||
|
||||
$subsetPrivs = array('depend' => array(), 'recommend' => array());
|
||||
foreach(array('depend', 'recommend') as $type)
|
||||
{
|
||||
|
||||
@@ -1481,7 +1481,7 @@ $config->group->package->holiday = new stdclass();
|
||||
$config->group->package->holiday->order = 10;
|
||||
$config->group->package->holiday->subset = 'modelconfig';
|
||||
$config->group->package->holiday->privs = array();
|
||||
$config->group->package->holiday->privs['holiday-browse'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 5, 'depend' => array(), 'recommend' => array());
|
||||
$config->group->package->holiday->privs['holiday-browse'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 5, 'depend' => array('admin-index'), 'recommend' => array());
|
||||
$config->group->package->holiday->privs['holiday-create'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 10, 'depend' => array('holiday-browse'), 'recommend' => array('holiday-delete', 'holiday-edit'));
|
||||
$config->group->package->holiday->privs['holiday-edit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 15, 'depend' => array('holiday-browse'), 'recommend' => array('holiday-create'));
|
||||
$config->group->package->holiday->privs['holiday-delete'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 20, 'depend' => array('holiday-browse'), 'recommend' => array('holiday-create', 'holiday-edit'));
|
||||
@@ -2649,9 +2649,9 @@ $config->group->package->mail = new stdclass();
|
||||
$config->group->package->mail->order = 10;
|
||||
$config->group->package->mail->subset = 'notifysetting';
|
||||
$config->group->package->mail->privs = array();
|
||||
$config->group->package->mail->privs['mail-index'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'lite,rnd,or', 'order' => 0, 'depend' => array(), 'recommend' => array());
|
||||
$config->group->package->mail->privs['mail-detect'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'lite,rnd,or', 'order' => 5, 'depend' => array(), 'recommend' => array());
|
||||
$config->group->package->mail->privs['mail-edit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'lite,rnd,or', 'order' => 1, 'depend' => array('message-index'), 'recommend' => array());
|
||||
$config->group->package->mail->privs['mail-detect'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'lite,rnd,or', 'order' => 5, 'depend' => array('admin-index'), 'recommend' => array());
|
||||
$config->group->package->mail->privs['mail-index'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'lite,rnd,or', 'order' => 0, 'depend' => array('mail-detect'), 'recommend' => array());
|
||||
$config->group->package->mail->privs['mail-edit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'lite,rnd,or', 'order' => 1, 'depend' => array('mail-detect', 'message-index'), 'recommend' => array());
|
||||
$config->group->package->mail->privs['mail-save'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'lite,rnd,or', 'order' => 3, 'depend' => array('mail-edit'), 'recommend' => array('mail-reset'));
|
||||
$config->group->package->mail->privs['mail-test'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'lite,rnd,or', 'order' => 2, 'depend' => array('mail-edit'), 'recommend' => array());
|
||||
$config->group->package->mail->privs['mail-reset'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'lite,rnd,or', 'order' => 4, 'depend' => array('mail-edit'), 'recommend' => array('mail-save'));
|
||||
@@ -2728,7 +2728,7 @@ $config->group->package->backup = new stdclass();
|
||||
$config->group->package->backup->order = 5;
|
||||
$config->group->package->backup->subset = 'admin';
|
||||
$config->group->package->backup->privs = array();
|
||||
$config->group->package->backup->privs['backup-index'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'lite,rnd,or', 'order' => 0, 'depend' => array(), 'recommend' => array());
|
||||
$config->group->package->backup->privs['backup-index'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'lite,rnd,or', 'order' => 0, 'depend' => array('admin-index'), 'recommend' => array());
|
||||
$config->group->package->backup->privs['backup-backup'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'lite,rnd,or', 'order' => 2, 'depend' => array('backup-index'), 'recommend' => array());
|
||||
$config->group->package->backup->privs['backup-restore'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'lite,rnd,or', 'order' => 3, 'depend' => array('backup-index'), 'recommend' => array());
|
||||
$config->group->package->backup->privs['backup-delete'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'lite,rnd,or', 'order' => 4, 'depend' => array('backup-index'), 'recommend' => array());
|
||||
@@ -2740,7 +2740,7 @@ $config->group->package->trash = new stdclass();
|
||||
$config->group->package->trash->order = 15;
|
||||
$config->group->package->trash->subset = 'systemsetting';
|
||||
$config->group->package->trash->privs = array();
|
||||
$config->group->package->trash->privs['action-trash'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 0, 'depend' => array(), 'recommend' => array());
|
||||
$config->group->package->trash->privs['action-trash'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 0, 'depend' => array('admin-index'), 'recommend' => array());
|
||||
$config->group->package->trash->privs['action-undelete'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 1, 'depend' => array('action-trash'), 'recommend' => array());
|
||||
$config->group->package->trash->privs['action-hideOne'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 2, 'depend' => array('action-trash'), 'recommend' => array());
|
||||
|
||||
@@ -2769,21 +2769,21 @@ $config->group->package->ldap->order = 30;
|
||||
$config->group->package->ldap->subset = 'systemsetting';
|
||||
$config->group->package->ldap->privs = array();
|
||||
$config->group->package->ldap->privs['user-importldap'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd,or', 'order' => 15, 'depend' => array('ldap-set'), 'recommend' => array());
|
||||
$config->group->package->ldap->privs['ldap-set'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 10, 'depend' => array(), 'recommend' => array());
|
||||
$config->group->package->ldap->privs['ldap-set'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 10, 'depend' => array('admin-index'), 'recommend' => array());
|
||||
|
||||
$config->group->package->chat = new stdclass();
|
||||
$config->group->package->chat->order = 35;
|
||||
$config->group->package->chat->subset = 'systemsetting';
|
||||
$config->group->package->chat->privs = array();
|
||||
$config->group->package->chat->privs['admin-xuanxuan'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 8, 'depend' => array(), 'recommend' => array());
|
||||
$config->group->package->chat->privs['conference-admin'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 3, 'depend' => array(), 'recommend' => array());
|
||||
$config->group->package->chat->privs['setting-xuanxuan'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 0, 'depend' => array(), 'recommend' => array());
|
||||
$config->group->package->chat->privs['im-downloadXxdPackage'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 2, 'depend' => array(), 'recommend' => array());
|
||||
$config->group->package->chat->privs['im-debug'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 1, 'depend' => array(), 'recommend' => array());
|
||||
$config->group->package->chat->privs['client-browse'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 4, 'depend' => array(), 'recommend' => array());
|
||||
$config->group->package->chat->privs['client-create'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 5, 'depend' => array(), 'recommend' => array());
|
||||
$config->group->package->chat->privs['client-edit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 6, 'depend' => array(), 'recommend' => array());
|
||||
$config->group->package->chat->privs['client-delete'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 7, 'depend' => array(), 'recommend' => array());
|
||||
$config->group->package->chat->privs['admin-xuanxuan'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 8, 'depend' => array('admin-index'), 'recommend' => array());
|
||||
$config->group->package->chat->privs['conference-admin'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 3, 'depend' => array('admin-xuanxuan'), 'recommend' => array());
|
||||
$config->group->package->chat->privs['setting-xuanxuan'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 0, 'depend' => array('admin-xuanxuan'), 'recommend' => array());
|
||||
$config->group->package->chat->privs['im-downloadXxdPackage'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 2, 'depend' => array('admin-xuanxuan'), 'recommend' => array());
|
||||
$config->group->package->chat->privs['im-debug'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 1, 'depend' => array('admin-xuanxuan'), 'recommend' => array());
|
||||
$config->group->package->chat->privs['client-browse'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 4, 'depend' => array('admin-xuanxuan'), 'recommend' => array());
|
||||
$config->group->package->chat->privs['client-create'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 5, 'depend' => array('admin-xuanxuan'), 'recommend' => array());
|
||||
$config->group->package->chat->privs['client-edit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 6, 'depend' => array('admin-xuanxuan'), 'recommend' => array());
|
||||
$config->group->package->chat->privs['client-delete'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 7, 'depend' => array('admin-xuanxuan'), 'recommend' => array());
|
||||
|
||||
$config->group->package->jenkins = new stdclass();
|
||||
$config->group->package->jenkins->order = 25;
|
||||
|
||||
Reference in New Issue
Block a user