/** * Handle the admin notes form * @param Form $form The form * @param Player $player The player in question * @param Player $me The currently logged in player * @return Form The updated form */ private function handleAdminNotesForm($form, $player, $me) { $notes = $form->get('notes')->getData(); if ($form->get('save_and_sign')->isClicked()) { $notes .= ' — ' . $me->getUsername() . ' on ' . TimeDate::now()->toRFC2822String(); } $player->setAdminNotes($notes); $this->getFlashBag()->add('success', "The admin notes for {$player->getUsername()} have been updated"); // Reset the form so that the user sees the updated admin notes return $this->creator->create(); }
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()}"); }
/** * Promote a player to an admin if the configuration file specifies so * * @param Player $player The player in question */ private function configPromoteAdmin(Player $player) { $adminUsername = $this->container->getParameter('bzion.miscellaneous.admin'); if (!$adminUsername) { return; } if (strtolower($player->getUsername()) === strtolower($adminUsername)) { $player->addRole(Player::DEVELOPER); // Remove the username from the configuration file so that we don't // give admin permissions to the wrong person in case callsign // changes take place. This is supposed to happen only once, so we // don't need to worry about the performance overhead due to the // parsing and dumping of the YML file $path = ConfigHandler::getConfigurationPath(); $config = Yaml::parse($path); $config['bzion']['miscellaneous']['admin'] = null; file_put_contents($path, Yaml::dump($config, 4)); $this->getLogger()->notice(sprintf("User %s with BZID %s is now an administrator, as instructed by the configuration file", $adminUsername, $player->getBZID())); } }
/** * Send a confirmation e-mail to a player * @param Player $player The receiving player */ private function sendConfirmationMessage($player) { if ($player->getConfirmCode() === null) { // The player has no confirmation code, don't send them a message return; } $from = $this->container->getParameter('bzion.email.from'); $title = $this->container->getParameter('bzion.site.name'); if (!$from) { $this->getLogger()->addError('Unable to send verification e-mail message to player due to the "From:" address not being specified', array('player' => array('id' => $player->getId(), 'username' => $player->getUsername()))); return; } $message = Swift_Message::newInstance()->setSubject($title . ' Email Confirmation')->setFrom(array($from => $title))->setTo($player->getEmailAddress())->setBody($this->render('Email/confirm.txt.twig', array('player' => $player)))->addPart($this->render('Email/confirm.html.twig', array('player' => $player)), 'text/html'); $this->container->get('mailer')->send($message); $this->getFlashBag()->add('info', 'Please check your inbox in order to confirm your email address.'); }
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"); }