From e7e0a3201123898ac9b1cb8ca283652ef689db5e Mon Sep 17 00:00:00 2001 From: Roland Mas Date: Fri, 10 Jan 2014 10:46:50 +0100 Subject: [PATCH] Avoid performing expensive and useless operations on group/user activation --- src/common/include/Group.class.php | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/common/include/Group.class.php b/src/common/include/Group.class.php index 866b408ac8..a973ff77c1 100644 --- a/src/common/include/Group.class.php +++ b/src/common/include/Group.class.php @@ -2228,22 +2228,29 @@ class Group extends Error { /* Activate member(s) of the project */ + + global $SYS; $members = $this->getUsers (true); foreach ($members as $member) { - $roles = array(); - foreach (RBACEngine::getInstance()->getAvailableRolesForUser ($member) as $role) { - if ($role->getHomeProject() && $role->getHomeProject()->getID() == $this->getID()) { - $roles[] = $role; - } + $user_id = $member->getID(); + + if (!$SYS->sysCheckCreateGroup($this->getID())){ + $this->setError($SYS->getErrorMessage()); + db_rollback(); + return false; } - foreach ($roles as $role) { - if (!$this->addUser($member->getUnixName(),$role->getID())) { - return false; - } + if (!$SYS->sysCheckCreateUser($user_id)) { + $this->setError($SYS->getErrorMessage()); + db_rollback(); + return false; + } + if (!$SYS->sysGroupCheckUser($this->getID(),$user_id)) { + $this->setError($SYS->getErrorMessage()); + db_rollback(); + return false; } - } return true; -- 2.30.2