public function addRolePermission(\thebuggenie\core\entities\Role $role, \thebuggenie\core\entities\RolePermission $rolepermission) { $role_id = $role->getID(); $crit = $this->getCriteria(); $crit->addWhere(self::ROLE_ID, $role_id); $existing_identifiables = array(self::UID => array(), self::TID => array()); $target_id = $rolepermission->getExpandedTargetID($role); if ($res = $this->doSelect($crit)) { while ($row = $res->getNextRow()) { $key = $row->get(self::UID) ? self::UID : self::TID; if (!isset($existing_identifiables[$key][$row->get($key)])) { $existing_identifiables[$key][$row->get($key)] = array('id' => $row->get($key), 'target_id' => $target_id, 'permission_type_module' => array()); } $existing_identifiables[$key][$row->get($key)]['permission_type_module'][] = $row->get(self::PERMISSION_TYPE) . ';' . $row->get(self::MODULE); } } foreach (ProjectAssignedUsers::getTable()->getUsersByRoleID($role_id) as $uid => $assigned_user) { if (!isset($existing_identifiables[self::UID][$uid])) { $existing_identifiables[self::UID][$uid] = array('id' => $uid, 'target_id' => $target_id, 'permission_type_module' => array()); } } foreach (ProjectAssignedTeams::getTable()->getTeamsByRoleID($role_id) as $tid => $assigned_team) { if (!isset($existing_identifiables[self::TID][$tid])) { $existing_identifiables[self::TID][$tid] = array('id' => $tid, 'target_id' => $target_id, 'permission_type_module' => array()); } } foreach ($existing_identifiables as $key => $identifiables) { foreach ($identifiables as $identifiable) { if (in_array($rolepermission->getPermission() . ';' . $rolepermission->getModule(), $identifiable['permission_type_module'])) { continue; } $crit = $this->getCriteria(); $crit->addInsert(self::SCOPE, framework\Context::getScope()->getID()); $crit->addInsert(self::PERMISSION_TYPE, $rolepermission->getPermission()); $crit->addInsert(self::TARGET_ID, $identifiable['target_id']); $crit->addInsert($key, $identifiable['id']); $crit->addInsert(self::ALLOWED, true); $crit->addInsert(self::MODULE, $rolepermission->getModule()); $crit->addInsert(self::ROLE_ID, $role_id); $res = $this->doInsert($crit); } } }
/** * Adds an assignee with a given role * * @param \thebuggenie\core\entities\common\Identifiable $assignee The user or team to add * @param Role $role The role to add * * @return null */ public function addAssignee($assignee, $role = null) { $user_id = 0; $team_id = 0; if ($assignee instanceof \thebuggenie\core\entities\User) { $user_id = $assignee->getID(); if (tables\ProjectAssignedUsers::getTable()->addUserToProject($this->getID(), $user_id, $role->getID()) && is_array($this->_assigned_users)) { $this->_assigned_users = array_merge($this->_assigned_users, tables\ProjectAssignedUsers::getTable()->getUserByProjectIDUserIDRoleID($this->getID(), $user_id, $role->getID())); } } elseif ($assignee instanceof \thebuggenie\core\entities\Team) { $team_id = $assignee->getID(); if (tables\ProjectAssignedTeams::getTable()->addTeamToProject($this->getID(), $team_id, $role->getID()) && is_array($this->_assigned_users)) { $this->_assigned_teams = array_merge($this->_assigned_teams, tables\ProjectAssignedTeams::getTable()->getTeamByProjectIDTeamIDRoleID($this->getID(), $team_id, $role->getID())); } } if ($role instanceof \thebuggenie\core\entities\Role) { $role_id = $role->getID(); foreach ($role->getPermissions() as $role_permission) { $target_id = strtolower($role_permission->getExpandedTargetID($role)); tables\Permissions::getTable()->removeSavedPermission($user_id, 0, $team_id, $role_permission->getModule(), $role_permission->getPermission(), $target_id, framework\Context::getScope()->getID(), $role_id); framework\Context::setPermission($role_permission->getPermission(), $target_id, $role_permission->getModule(), $user_id, 0, $team_id, true, null, $role_id); } } }
/** * Adds an assignee with a given role * * @param \thebuggenie\core\entities\common\Identifiable $assignee The user or team to add * @param Role $role The role to add * * @return null */ public function addAssignee($assignee, $role = null) { $user_id = 0; $team_id = 0; if ($assignee instanceof \thebuggenie\core\entities\User) { $user_id = $assignee->getID(); tables\ProjectAssignedUsers::getTable()->addUserToProject($this->getID(), $user_id, $role->getID()); } elseif ($assignee instanceof \thebuggenie\core\entities\Team) { $team_id = $assignee->getID(); tables\ProjectAssignedTeams::getTable()->addTeamToProject($this->getID(), $team_id, $role->getID()); } if ($role instanceof \thebuggenie\core\entities\Role) { foreach ($role->getPermissions() as $role_permission) { $target_id = $role_permission->hasTargetID() ? $role_permission->getReplacedTargetID($this) : $this->getID(); framework\Context::setPermission($role_permission->getPermission(), $target_id, $role_permission->getModule(), $user_id, 0, $team_id, true, null, $role->getID()); } } }