makeVerifications(); $join_team->joinTeam(); } catch (AssertionError $e) { $has_error = true; $error_message = $e->getMessage(); } } class JoinTeam { private $access_code; private $team; private $min_null_index; public function __construct($data) { $this->access_code = strtolower(htmlspecialchars($data["access_code"])); $this->team = Team::fromAccessCode($this->access_code); } public function makeVerifications() { ensure(preg_match("#[a-z0-9]{6}#", $this->access_code), "Le code d'accès doit comporter 6 caractères alphanumériques."); ensure($this->team != null, "Ce code d'accès est invalide."); ensure($this->team->getValidationStatus() == ValidationStatus::NOT_READY, "Cette équipe est déjà validée ou en cours de validation, vous ne pouvez pas la rejoindre."); for ($i = 1; $i <= $_SESSION["role"] == Role::PARTICIPANT ? 6 : 2; ++$i) { if (($_SESSION["role"] == Role::PARTICIPANT ? $this->team->getParticipants()[$i - 1] : $this->team->getEncadrants()[$i - 1]) == NULL) break; } $this->min_null_index = $i; ensure($_SESSION["role"] == Role::PARTICIPANT && $this->min_null_index <= 6 || $_SESSION["role"] == Role::ENCADRANT && $this->min_null_index <= 2, "Il n'y a plus de place pour vous dans l'équipe."); } public function joinTeam() { $user = $_SESSION["user"]; $user->setTeamId($this->team->getId()); if ($_SESSION["role"] == Role::ENCADRANT) $this->team->setEncadrant($this->min_null_index, $user->getId()); else $this->team->setParticipant($this->min_null_index, $user->getId()); $_SESSION["team"] = $this->team; $tournament = $_SESSION["tournament"] = Tournament::fromId($this->team->getTournamentId()); Mailer::sendJoinTeamMail($user, $this->team, $tournament); } } require_once "server_files/views/rejoindre_equipe.php";