コード例 #1
0
 /**
  * Return data about a particular {@link Member} of the stack for use in API response.
  * Notes:
  * 1) This method returns null instead of an array if the member doesn't exists anymore
  * 2) 'role' can be null in the response. This is the case of an admin, or an operations
  * user who can create the deployment but is not part of the stack roles.
  *
  * @param \DNProject $project
  * @param int $memberID
  * @return null|array
  */
 public function getStackMemberData(\DNProject $project, $memberID)
 {
     if (empty(self::$_cache_project_members[$project->ID])) {
         self::$_cache_project_members[$project->ID] = $project->listMembers();
     }
     // we cache all member lookup, even the false results
     if (!isset(self::$_cache_members[$memberID])) {
         self::$_cache_members[$memberID] = \Member::get()->byId($memberID);
     }
     if (!self::$_cache_members[$memberID]) {
         return null;
     }
     $role = null;
     foreach (self::$_cache_project_members[$project->ID] as $stackMember) {
         if ($stackMember['MemberID'] !== $memberID) {
             continue;
         }
         $role = $stackMember['RoleTitle'];
     }
     // if an administator is approving, they should be shown as one
     if ($role === null && \Permission::checkMember(self::$_cache_members[$memberID], 'ADMIN')) {
         $role = 'Administrator';
     }
     return ['id' => $memberID, 'email' => self::$_cache_members[$memberID]->Email, 'role' => $role, 'name' => self::$_cache_members[$memberID]->getName()];
 }