From c3aa0386f2107e28a9e7f24c8de4e55135f036b5 Mon Sep 17 00:00:00 2001 From: galaxyoyo Date: Fri, 20 Sep 2019 00:02:01 +0200 Subject: [PATCH] =?UTF-8?q?Attribution=20des=20vid=C3=A9os=20aux=20=C3=A9q?= =?UTF-8?q?uipes=20(manuelle)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server_files/classes/Team.php | 33 +++- server_files/controllers/equipe.php | 41 ++++- server_files/controllers/probleme.php | 108 +---------- server_files/views/ajouter_admin.php | 8 +- server_files/views/ajouter_equipe.php | 2 - server_files/views/connexion.php | 4 +- server_files/views/envoyer_video.php | 4 +- server_files/views/equipe.php | 23 +++ server_files/views/header.php | 20 ++- server_files/views/inscription.php | 5 - server_files/views/mon_compte.php | 5 +- server_files/views/mon_equipe.php | 4 +- server_files/views/probleme.php | 230 ++++++------------------ server_files/views/videos_solutions.php | 4 - 14 files changed, 171 insertions(+), 320 deletions(-) diff --git a/server_files/classes/Team.php b/server_files/classes/Team.php index fb1de50..e48aa8b 100644 --- a/server_files/classes/Team.php +++ b/server_files/classes/Team.php @@ -10,6 +10,7 @@ class Team private $participants; private $inscription_date; private $validation_status; + private $video_team_ids; private $access_code; private $year; @@ -60,6 +61,23 @@ class Team return $team; } + public static function getAllTeams($problem) + { + global $DB, $YEAR; + $req = $DB->prepare("SELECT * FROM `teams` WHERE `problem` = ? AND `year` = $YEAR;"); + $req->execute([htmlspecialchars($problem)]); + + $teams = []; + + while (($data = $req->fetch()) != false) { + $team = new Team(); + $team->fill($data); + $teams[] = $team; + } + + return $teams; + } + private function fill($data) { $this->id = $data["id"]; @@ -70,6 +88,7 @@ class Team $this->participants = [$data["participant_1"], $data["participant_2"], $data["participant_3"], $data["participant_4"], $data["participant_5"]]; $this->inscription_date = $data["inscription_date"]; $this->validation_status = ValidationStatus::fromName($data["validation_status"]); + $this->video_team_ids = [$data["video_team1"], $data["video_team2"]]; $this->access_code = $data["access_code"]; $this->year = $data["year"]; } @@ -155,10 +174,22 @@ class Team { global $DB; $this->validation_status = $status; - /** @noinspection PhpUndefinedMethodInspection */ $DB->prepare("UPDATE `teams` SET `validation_status` = ? WHERE `id` = ?;")->execute([ValidationStatus::getName($status), $this->id]); } + public function getVideoTeamIds() + { + return $this->video_team_ids; + } + + public function setVideoTeamIds($video_team_ids) + { + global $DB; + ensure(sizeof($video_team_ids) == 2, "Une équipe doit recevoir exactement deux vidéos."); + $this->video_team_ids = $video_team_ids; + $DB->prepare("UPDATE `teams` SET `video_team1` = ?, `video_team2` = ? WHERE `id` = ?;")->execute([$video_team_ids[0], $video_team_ids[1], $this->id]); + } + public function getAccessCode() { return $this->access_code; diff --git a/server_files/controllers/equipe.php b/server_files/controllers/equipe.php index 0eb8034..fa2c96e 100644 --- a/server_files/controllers/equipe.php +++ b/server_files/controllers/equipe.php @@ -1,7 +1,7 @@ makeVerifications(); + $update_video_teams->update(); + } catch (AssertionError $e) { + $has_error = true; + $error_message = $e->getMessage(); + } +} + +class UpdateVideoTeams +{ + private $other_teams; + + public function __construct($data) + { + foreach ($data as $key => $value) + $this->$key = $value; + } + + public function makeVerifications() + { + ensure(sizeof($this->other_teams) == 2, "L'équipe doit recevoir exactement deux vidéos."); + ensure(Team::fromId($this->other_teams[0]) != null, "La première équipe n'existe pas."); + ensure(Team::fromId($this->other_teams[1]) != null, "La seconde équipe n'existe pas."); + } + + public function update() + { + global $team; + + $team->setVideoTeamIds($this->other_teams); + } +} + +$other_teams = Team::getAllTeams($team->getProblem()); $documents = Document::getAllDocuments($team->getProblem(), $team->getId()); require_once "server_files/views/equipe.php"; diff --git a/server_files/controllers/probleme.php b/server_files/controllers/probleme.php index c06aa02..383b3c7 100644 --- a/server_files/controllers/probleme.php +++ b/server_files/controllers/probleme.php @@ -11,112 +11,6 @@ if (isset($_GET["modifier"]) && $_SESSION["role"] != Role::ADMIN) $has_error = false; $error_message = null; -if (isset($_POST["edit_tournament"])) { - $update_tournament = new UpdateTournament($_POST); - try { - $update_tournament->makeVerifications(); - $update_tournament->updateTournament(); - } catch (AssertionError $e) { - $has_error = true; - $error_message = $e->getMessage(); - } -} - -$teams = []; //$tournament->getAllTeams(); - -class UpdateTournament -{ - public $name; - public $organizers; - public $size; - public $place; - public $price; - public $date_start; - public $date_end; - public $date_inscription; - public $time_inscription; - public $date_solutions; - public $time_solutions; - public $date_syntheses; - public $time_syntheses; - public $description; - public $final; - - public function __construct($data) - { - global $tournament; - - foreach ($data as $key => $value) - $this->$key = ($key == "organizers" ? $value : htmlspecialchars($value)); - - if ($_SESSION["role"] != Role::ADMIN) { - $this->organizers = []; - /** @var User $organizer */ - foreach ($tournament->getOrganizers() as $organizer) - $this->organizers[] = $organizer->getId(); - } - } - - public function makeVerifications() - { - global $tournament; - - ensure($this->name != null && $this->name != "", "Le nom est invalide."); - ensure($this->name == $tournament->getName() || !tournamentExists($this->name), "Un tournoi existe déjà avec ce nom."); - ensure(sizeof($this->organizers) > 0, "Aucun organisateur n'a été choisi."); - - $orgas = []; - foreach ($this->organizers as $orga_id) { - $orga = User::fromId($orga_id); - ensure($orga != null, "Un organisateur spécifié n'existe pas."); - ensure($orga->getRole() == Role::ORGANIZER || $orga->getRole() == Role::ADMIN, "Une personne indiquée ne peut pas organiser de tournoi."); - $orgas[] = $orga; - } - $this->organizers = $orgas; - - ensure(preg_match("#[0-9]*#", $this->size), "Le nombre d'équipes indiqué n'est pas un nombre valide."); - $this->size = intval($this->size); - ensure($this->size >= 3 && $this->size <= 15, "Un tournoi doit avoir au moins 3 et au plus 15 équipes."); - - ensure(preg_match("#[0-9]*#", $this->price), "Le tarif pour les participants n'est pas un entier valide."); - $this->price = intval($this->price); - ensure($this->price >= 0, "Le TFJM² ne va pas payer les élèves pour venir."); - ensure($this->price <= 50, "Soyons raisonnable sur le prix."); - - ensure(dateWellFormed($this->date_start), "La date de début n'est pas valide."); - ensure(dateWellFormed($this->date_end), "La date de fin n'est pas valide."); - ensure(dateWellFormed($this->date_inscription . " " . $this->time_inscription), "La date de clôture des inscriptions n'est pas valide."); - ensure(dateWellFormed($this->date_solutions . " " . $this->time_solutions), "La date limite de remise des solutions n'est pas valide."); - ensure(dateWellFormed($this->date_syntheses . " " . $this->time_syntheses), "La date limite de remise des notes de synthèse n'est pas valide."); - } - - public function updateTournament() - { - global $URL_BASE, $tournament; - - $tournament->setName($this->name); - $tournament->setSize($this->size); - $tournament->setPlace($this->place); - $tournament->setPrice($this->price); - $tournament->setStartDate($this->date_start); - $tournament->setEndDate($this->date_end); - $tournament->setInscriptionDate("$this->date_inscription $this->time_inscription"); - $tournament->setSolutionsDate("$this->date_solutions $this->time_solutions"); - $tournament->setSynthesesDate("$this->date_syntheses $this->time_syntheses"); - - foreach ($this->organizers as $organizer) { - if (!$tournament->organize($organizer->getId())) - Mailer::sendAddOrganizerForTournamentMail($organizer, $tournament); - } - - $tournament->clearOrganizers(); - /** @var User $organizer */ - foreach ($this->organizers as $organizer) - $tournament->addOrganizer($organizer); - - header("Location: $URL_BASE/tournoi/" . $this->name); - exit(); - } -} +$teams = Team::getAllTeams($problem); require_once "server_files/views/probleme.php"; diff --git a/server_files/views/ajouter_admin.php b/server_files/views/ajouter_admin.php index d256b78..d4f2ac4 100644 --- a/server_files/views/ajouter_admin.php +++ b/server_files/views/ajouter_admin.php @@ -1,12 +1,8 @@ Erreur : " . $error_message . ""; - } else { - echo "

