예제 #1
0
 public function teamLeaveAction(Player $me, Conversation $conversation)
 {
     $team = $me->getTeam();
     if (!$me->canEdit($team)) {
         throw new ForbiddenException("You are not allowed to remove your team from this conversation.");
     } elseif (!$conversation->isMember($team)) {
         throw new ForbiddenException("That team is not participating in this conversation.");
     }
     return $this->showConfirmationForm(function () use($conversation, $team) {
         $conversation->removeMember($team);
         $event = new ConversationAbandonEvent($conversation, $team);
         Service::getDispatcher()->dispatch(Events::CONVERSATION_ABANDON, $event);
         return new RedirectResponse($conversation->getURL());
     }, "Are you sure you want to remove {$team->getEscapedName()} from this conversation?", "Your team is no longer participating in that conversation.", "Remove team");
 }
예제 #2
0
 private function getPlayer($wsId, Team $team = null)
 {
     if (array_key_exists($wsId, $this->players)) {
         $player = $this->players[$wsId];
     } else {
         $player = $this->em->getRepository('AppBundle:Player')->findOneByWsId($wsId);
     }
     if ($player == null) {
         try {
             $data = $this->downloader->getPlayerData($wsId);
         } catch (\Exception $e) {
             throw $e;
         }
         $player = new Player();
         $player->setFirstName($data->firstName);
         $player->setLastName($data->lastName);
         $player->setKnownName($data->knownName);
         $player->setAge($data->age);
         $player->setWsId($data->wsId);
     }
     if ($team !== null && $player->getTeam() !== $team) {
         $ret = $team;
         try {
             $teamId = $this->downloader->getActiveTeam($wsId);
             $ret = $this->getTeam($teamId);
             $player->setTeam($ret);
         } catch (\Exception $e) {
         } finally {
             $player->setTeam($ret);
         }
     }
     $this->players[$wsId] = $player;
     $this->em->persist($player);
     return $player;
 }
예제 #3
0
파일: Team.php 프로젝트: kleitz/bzion
 /**
  * Check if a player is part of this team
  *
  * @param int $playerID The player to check
  *
  * @return bool True if the player belongs to this team
  */
 public function isMember($playerID)
 {
     $player = new Player($playerID);
     return $player->getTeam()->getId() == $this->getId();
 }
예제 #4
0
 /**
  * Queries the database to get the team which a group of players belong to
  *
  * @param  int[] $players The IDs of players
  * @return Team  The team
  */
 private function getTeam($players)
 {
     $team = null;
     foreach ($players as $id) {
         $player = new Player($id);
         if ($player->isTeamless()) {
             return Team::invalid();
         } elseif ($team == null) {
             $team = $player->getTeam();
         } elseif ($team->getId() != $player->getTeam()->getId()) {
             // This player is on a different team from the previous player!
             return Team::invalid();
         }
     }
     return $team;
 }