diff --git a/dispatcher.php b/dispatcher.php index 6849162..17a7c94 100644 --- a/dispatcher.php +++ b/dispatcher.php @@ -37,6 +37,7 @@ $ROUTES["^connexion/(reinitialiser_mdp)/(.*)/?$"] = ["server_files/controllers/c $ROUTES["^connexion/?$"] = ["server_files/controllers/connexion.php"]; $ROUTES["^deconnexion/?$"] = ["server_files/controllers/deconnexion.php"]; $ROUTES["^equipe/([A-Z]{3})/?$"] = ["server_files/controllers/equipe.php", "trigram"]; +$ROUTES["^equipe/([A-Z]{3})/(modifier)?$"] = ["server_files/controllers/equipe.php", "trigram", "modifier"]; $ROUTES["^file/([a-z0-9]{64})/?$"] = ["server_files/controllers/view_file.php", "file_id"]; $ROUTES["^informations/([0-9]*)/.*?$"] = ["server_files/controllers/informations.php", "id"]; $ROUTES["^inscription/?$"] = ["server_files/controllers/inscription.php"]; diff --git a/server_files/controllers/equipe.php b/server_files/controllers/equipe.php index 57bb549..8af48fd 100644 --- a/server_files/controllers/equipe.php +++ b/server_files/controllers/equipe.php @@ -14,6 +14,18 @@ if ($_SESSION["role"] == Role::ORGANIZER && !$tournament->organize($_SESSION["us if ($team === null) require_once "server_files/404.php"; +if (isset($_POST["team_edit"])) { + $edit_team = new EditTeam($_POST); + try { + $edit_team->makeVerifications(); + $edit_team->updateTeam(); + } + catch (AssertionError $e) { + $has_error = true; + $error_message = $e->getMessage(); + } +} + if (isset($_POST["validate"])) { $team->setValidationStatus(ValidationStatus::VALIDATED); Mailer::sendValidateTeam($team, $_POST["message"]); @@ -23,7 +35,6 @@ elseif (isset($_POST["unvalidate"])) { Mailer::sendUnvalidateTeam($team, $_POST["message"]); } - if (isset($_POST["select"])) { $team->selectForFinal(true); $team->setValidationStatus(ValidationStatus::NOT_READY); @@ -57,6 +68,50 @@ if (isset($_POST["download_zip"])) { exit(); } +class EditTeam +{ + public $name; + public $trigram; + public $tournament_id; + private $team; + private $tournament; + + public function __construct($data) + { + global $team; + + foreach ($data as $key => $value) + $this->$key = htmlspecialchars($value); + + $this->trigram = strtoupper($this->trigram); + $this->team = $team; + $this->tournament = Tournament::fromId($this->tournament_id); + } + + public function makeVerifications() + { + ensure($this->name != "" && $this->name != null, "Veuillez spécifier un nom d'équipe."); + ensure($this->name == $this->team->getName() || !teamExists($this->name), "Une équipe existe déjà avec ce nom."); + ensure(preg_match("#^[A-Z]{3}$#", $this->trigram), "Le trigramme n'est pas valide."); + ensure($this->trigram == $this->team->getTrigram() || !trigramExists($this->trigram), "Une équipe a déjà choisi ce trigramme."); + ensure($this->tournament != null, "Le tournoi indiqué n'existe pas."); + ensure($this->tournament_id == $this->team->getTournamentId() || $_SESSION["role"] == Role::ADMIN, "Vous n'avez pas la permission pour changer cette équipe de tournoi."); + } + + public function updateTeam() + { + global $URL_BASE; + + $this->team->setName($this->name); + $this->team->setTrigram($this->trigram); + $this->team->setTournamentId($this->tournament_id); + + $_SESSION["tournament"] = $this->tournament; + + header("Location: $URL_BASE/equipe/$this->trigram"); + } +} + $documents = $tournament->getAllDocuments($team->getId()); $documents_final = null; diff --git a/server_files/views/equipe.php b/server_files/views/equipe.php index 65d4dd5..08ce9a3 100644 --- a/server_files/views/equipe.php +++ b/server_files/views/equipe.php @@ -59,6 +59,49 @@ ?> + + +
+
+
+ + +
+ +
+ + +
+
+ +
+ + +
+ +
+ +
+
+ +getValidationStatus() != ValidationStatus::VALIDATED) { ?> +
+ + +

Documents