public function inviteAction(Team $team, Player $player, Player $me) { if (!$me->canEdit($team)) { throw new ForbiddenException("You are not allowed to invite a player to that team!"); } elseif ($team->isMember($player->getId())) { throw new ForbiddenException("The specified player is already a member of that team."); } elseif (Invitation::hasOpenInvitation($player->getId(), $team->getId())) { throw new ForbiddenException("This player has already been invited to join the team."); } return $this->showConfirmationForm(function () use($team, $player, $me) { $invite = Invitation::sendInvite($player->getId(), $me->getId(), $team->getId()); Service::getDispatcher()->dispatch(Events::TEAM_INVITE, new TeamInviteEvent($invite)); return new RedirectResponse($team->getUrl()); }, "Are you sure you want to invite {$player->getEscapedUsername()} to {$team->getEscapedName()}?", "Player {$player->getUsername()} has been invited to {$team->getName()}"); }
/** * @param Group $discussion * @param Player $me */ private function showRenameForm($discussion, $me) { $creator = new GroupRenameFormCreator($discussion); $form = $creator->create()->handleRequest($this->getRequest()); if ($form->isValid()) { $this->assertCanEdit($me, $discussion); $newName = $form->get('subject')->getData(); $event = new GroupRenameEvent($discussion, $discussion->getSubject(), $newName, $me); $discussion->setSubject($newName); Service::getDispatcher()->dispatch(Events::GROUP_RENAME, $event); $this->getFlashBag()->add('success', "The conversation has been updated"); } return $form; }
public function assignLeaderAction(Team $team, Player $me, Player $player) { $this->assertCanEdit($me, $team, "You are not allowed to change the leader of this team."); if (!$team->isMember($player->getId())) { throw new ForbiddenException("The specified player is not a member of {$team->getName()}"); } elseif ($team->getLeader()->getId() == $player->getId()) { throw new ForbiddenException("{$player->getUsername()} is already the leader of {$team->getName()}"); } return $this->showConfirmationForm(function () use($player, $team) { $event = new Event\TeamLeaderChangeEvent($team, $player, $team->getLeader()); $team->setLeader($player->getId()); Service::getDispatcher()->dispatch(Events::TEAM_LEADER_CHANGE, $event); return new RedirectResponse($team->getUrl()); }, "Are you sure you want to transfer the leadership of the team to <strong>{$player->getEscapedUsername()}</strong>?", "{$player->getUsername()} is now leading {$team->getName()}", "Appoint leadership"); }