From c8fe1f5e14e192a21090a29a96402953059ea823 Mon Sep 17 00:00:00 2001 From: liyuchun Date: Mon, 18 Oct 2021 10:21:08 +0800 Subject: [PATCH] * Fix bug #15541. --- module/group/model.php | 16 ++++++++++++++++ module/personnel/model.php | 8 ++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/module/group/model.php b/module/group/model.php index af1eb74efc..97452ad313 100644 --- a/module/group/model.php +++ b/module/group/model.php @@ -156,6 +156,22 @@ class groupModel extends model ->fetchAll('id'); } + /** + * Get groups by accounts. + * + * @param array $accounts + * @access public + * @return array + */ + public function getByAccounts($accounts) + { + return $this->dao->select('t1.account, t2.acl, t2.id')->from(TABLE_USERGROUP)->alias('t1') + ->leftJoin(TABLE_GROUP)->alias('t2') + ->on('t1.`group` = t2.id') + ->where('t1.account')->in($accounts) + ->fetchGroup('account'); + } + /** * Get the account number in the group. * diff --git a/module/personnel/model.php b/module/personnel/model.php index ccebd2a183..fd74fdad76 100644 --- a/module/personnel/model.php +++ b/module/personnel/model.php @@ -830,15 +830,15 @@ class personnelModel extends model */ public function deleteWhitelist($users = array(), $objectType = 'program', $objectID = 0, $groupID = 0) { - $this->loadModel('group'); + $groups = $this->loadModel('group')->getByAccounts($users); /* Determine whether to delete the whitelist. */ foreach($users as $account) { - $groups = $this->group->getByAccount($account); - foreach($groups as $key => $group) + $groups = zget($groups, $account, array()); + foreach($groups as $group) { - if($key == $groupID) continue; + if($group->id == $groupID) continue; $acl = json_decode($group->acl); $keyName = $objectType . 's';