From 32e47f73f3fff7352bb061c20d4700b2f9b3c04f Mon Sep 17 00:00:00 2001 From: galaxyoyo Date: Tue, 24 Sep 2019 10:08:53 +0200 Subject: [PATCH] =?UTF-8?q?Diffusion=20des=20vid=C3=A9os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dispatcher.php | 1 + server_files/classes/Team.php | 14 ++++++++++++++ server_files/controllers/ajouter_equipe.php | 9 ++++++--- server_files/controllers/mon_equipe.php | 10 +++++++++- .../mail_templates/video_accepted_answer.html | 12 +++++++----- .../video_accepted_solution.html | 10 ++++++---- server_files/views/ajouter_equipe.php | 6 ++++++ server_files/views/equipe.php | 1 + server_files/views/mon_equipe.php | 18 +++++------------- setup/create_database.sql | 1 + 10 files changed, 56 insertions(+), 26 deletions(-) diff --git a/dispatcher.php b/dispatcher.php index 1a7e57c..274617e 100644 --- a/dispatcher.php +++ b/dispatcher.php @@ -46,6 +46,7 @@ $ROUTES["^file/([a-z0-9]{64})/?$"] = ["server_files/controllers/view_file.php", $ROUTES["^informations/([0-9]*)/.*?$"] = ["server_files/controllers/informations.php", "id"]; $ROUTES["^inscription/?$"] = ["server_files/controllers/inscription.php"]; $ROUTES["^mon-compte/?$"] = ["server_files/controllers/mon_compte.php"]; +$ROUTES["^mon-equipe/(diffusion-videos)/?$"] = ["server_files/controllers/mon_equipe.php", "publish_videos"]; $ROUTES["^mon-equipe/(modifier)/?$"] = ["server_files/controllers/mon_equipe.php", "modifier"]; $ROUTES["^mon-equipe/?$"] = ["server_files/controllers/mon_equipe.php"]; $ROUTES["^poser-questions-2$"] = ["server_files/controllers/poser_questions.php"]; diff --git a/server_files/classes/Team.php b/server_files/classes/Team.php index 6ddfe70..d8ccf03 100644 --- a/server_files/classes/Team.php +++ b/server_files/classes/Team.php @@ -9,6 +9,7 @@ class Team private $encadrant; private $participants; private $inscription_date; + private $allow_publish; private $validation_status; private $video_team_ids; private $access_code; @@ -95,6 +96,7 @@ class Team $this->encadrant = $data["encadrant"]; $this->participants = [$data["participant_1"], $data["participant_2"], $data["participant_3"], $data["participant_4"], $data["participant_5"]]; $this->inscription_date = $data["inscription_date"]; + $this->allow_publish = $data["allow_publish"]; $this->validation_status = ValidationStatus::fromName($data["validation_status"]); $this->video_team_ids = [$data["video_team1"], $data["video_team2"]]; $this->access_code = $data["access_code"]; @@ -173,6 +175,18 @@ class Team return $this->inscription_date; } + public function allowPublish() + { + return $this->allow_publish; + } + + public function setAllowPublish($allow_publish) + { + global $DB; + $this->allow_publish = $allow_publish; + $DB->prepare("UPDATE `teams` SET `allow_publish` = ? WHERE `id` = ?;")->execute([$allow_publish ? 1 : 0, $this->id]); + } + public function getValidationStatus() { return $this->validation_status; diff --git a/server_files/controllers/ajouter_equipe.php b/server_files/controllers/ajouter_equipe.php index 74a7829..46d9226 100644 --- a/server_files/controllers/ajouter_equipe.php +++ b/server_files/controllers/ajouter_equipe.php @@ -22,6 +22,7 @@ class NewTeam { public $name; public $trigram; public $problem; + public $allow_publish; public $access_code; public function __construct($data) @@ -30,6 +31,8 @@ class NewTeam { $this->$key = htmlspecialchars($value); $this->trigram = strtoupper($this->trigram); + + $this->allow_publish = $this->allow_publish == "on"; } public function makeVerifications() { @@ -50,10 +53,10 @@ class NewTeam { $this->access_code = genRandomPhrase(6); - $req = $DB->prepare("INSERT INTO `teams` (`name`, `trigram`, `problem`, `encadrant`, `participant_1`, `validation_status`, `access_code`, `year`) - VALUES (?, ?, ?, ?, ?, ?, ?, ?);"); + $req = $DB->prepare("INSERT INTO `teams` (`name`, `trigram`, `problem`, `encadrant`, `participant_1`, `allow_publish`, `validation_status`, `access_code`, `year`) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);"); $req->execute([$this->name, $this->trigram, $this->problem, $_SESSION["role"] == Role::ENCADRANT ? $_SESSION["user_id"] : NULL, - $_SESSION["role"] == Role::PARTICIPANT ? $_SESSION["user_id"] : NULL, ValidationStatus::getName(ValidationStatus::NOT_READY), $this->access_code, $YEAR]); + $_SESSION["role"] == Role::PARTICIPANT ? $_SESSION["user_id"] : NULL, $this->allow_publish, ValidationStatus::getName(ValidationStatus::NOT_READY), $this->access_code, $YEAR]); $_SESSION["team"] = Team::fromTrigram($this->trigram); $_SESSION["user"]->setTeamId($_SESSION["team"]->getId()); diff --git a/server_files/controllers/mon_equipe.php b/server_files/controllers/mon_equipe.php index fcba0ef..8e446af 100644 --- a/server_files/controllers/mon_equipe.php +++ b/server_files/controllers/mon_equipe.php @@ -58,6 +58,12 @@ if (isset($_SESSION["user_id"]) && isset($_SESSION["team"]) && $_SESSION["team"] else require_once "server_files/403.php"; +if (isset($_GET["publish_videos"])) { + $team->setAllowPublish(!$team->allowPublish()); + header("Location: /mon-equipe"); + exit(); +} + class SendDocument { private $file; @@ -115,13 +121,15 @@ class MyTeam public function makeVerifications() { + global $CONFIG; + 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("#^[\p{L} ]+$#ui", $this->name), "Le nom de l'équipe ne doit pas comporter de caractères spéciaux."); 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(preg_match("#^[1-4]$#", $this->problem), "Le problème indiqué n'existe pas."); - // ensure(date("y-m-d H:i:s") <= $this->tournament->getInscriptionDate(), "Les inscriptions sont terminées."); + ensure(date("Y-m-d H:i:s") <= $CONFIG->getInscriptionDate(), "Les inscriptions sont terminées."); ensure($this->team->getValidationStatus() == ValidationStatus::NOT_READY, "Votre équipe est déjà validée ou en cours de validation."); } diff --git a/server_files/services/mail_templates/video_accepted_answer.html b/server_files/services/mail_templates/video_accepted_answer.html index 4ea80f9..de8c748 100644 --- a/server_files/services/mail_templates/video_accepted_answer.html +++ b/server_files/services/mail_templates/video_accepted_answer.html @@ -5,14 +5,16 @@ Vidéo acceptée – Correspondances des Jeunes Mathématicien·ne·s {YEAR} -Bonjour {FIRST_NAME} {SURNAME},
-
+Bonjour {FIRST_NAME} {SURNAME},
+
Félicitations, votre vidéo de réponse pour le problème {PROBLEM} a été validée ! Pour rappel, vous aviez soumis ce lien : {VIDEO_LINK}.
Vous avez à présent terminé l'aventure des Correspondances. Bravo à vous ! Nous vous recontacterons dans les prochains jours pour vous tenir au courant des résultats.
Si toutefois vous le souhaitez, vous pouvez à nouveau soumettre une vidéo avant la fin de la phase. Cette nouvelle vidéo ne remplacera l'actuelle qu'au moment de la validation de celle-ci.
-
-Cordialement,
-
+
+N'oubliez pas de contrôler que les paramètres de diffusion de vidéo sont cohérents avec ce que vous souhaitez : {URL_BASE}/mon-equipe
+
+Cordialement,
+
Le comité d'organisation des Correspondances des Jeunes Mathématicien·ne·s \ No newline at end of file diff --git a/server_files/services/mail_templates/video_accepted_solution.html b/server_files/services/mail_templates/video_accepted_solution.html index ca89729..e2463f9 100644 --- a/server_files/services/mail_templates/video_accepted_solution.html +++ b/server_files/services/mail_templates/video_accepted_solution.html @@ -5,14 +5,16 @@ Vidéo acceptée – Correspondances des Jeunes Mathématicien·ne·s {YEAR} -Bonjour {FIRST_NAME} {SURNAME},
+Bonjour {FIRST_NAME} {SURNAME},

Félicitations, votre vidéo pour le problème {PROBLEM} a été validée ! Pour rappel, vous aviez soumis ce lien : {VIDEO_LINK}.
Votre travail est à présent terminé, et vous pouvez attendre les prochaines phases. Bravo à vous !
Si toutefois vous le souhaitez, vous pouvez à nouveau soumettre une vidéo avant la fin de la phase. Cette nouvelle vidéo ne remplacera l'actuelle qu'au moment de la validation de celle-ci.
-
-Cordialement,
-
+
+N'oubliez pas de contrôler que les paramètres de diffusion de vidéo sont cohérents avec ce que vous souhaitez : {URL_BASE}/mon-equipe
+
+Cordialement,
+
Le comité d'organisation des Correspondances des Jeunes Mathématicien·ne·s \ No newline at end of file diff --git a/server_files/views/ajouter_equipe.php b/server_files/views/ajouter_equipe.php index 094e044..6b0ac82 100644 --- a/server_files/views/ajouter_equipe.php +++ b/server_files/views/ajouter_equipe.php @@ -42,6 +42,12 @@ if (isset($new_team) && !$has_error) { ?> + + + + + + diff --git a/server_files/views/equipe.php b/server_files/views/equipe.php index bfb8f63..bdd274a 100644 --- a/server_files/views/equipe.php +++ b/server_files/views/equipe.php @@ -19,6 +19,7 @@ for ($i = 1; $i <= 5; ++$i) { echo "Participant $i : getFirstName() . " " . $participant->getSurname() . "\">" . $participant->getFirstName() . " " . $participant->getSurname() . "
"; } ?> + Autorise Animath à diffuser les vidéos : allowPublish() ? "oui" : "non" ?> diff --git a/server_files/views/mon_equipe.php b/server_files/views/mon_equipe.php index d7f4c4b..1ced52a 100644 --- a/server_files/views/mon_equipe.php +++ b/server_files/views/mon_equipe.php @@ -9,7 +9,7 @@ if (!$has_error && isset($send_document)) Nom de l'équipe : getName() ?>
Trigramme : getTrigram() ?>
- Problème : getProblem() ?>
+ Problème : getProblem() ?>
getEncadrantId() !== null) { $encadrant = User::fromId($team->getEncadrantId()); @@ -25,7 +25,9 @@ for ($i = 1; $i <= 5; ++$i) { } ?> - Code d'accès : getAccessCode() ?>
+ Code d'accès : getAccessCode() ?>
+ + Autorise Animath à diffuser mes vidéos : allowPublish() ? "oui" : "non" ?> (changer)
= $CONFIG->getInscriptionDate() && $team->getValidationStatus() == ValidationStatus::NOT_READY) { ?> La date limite d'inscription est dépassée, vous ne pouvez plus demander la validation de votre équipe. @@ -77,7 +79,7 @@ for ($i = 1; $i <= 5; ++$i) { - + getValidationStatus() == ValidationStatus::NOT_READY && date("Y-m-d H:i:s") <= $CONFIG->getInscriptionDate()) { ?> Modifier mon équipe @@ -92,16 +94,6 @@ for ($i = 1; $i <= 5; ++$i) { - - - - */ ?>
- - - -
diff --git a/setup/create_database.sql b/setup/create_database.sql index 65c0cf4..2701fca 100644 --- a/setup/create_database.sql +++ b/setup/create_database.sql @@ -89,6 +89,7 @@ CREATE TABLE IF NOT EXISTS `teams` ( `participant_4` int(8) DEFAULT NULL, `participant_5` int(8) DEFAULT NULL, `inscription_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `allow_publish` tinyint(1) DEFAULT 0, `validation_status` varchar(64) NOT NULL, `video_team1` int(11) DEFAULT NULL, `video_team2` int(11) DEFAULT NULL,