1
0
mirror of https://gitlab.com/animath/si/plateforme-corres2math.git synced 2025-01-05 23:42:21 +00:00

Diffusion des vidéos

This commit is contained in:
galaxyoyo 2019-09-24 10:08:53 +02:00
parent 061e83fd58
commit 32e47f73f3
10 changed files with 56 additions and 26 deletions

View File

@ -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"];

View File

@ -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;

View File

@ -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());

View File

@ -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.");
}

View File

@ -5,14 +5,16 @@
<title>Vidéo acceptée Correspondances des Jeunes Mathématicien·ne·s {YEAR}</title>
</head>
<body>
Bonjour {FIRST_NAME} {SURNAME},<br/>
<br/>
Bonjour {FIRST_NAME} {SURNAME},<br />
<br />
Félicitations, votre vidéo de réponse pour le problème {PROBLEM} a été validée ! Pour rappel, vous aviez soumis ce lien : <a href="{VIDEO_LINK}">{VIDEO_LINK}</a>.<br />
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.<br />
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.<br />
<br/>
Cordialement,<br/>
<br/>
<br />
N'oubliez pas de contrôler que les paramètres de diffusion de vidéo sont cohérents avec ce que vous souhaitez : <a href="{URL_BASE}/mon-equipe">{URL_BASE}/mon-equipe</a><br />
<br />
Cordialement,<br />
<br />
Le comité d'organisation des Correspondances des Jeunes Mathématicien·ne·s
</body>
</html>

View File

@ -5,14 +5,16 @@
<title>Vidéo acceptée Correspondances des Jeunes Mathématicien·ne·s {YEAR}</title>
</head>
<body>
Bonjour {FIRST_NAME} {SURNAME},<br/>
Bonjour {FIRST_NAME} {SURNAME},<br />
<br/>
Félicitations, votre vidéo pour le problème {PROBLEM} a été validée ! Pour rappel, vous aviez soumis ce lien : <a href="{VIDEO_LINK}">{VIDEO_LINK}</a>.<br />
Votre travail est à présent terminé, et vous pouvez attendre les prochaines phases. Bravo à vous !<br />
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.<br />
<br/>
Cordialement,<br/>
<br/>
<br />
N'oubliez pas de contrôler que les paramètres de diffusion de vidéo sont cohérents avec ce que vous souhaitez : <a href="{URL_BASE}/mon-equipe">{URL_BASE}/mon-equipe</a><br />
<br />
Cordialement,<br />
<br />
Le comité d'organisation des Correspondances des Jeunes Mathématicien·ne·s
</body>
</html>

View File

@ -42,6 +42,12 @@ if (isset($new_team) && !$has_error) { ?>
</select>
</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2">
<input type="checkbox" id="allow_publish" name="allow_publish" />
<label for="allow_publish">J'accepte qu'Animath diffuse mes vidéos à la fin du tournoi (<em>facultatif</em>)</label>
</td>
</tr>
<tr>
<td colspan="2">
<input style="width: 100%;" type="submit" value="Ajouter une équipe" />

View File

@ -19,6 +19,7 @@ for ($i = 1; $i <= 5; ++$i) {
echo "Participant $i : <a href=\"$URL_BASE/informations/$id/" . $participant->getFirstName() . " " . $participant->getSurname() . "\">" . $participant->getFirstName() . " " . $participant->getSurname() . "</a><br />";
}
?>
Autorise Animath à diffuser les vidéos : <?= $team->allowPublish() ? "oui" : "non" ?>
<?php
if ($_SESSION["role"] == Role::ADMIN) { ?>

View File

@ -9,7 +9,7 @@ if (!$has_error && isset($send_document))
Nom de l'équipe : <?= $team->getName() ?><br/>
Trigramme : <?= $team->getTrigram() ?><br/>
Problème : <a href=""><?= $team->getProblem() ?></a><br/>
Problème : <a href="/probleme/<?= $team->getProblem() ?>"><?= $team->getProblem() ?></a><br/>
<?php
if ($team->getEncadrantId() !== null) {
$encadrant = User::fromId($team->getEncadrantId());
@ -25,7 +25,9 @@ for ($i = 1; $i <= 5; ++$i) {
}
?>
Code d'accès : <strong><?= $team->getAccessCode() ?></strong><br/>
Code d'accès : <strong><?= $team->getAccessCode() ?></strong><br />
<!--suppress HtmlUnknownTarget -->
Autorise Animath à diffuser mes vidéos : <?= $team->allowPublish() ? "oui" : "non" ?> (<a href="/mon-equipe/diffusion-videos">changer</a>)<br />
<?php if (date("Y-m-d H:i:s") >= $CONFIG->getInscriptionDate() && $team->getValidationStatus() == ValidationStatus::NOT_READY) { ?>
<strong>La date limite d'inscription est dépassée, vous ne pouvez plus demander la validation de votre équipe.</strong>
@ -77,7 +79,7 @@ for ($i = 1; $i <= 5; ++$i) {
<?php } else { ?>
<?php if ($_SESSION["team_validation_status"] == ValidationStatus::NOT_READY) { ?>
<?php if ($team->getValidationStatus() == ValidationStatus::NOT_READY && date("Y-m-d H:i:s") <= $CONFIG->getInscriptionDate()) { ?>
<!--suppress HtmlUnknownTarget -->
<a href="/mon-equipe/modifier">Modifier mon équipe</a>
<?php } ?>
@ -92,16 +94,6 @@ for ($i = 1; $i <= 5; ++$i) {
<input type="hidden" name="type" value="photo_consent"/>
<table style="width: 100%;">
<tbody>
<?php /* <tr>
<td>
<label for="type">Type de document :</label>
</td>
<td>
<select style="width: 100%;" id="type" name="type">
<option value="photo_consent">Autorisation de droit à l'image</option>
</select>
</td>
</tr> */ ?>
<tr>
<td>
<label for="file">Fichier :</label>

View File

@ -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,