private function getAssigneesUGroups(Tracker_Artifact $artifact) { $assignees_ugroups = array(); foreach ($this->assignee_retriever->getAssignees($artifact) as $assignee) { $assignees_ugroups = array_merge($assignees_ugroups, $this->getUserUGroups($assignee, $artifact)); } return $assignees_ugroups; }
private function userHavePermissionOnTracker(PFUser $user, Tracker_Artifact $artifact) { $permissions = $artifact->getTracker()->getAuthorizedUgroupsByPermissionType(); foreach ($permissions as $permission_type => $ugroups) { switch ($permission_type) { case Tracker::PERMISSION_FULL: foreach ($ugroups as $ugroup) { if ($this->userBelongsToGroup($user, $artifact, $ugroup)) { return true; } } break; case Tracker::PERMISSION_SUBMITTER: foreach ($ugroups as $ugroup) { if ($this->userBelongsToGroup($user, $artifact, $ugroup)) { // check that submitter is also a member $submitter = $this->user_manager->getUserById($artifact->getSubmittedBy()); if ($this->userBelongsToGroup($submitter, $artifact, $ugroup)) { return true; } } } break; case Tracker::PERMISSION_ASSIGNEE: foreach ($ugroups as $ugroup) { if ($this->userBelongsToGroup($user, $artifact, $ugroup)) { // check that one of the assignees is also a member $permission_assignee = new Tracker_Permission_PermissionRetrieveAssignee($this->user_manager); foreach ($permission_assignee->getAssignees($artifact) as $assignee) { if ($this->userBelongsToGroup($assignee, $artifact, $ugroup)) { return true; } } } } break; case Tracker::PERMISSION_SUBMITTER_ONLY: foreach ($ugroups as $ugroup) { if ($this->userBelongsToGroup($user, $artifact, $ugroup)) { if ($user->getId() == $artifact->getSubmittedBy()) { return true; } } } break; } } return false; }
/** * Retrieve assignee recipients for a given artifact * * @param Tracker_Artifact $artifact * * @return Array of PFUser */ function getRecipientsFromArtifact(Tracker_Artifact $artifact) { $permission_assignee = new Tracker_Permission_PermissionRetrieveAssignee($artifact->getUserManager()); return $permission_assignee->getAssignees($artifact); }