Organisateur ajouté avec succès ! Ses identifiants ont été transmis par mail.

"; - } +if (isset($admin) && !$has_error) { + echo "

Organisateur ajouté avec succès ! Ses identifiants ont été transmis par mail.

"; } ?>
diff --git a/server_files/views/ajouter_equipe.php b/server_files/views/ajouter_equipe.php index 601f4a6..094e044 100644 --- a/server_files/views/ajouter_equipe.php +++ b/server_files/views/ajouter_equipe.php @@ -9,8 +9,6 @@ if (isset($new_team) && !$has_error) { ?>

La date limite d'inscription est dépassée.

-Erreur : " . $error_message . ""; ?> - diff --git a/server_files/views/connexion.php b/server_files/views/connexion.php index eb017a4..e35dcbe 100644 --- a/server_files/views/connexion.php +++ b/server_files/views/connexion.php @@ -1,9 +1,7 @@ Erreur : " . $error_message . ""; -else { +if (!$has_error) { if (isset($recuperate_account)) echo "

Le mail de récupération de mot de passe a bien été envoyé.

"; elseif (isset($reset_password)) diff --git a/server_files/views/envoyer_video.php b/server_files/views/envoyer_video.php index eec76b7..f5bee89 100644 --- a/server_files/views/envoyer_video.php +++ b/server_files/views/envoyer_video.php @@ -2,9 +2,7 @@ require_once "header.php"; -if ($has_error) - echo "

Erreur : $error_message

"; -elseif (isset($new_video)) +if (isset($new_video) && !$has_error) echo "

Votre vidéo a bien été envoyée !

"; ?> diff --git a/server_files/views/equipe.php b/server_files/views/equipe.php index 1b2c857..e7dde16 100644 --- a/server_files/views/equipe.php +++ b/server_files/views/equipe.php @@ -20,6 +20,28 @@ for ($i = 1; $i <= 5; ++$i) { } ?> + +
+ + + + + + +

Autorisations

@@ -31,6 +53,7 @@ for ($i = 1; $i <= 5; ++$i) { getValidationStatus() == ValidationStatus::WAITING && $_SESSION["role"] == Role::ADMIN) { ?> +
diff --git a/server_files/views/header.php b/server_files/views/header.php index 5ff89a2..152490f 100644 --- a/server_files/views/header.php +++ b/server_files/views/header.php @@ -9,16 +9,20 @@ - + - + - + - + @@ -54,7 +58,7 @@ getValidationStatus() == ValidationStatus::VALIDATED) { switch (Phase::getCurrentPhase()) { case Phase::PHASE1: ?> -
  • Envoyer ma vidéo (phase 1)
  • +
  • Envoyer ma vidéo (phase 1)
  • @@ -82,4 +86,8 @@
    -
    \ No newline at end of file +
    +Erreur : " . $error_message . ""; +} \ No newline at end of file diff --git a/server_files/views/inscription.php b/server_files/views/inscription.php index f9f104b..ab86dfc 100644 --- a/server_files/views/inscription.php +++ b/server_files/views/inscription.php @@ -1,11 +1,6 @@ Erreur : " . $error_message . ""; -?> - - diff --git a/server_files/views/mon_compte.php b/server_files/views/mon_compte.php index 2b985c9..87a5474 100644 --- a/server_files/views/mon_compte.php +++ b/server_files/views/mon_compte.php @@ -1,10 +1,7 @@ Erreur : " . $error_message . ""; - -elseif (isset($my_account) || isset($new_password)) { +if (!$has_error && (isset($my_account) || isset($new_password))) { ?>

    Votre compte a bien été mis à jour !

    Erreur : " . $error_message . ""; -elseif (isset($send_document)) +if (!$has_error && isset($send_document)) echo "

    Le fichier a été correctement envoyé !

    "; ?> diff --git a/server_files/views/probleme.php b/server_files/views/probleme.php index f9bc6d3..8493b28 100644 --- a/server_files/views/probleme.php +++ b/server_files/views/probleme.php @@ -7,185 +7,67 @@ if ($has_error)

    Problème n°

    - - Éditer le tournoi - +
    - -
    - -

    Équipes inscrites pour ce problème :

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Équipe - - Trigramme - - Date d'inscription - - État de validation de l'inscription -
    - getTrigram() . "\">" . $team->getName(). ""; - else - echo $team->getName(); - ?> - getTrigram() ?>getInscriptionDate()) ?>getValidationStatus()) ?>
    - Équipe - - Trigramme - - Date d'inscription - - État de validation de l'inscription -
    +

    Équipes inscrites pour ce problème :

    + + + + + + + + + + + + + + + + + - - -
    + Équipe + + Trigramme + + Date d'inscription + + État de validation de l'inscription +
    + getTrigram() . "\">" . $team->getName() . ""; + else + echo $team->getName(); + ?> + getTrigram() ?>getInscriptionDate()) ?>getValidationStatus()) ?>
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - Du - au -
    - - - - -
    - - - - -
    - - - - -
    - - - -
    - -
    - - + + + + + Équipe + + + Trigramme + + + Date d'inscription + + + État de validation de l'inscription + + + + diff --git a/server_files/views/videos_solutions.php b/server_files/views/videos_solutions.php index bd8eced..8c09fc7 100644 --- a/server_files/views/videos_solutions.php +++ b/server_files/views/videos_solutions.php @@ -2,10 +2,6 @@ require_once "header.php"; -if ($has_error) { - echo "

    Erreur : $error_message

    "; -} - for ($problem = 1; $problem <= 4; ++$problem) { echo "

    Vidéos pour le problème $problem

    \n"; /** @var Video $video */