mirror of
https://gitlab.com/animath/si/plateforme-corres2math.git
synced 2025-02-06 12:13:01 +00:00
Flexibilité sur la validation des vidéos accrue
This commit is contained in:
parent
1e67b8569d
commit
5372350f46
@ -16,6 +16,7 @@ class User
|
|||||||
private $confirm_email;
|
private $confirm_email;
|
||||||
private $forgotten_password;
|
private $forgotten_password;
|
||||||
private $inscription_date;
|
private $inscription_date;
|
||||||
|
private $receive_animath_mails;
|
||||||
|
|
||||||
private function __construct() {}
|
private function __construct() {}
|
||||||
|
|
||||||
@ -49,6 +50,21 @@ class User
|
|||||||
return $user;
|
return $user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getAdmins()
|
||||||
|
{
|
||||||
|
global $DB, $YEAR;
|
||||||
|
$admins = [];
|
||||||
|
$req = $DB->query("SELECT * FROM `users` WHERE `year` = $YEAR;");
|
||||||
|
|
||||||
|
while (($data = $req->fetch()) !== false) {
|
||||||
|
$admin = new User();
|
||||||
|
$admin->fill($data);
|
||||||
|
$admins[] = $admin;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $admins;
|
||||||
|
}
|
||||||
|
|
||||||
private function fill($data)
|
private function fill($data)
|
||||||
{
|
{
|
||||||
$this->id = $data["id"];
|
$this->id = $data["id"];
|
||||||
@ -65,6 +81,7 @@ class User
|
|||||||
$this->confirm_email = $data["confirm_email"];
|
$this->confirm_email = $data["confirm_email"];
|
||||||
$this->forgotten_password = $data["forgotten_password"];
|
$this->forgotten_password = $data["forgotten_password"];
|
||||||
$this->inscription_date = $data["inscription_date"];
|
$this->inscription_date = $data["inscription_date"];
|
||||||
|
$this->receive_animath_mails = $data["receive_animath_mails"];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getEmail()
|
public function getEmail()
|
||||||
@ -170,7 +187,6 @@ class User
|
|||||||
{
|
{
|
||||||
global $DB;
|
global $DB;
|
||||||
$this->role = $role;
|
$this->role = $role;
|
||||||
/** @noinspection PhpUndefinedMethodInspection */
|
|
||||||
$DB->prepare("UPDATE `users` SET `role` = ? WHERE `id` = ?;")->execute([Role::getName($role), $this->getId()]);
|
$DB->prepare("UPDATE `users` SET `role` = ? WHERE `id` = ?;")->execute([Role::getName($role), $this->getId()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -215,6 +231,18 @@ class User
|
|||||||
return $this->inscription_date;
|
return $this->inscription_date;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function doReceiveAnimathMails()
|
||||||
|
{
|
||||||
|
return $this->receive_animath_mails;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setReceiveAnimathMails($receive_animath_mails)
|
||||||
|
{
|
||||||
|
global $DB;
|
||||||
|
$this->receive_animath_mails = $receive_animath_mails;
|
||||||
|
$DB->prepare("UPDATE `users` SET `receive_animath_mails` = ? WHERE `id` = ?;")->execute([$receive_animath_mails, $this->getId()]);
|
||||||
|
}
|
||||||
|
|
||||||
public function getAllDocuments($problem)
|
public function getAllDocuments($problem)
|
||||||
{
|
{
|
||||||
global $DB;
|
global $DB;
|
||||||
|
@ -3,11 +3,16 @@
|
|||||||
|
|
||||||
class Video
|
class Video
|
||||||
{
|
{
|
||||||
|
const NOT_CONTROLLED = 0;
|
||||||
|
const REJECTED = -1;
|
||||||
|
const ACCEPTED = 1;
|
||||||
|
|
||||||
private $id;
|
private $id;
|
||||||
private $team;
|
private $team;
|
||||||
private $problem;
|
private $problem;
|
||||||
private $link;
|
private $link;
|
||||||
private $reason;
|
private $reason;
|
||||||
|
private $validation;
|
||||||
private $uploaded_at;
|
private $uploaded_at;
|
||||||
private $year;
|
private $year;
|
||||||
private $version;
|
private $version;
|
||||||
@ -29,14 +34,16 @@ class Video
|
|||||||
return $video;
|
return $video;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getVideos($reason, $problem, $team_id = -1)
|
public static function getVideos($reason, $problem, $validation_min = -1, $team_id = -1)
|
||||||
{
|
{
|
||||||
global $DB;
|
global $DB, $YEAR;
|
||||||
$req = $DB->query("SELECT * FROM `videos` AS `t1` "
|
$req = $DB->query("SELECT * FROM `videos` AS `t1` "
|
||||||
. "INNER JOIN (SELECT `team`, `problem`, `reason`, MAX(`uploaded_at`) AS `last_upload`, COUNT(`team`) AS `version` FROM `videos` GROUP BY `problem`, `reason`, `team`) `t2` "
|
. "INNER JOIN (SELECT `team`, `problem`, `reason`, MAX(`uploaded_at`) AS `last_upload`, COUNT(`team`) AS `version` FROM `videos` "
|
||||||
|
. "WHERE `validation` >= $validation_min AND `year` = $YEAR GROUP BY `problem`, `reason`, `team`) `t2` "
|
||||||
. "ON `t1`.`team` = `t2`.`team` AND `t1`.`reason` = `t2`.`reason` AND `t1`.`problem` = `t2`.`problem` "
|
. "ON `t1`.`team` = `t2`.`team` AND `t1`.`reason` = `t2`.`reason` AND `t1`.`problem` = `t2`.`problem` "
|
||||||
. "WHERE `t1`.`uploaded_at` = `t2`.`last_upload` AND `t1`.`problem` = $problem AND `t1`.`reason` = '" . Reason::getName($reason) . "'"
|
. "WHERE `t1`.`uploaded_at` = `t2`.`last_upload` AND `t1`.`problem` = $problem AND `t1`.`reason` = '" . Reason::getName($reason) . "'"
|
||||||
. ($team_id >= 0 ? " AND `t1`.`team` = $team_id" : "") . " ORDER BY `t1`.`problem`, `t1`.`reason`;");
|
. ($team_id >= 0 ? " AND `t1`.`team` = $team_id" : "")
|
||||||
|
. " AND `validation` >= $validation_min AND `year` = $YEAR ORDER BY `t1`.`problem`, `t1`.`reason`;");
|
||||||
|
|
||||||
$videos = [];
|
$videos = [];
|
||||||
|
|
||||||
@ -52,10 +59,11 @@ class Video
|
|||||||
/**
|
/**
|
||||||
* @param int $reason
|
* @param int $reason
|
||||||
* @param Team $team
|
* @param Team $team
|
||||||
|
* @param int $validation_min
|
||||||
* @return Video|null
|
* @return Video|null
|
||||||
*/
|
*/
|
||||||
public static function getVideo($reason, Team $team) {
|
public static function getVideo($reason, Team $team, $validation_min = -1) {
|
||||||
$videos = self::getVideos($reason, $team->getProblem(), $team->getId());
|
$videos = self::getVideos($reason, $team->getProblem(), $validation_min, $team->getId());
|
||||||
if (sizeof($videos) == 0)
|
if (sizeof($videos) == 0)
|
||||||
return null;
|
return null;
|
||||||
else
|
else
|
||||||
@ -95,6 +103,18 @@ class Video
|
|||||||
return $this->reason;
|
return $this->reason;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getValidation()
|
||||||
|
{
|
||||||
|
return $this->validation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setValidation($validation)
|
||||||
|
{
|
||||||
|
global $DB;
|
||||||
|
$this->validation = $validation;
|
||||||
|
$DB->exec("UPDATE `videos` SET `validation` = $validation WHERE `id` = $this->id;");
|
||||||
|
}
|
||||||
|
|
||||||
public function getUploadedAt()
|
public function getUploadedAt()
|
||||||
{
|
{
|
||||||
return $this->uploaded_at;
|
return $this->uploaded_at;
|
||||||
|
@ -22,17 +22,22 @@ if (isset($_POST["upload"])) {
|
|||||||
|
|
||||||
class NewVideo
|
class NewVideo
|
||||||
{
|
{
|
||||||
private $link;
|
public $link;
|
||||||
|
private $valid_link;
|
||||||
|
private $no_change;
|
||||||
|
|
||||||
public function __construct($data)
|
public function __construct($data)
|
||||||
{
|
{
|
||||||
$this->link = $data["link"];
|
foreach ($data as $key => $value)
|
||||||
|
$this->$key = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function makeVerifications()
|
public function makeVerifications()
|
||||||
{
|
{
|
||||||
ensure(preg_match("#(https?\:\/\/|)[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?#", $this->link), "Ce n'est pas une URL valide.");
|
ensure(preg_match("#(https?\:\/\/|)[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?#", $this->link), "Ce n'est pas une URL valide.");
|
||||||
$this->link = preg_replace('/^(?!https?:\/\/)/', 'https://', $this->link);
|
$this->link = preg_replace('/^(?!https?:\/\/)/', 'https://', $this->link);
|
||||||
|
ensure($this->valid_link != null, "Vous devez confirmer que le lien est valide.");
|
||||||
|
ensure($this->no_change != null, "Vous devez vous engager à ne pas changer le contenu du lien et de la vidéo.");
|
||||||
}
|
}
|
||||||
|
|
||||||
public function uploadVideo()
|
public function uploadVideo()
|
||||||
@ -41,9 +46,12 @@ class NewVideo
|
|||||||
|
|
||||||
$req = $DB->prepare("INSERT INTO `videos`(`team`, `problem`, `link`, `reason`, `year`) VALUES (?, ?, ?, ?, ?)");
|
$req = $DB->prepare("INSERT INTO `videos`(`team`, `problem`, `link`, `reason`, `year`) VALUES (?, ?, ?, ?, ?)");
|
||||||
$req->execute([$team->getId(), $team->getProblem(), $this->link, "SOLUTION", $YEAR]);
|
$req->execute([$team->getId(), $team->getProblem(), $this->link, "SOLUTION", $YEAR]);
|
||||||
|
|
||||||
|
Mailer::sendNewVideo($this, $team);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$video = Video::getVideo(Reason::SOLUTION, $team);
|
$video = Video::getVideo(Reason::SOLUTION, $team);
|
||||||
|
$video_validated = Video::getVideo(Reason::SOLUTION, $team, Video::ACCEPTED);
|
||||||
|
|
||||||
require_once "server_files/views/envoyer_video.php";
|
require_once "server_files/views/envoyer_video.php";
|
@ -41,6 +41,7 @@ class MyAccount
|
|||||||
public $school;
|
public $school;
|
||||||
public $class;
|
public $class;
|
||||||
public $description;
|
public $description;
|
||||||
|
public $receive_animath_mails;
|
||||||
/** @var User */
|
/** @var User */
|
||||||
private $user;
|
private $user;
|
||||||
|
|
||||||
@ -65,6 +66,7 @@ class MyAccount
|
|||||||
ensure(filter_var($this->email, FILTER_VALIDATE_EMAIL), "L'adresse e-mail entrée est invalide.");
|
ensure(filter_var($this->email, FILTER_VALIDATE_EMAIL), "L'adresse e-mail entrée est invalide.");
|
||||||
$this->email = strtolower($this->email);
|
$this->email = strtolower($this->email);
|
||||||
ensure($this->email == $this->user->getEmail() || !userExists($this->email), "Un compte existe déjà avec cette adresse e-mail.");
|
ensure($this->email == $this->user->getEmail() || !userExists($this->email), "Un compte existe déjà avec cette adresse e-mail.");
|
||||||
|
$this->receive_animath_mails = $this->receive_animath_mails != false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateAccount()
|
public function updateAccount()
|
||||||
@ -74,6 +76,7 @@ class MyAccount
|
|||||||
$this->user->setSchool($this->school);
|
$this->user->setSchool($this->school);
|
||||||
$this->user->setClass($this->class);
|
$this->user->setClass($this->class);
|
||||||
$this->user->setDescription($this->description);
|
$this->user->setDescription($this->description);
|
||||||
|
$this->user->setReceiveAnimathMails($this->receive_animath_mails);
|
||||||
|
|
||||||
if ($this->email != $this->user->getEmail()) {
|
if ($this->email != $this->user->getEmail()) {
|
||||||
$this->user->setEmail($this->email);
|
$this->user->setEmail($this->email);
|
||||||
|
@ -3,9 +3,54 @@
|
|||||||
if (!isset($_SESSION["user_id"]) || $_SESSION["role"] != Role::ADMIN)
|
if (!isset($_SESSION["user_id"]) || $_SESSION["role"] != Role::ADMIN)
|
||||||
require_once "server_files/403.php";
|
require_once "server_files/403.php";
|
||||||
|
|
||||||
|
$has_error = false;
|
||||||
|
$error_message = null;
|
||||||
|
|
||||||
|
if (isset($_POST["validate_video"])) {
|
||||||
|
$validate_video = new ValidateVideo($_POST);
|
||||||
|
try {
|
||||||
|
$validate_video->makeVerifications();
|
||||||
|
$validate_video->validate();
|
||||||
|
}
|
||||||
|
catch (AssertionError $e) {
|
||||||
|
$has_error = true;
|
||||||
|
$error_message = $e->getMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ValidateVideo
|
||||||
|
{
|
||||||
|
private $video_id;
|
||||||
|
private $accept;
|
||||||
|
private $reject;
|
||||||
|
/** @var Video */
|
||||||
|
private $video;
|
||||||
|
|
||||||
|
public function __construct($data)
|
||||||
|
{
|
||||||
|
foreach ($data as $key => $value)
|
||||||
|
$this->$key = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function makeVerifications()
|
||||||
|
{
|
||||||
|
$this->video = Video::fromId($this->video_id);
|
||||||
|
ensure($this->video != null, "La vidéo n'existe pas.");
|
||||||
|
ensure($this->video->getValidation() == 0, "La vidéo est déjà validée / rejetée.");
|
||||||
|
ensure(($this->accept == null || $this->reject == null) && $this->accept != $this->reject, "Impossible de déterminer s'il faut accepter ou non la vidéo.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function validate()
|
||||||
|
{
|
||||||
|
$this->video->setValidation($this->accept ? 1 : -1);
|
||||||
|
Mailer::validateVideo($this->video);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$videos = [];
|
$videos = [];
|
||||||
|
|
||||||
for ($problem = 1; $problem <= 4; ++$problem)
|
for ($problem = 1; $problem <= 4; ++$problem)
|
||||||
$videos[] = Video::getVideos(Reason::SOLUTION, $problem);
|
$videos[] = Video::getVideos(Reason::SOLUTION, $problem);
|
||||||
|
|
||||||
|
|
||||||
require_once "server_files/views/videos_solutions.php";
|
require_once "server_files/views/videos_solutions.php";
|
@ -53,7 +53,7 @@ function quitTeam()
|
|||||||
/** @noinspection SqlResolve */
|
/** @noinspection SqlResolve */
|
||||||
$DB->exec("UPDATE `teams` SET `participant_$i` = NULL WHERE `participant_$i` = $user_id;");
|
$DB->exec("UPDATE `teams` SET `participant_$i` = NULL WHERE `participant_$i` = $user_id;");
|
||||||
else
|
else
|
||||||
$DB->exec("UPDATE `teams` SET `encadrant` = NULL WHERE `encadrant` = $user_id;");
|
$DB->exec("UPDATE `teams` SET `encadrant` = NULL WHERE `encadrant` = $user_id;");
|
||||||
$user->setTeamId(null);
|
$user->setTeamId(null);
|
||||||
for ($i = 1; $i <= 4; ++$i) {
|
for ($i = 1; $i <= 4; ++$i) {
|
||||||
/** @noinspection SqlResolve */
|
/** @noinspection SqlResolve */
|
||||||
@ -168,3 +168,11 @@ function getZipFile($problem, $team_id = -1)
|
|||||||
|
|
||||||
return $file_name;
|
return $file_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function displayVideo($link)
|
||||||
|
{
|
||||||
|
if (preg_match("#(https?\://|)(www\.|)youtube\.com\/watch\?v=(.*)#", $link, $matches)) {
|
||||||
|
$code = $matches[3];
|
||||||
|
echo "<center><iframe width=\"854px\" height=\"480px\" src=\"https://www.youtube.com/embed/$code\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe></center><br />\n";
|
||||||
|
}
|
||||||
|
}
|
@ -16,6 +16,40 @@ class Mailer
|
|||||||
ensure(mail($email, $subject, $content, $headers), "Un problème est survenu dans l'envoi d'un mail. Veuiller contacter votre administrateur.");
|
ensure(mail($email, $subject, $content, $headers), "Un problème est survenu dans l'envoi d'un mail. Veuiller contacter votre administrateur.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static function broadcastToTeam(Team $team, $subject, $content, $from = "contact")
|
||||||
|
{
|
||||||
|
$content = preg_replace("#{TEAM_NAME}#", $team->getName(), $content);
|
||||||
|
$content = preg_replace("#{TRIGRAM}#", $team->getTrigram(), $content);
|
||||||
|
|
||||||
|
$encadrant = User::fromId($team->getEncadrantId());
|
||||||
|
|
||||||
|
if ($encadrant != null) {
|
||||||
|
$c = preg_replace("#{FIRST_NAME}#", $encadrant->getFirstName(), $content);
|
||||||
|
$c = preg_replace("#{SURNAME}#", $encadrant->getSurname(), $c);
|
||||||
|
self::sendMail($encadrant->getEmail(), $subject, $c, $from);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($team->getParticipants() as $participant_id) {
|
||||||
|
$participant = User::fromId($participant_id);
|
||||||
|
if ($participant == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
$c = preg_replace("#{FIRST_NAME}#", $participant->getFirstName(), $content);
|
||||||
|
$c = preg_replace("#{SURNAME}#", $participant->getSurname(), $c);
|
||||||
|
self::sendMail($participant->getEmail(), $subject, $c, $from);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function broadcastToAdmins($subject, $content, $from = "contact")
|
||||||
|
{
|
||||||
|
/** @var User $admin */
|
||||||
|
foreach (User::getAdmins() as $admin) {
|
||||||
|
$c = preg_replace("#{FIRST_NAME}#", $admin->getFirstName(), $content);
|
||||||
|
$c = preg_replace("#{SURNAME}#", $admin->getSurname(), $c);
|
||||||
|
self::sendMail($admin->getEmail(), $subject, $c, $from);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static function getTemplate($name)
|
private static function getTemplate($name)
|
||||||
{
|
{
|
||||||
global $LOCAL_PATH;
|
global $LOCAL_PATH;
|
||||||
@ -115,4 +149,29 @@ class Mailer
|
|||||||
|
|
||||||
self::sendMail($user->getEmail(), "Équipe rejointe Correspondances des Jeunes Mathématicien·ne·s $YEAR", $content);
|
self::sendMail($user->getEmail(), "Équipe rejointe Correspondances des Jeunes Mathématicien·ne·s $YEAR", $content);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function sendNewVideo(NewVideo $video, Team $team)
|
||||||
|
{
|
||||||
|
global $YEAR;
|
||||||
|
|
||||||
|
$content = self::getTemplate("new_video");
|
||||||
|
$content = preg_replace("#{TEAM_NAME}#", $team->getName(), $content);
|
||||||
|
$content = preg_replace("#{TRIGRAM}#", $team->getTrigram(), $content);
|
||||||
|
$content = preg_replace("#{PROBLEM}#", $team->getProblem(), $content);
|
||||||
|
$content = preg_replace("#{VIDEO_LINK}#", $video->link, $content);
|
||||||
|
self::broadcastToAdmins("Nouvelle vidéo Correspondances des Jeunes Mathématicien·ne·s $YEAR", $content);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function validateVideo(Video $video)
|
||||||
|
{
|
||||||
|
global $YEAR;
|
||||||
|
|
||||||
|
$team = Team::fromId($video->getTeam());
|
||||||
|
|
||||||
|
$content = self::getTemplate($video->getValidation() == Video::ACCEPTED ? "video_accepted" : "video_rejected");
|
||||||
|
$content = preg_replace("#{TRIGRAM}#", $team->getTrigram(), $content);
|
||||||
|
$content = preg_replace("#{PROBLEM}#", $team->getProblem(), $content);
|
||||||
|
$content = preg_replace("#{VIDEO_LINK}#", $video->getLink(), $content);
|
||||||
|
self::broadcastToTeam($team, ($video->getValidation() == Video::REJECTED ? "Vidéo refusée " : "Vidéo acceptée ") . $team->getTrigram() . " – Correspondances des Jeunes Mathématicien·ne·s $YEAR", $content);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
18
server_files/services/mail_templates/new_video.html
Normal file
18
server_files/services/mail_templates/new_video.html
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Nouvelle vidéo – Correspondances des Jeunes Mathématicien·ne·s {YEAR}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
Bonjour {FIRST_NAME} {SURNAME},<br/>
|
||||||
|
<br/>
|
||||||
|
L'équipe « {TEAM_NAME} » ({TRIGRAM}) vient d'ajouter une vidéo pour le problème {PROBLEM} des Correspondances des Jeunes Mathématicien·ne·s : <a href="{VIDEO_LINK}">{VIDEO_LINK}</a>.
|
||||||
|
Vous êtes désormais invité avant que quelqu'un d'autre ne le fasse à accepter ou refuser cette vidéo via la plateforme d'inscription (accessible après connexion) :
|
||||||
|
<a href="{URL_BASE}/videos-solutions">{URL_BASE}/videos-solutions</a><br/>
|
||||||
|
<br/>
|
||||||
|
Cordialement,<br/>
|
||||||
|
<br/>
|
||||||
|
Le comité d'organisation des Correspondances des Jeunes Mathématicien·ne·s
|
||||||
|
</body>
|
||||||
|
</html>
|
18
server_files/services/mail_templates/video_accepted.html
Normal file
18
server_files/services/mail_templates/video_accepted.html
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Vidéo acceptée – Correspondances des Jeunes Mathématicien·ne·s {YEAR}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
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/>
|
||||||
|
Le comité d'organisation des Correspondances des Jeunes Mathématicien·ne·s
|
||||||
|
</body>
|
||||||
|
</html>
|
19
server_files/services/mail_templates/video_rejected.html
Normal file
19
server_files/services/mail_templates/video_rejected.html
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Vidéo refusée – Correspondances des Jeunes Mathématicien·ne·s {YEAR}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
Bonjour {FIRST_NAME} {SURNAME},<br/>
|
||||||
|
<br/>
|
||||||
|
Malheureusement, votre vidéo pour le problème {PROBLEM} n'a pas été validée. Pour rappel, vous aviez soumis ce lien : <a href="{VIDEO_LINK}">{VIDEO_LINK}</a>.<br />
|
||||||
|
Si vous aviez soumis une précédente vidéo qui a été validée, elle reste conservée.
|
||||||
|
Vous êtes désormais invités à retravailler vos résultats ou votre présentation orale afin que votre prestation soit validée par les organisateurs.
|
||||||
|
N'hésitez pas à nous contacter à <a href="mailto:contact@correspondances-maths.fr">contact@correspondances-maths.fr</a> si vous souhaitez avoir plus d'informations ou contester ce refus.
|
||||||
|
<br/>
|
||||||
|
Cordialement,<br/>
|
||||||
|
<br/>
|
||||||
|
Le comité d'organisation des Correspondances des Jeunes Mathématicien·ne·s
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -12,11 +12,24 @@ elseif (isset($new_video))
|
|||||||
if ($video !== null) {
|
if ($video !== null) {
|
||||||
$link = $video->getLink();
|
$link = $video->getLink();
|
||||||
echo "Lien de la vidéo déjà envoyée : <a href=\"$link\">$link</a> (version " . $video->getVersion() . ")<br />\n";
|
echo "Lien de la vidéo déjà envoyée : <a href=\"$link\">$link</a> (version " . $video->getVersion() . ")<br />\n";
|
||||||
if (preg_match("#(https?\://|)(www\.|)youtube\.com\/watch\?v=(.*)#", $link, $matches)) {
|
displayVideo($link);
|
||||||
$code = $matches[3];
|
switch ($video->getValidation()) {
|
||||||
echo "<center><iframe width=\"854px\" height=\"480px\" src=\"https://www.youtube.com/embed/$code\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe></center><br />\n";
|
case 0:
|
||||||
|
echo "La vidéo n'a pas encore été contrôlée.<br />";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
echo "La vidéo a été acceptée.<br />";
|
||||||
|
break;
|
||||||
|
case -1:
|
||||||
|
echo "La vidéo a été rejetée.<br />";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($video_validated != null && $video_validated->getId() != $video->getId()) {
|
||||||
|
$link = $video_validated->getLink();
|
||||||
|
echo "<hr />\nLien de la dernière vidéo validée : <a href=\"$link\">$link</a><br />";
|
||||||
|
displayVideo($link);
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<form method="POST">
|
<form method="POST">
|
||||||
@ -30,6 +43,16 @@ if ($video !== null) {
|
|||||||
<input style="width: 100%;" type="url" id="link" name="link" />
|
<input style="width: 100%;" type="url" id="link" name="link" />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: center;" colspan="2">
|
||||||
|
<input type="checkbox" name="valid_link" id="valid_link" required /> <label for="valid_link">Je confirme que le lien est valide</label>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: center;" colspan="2">
|
||||||
|
<input type="checkbox" name="no_change" id="no_change" required /> <label for="no_change">Je m'engage à ne pas changer le contenu du lien et de la vidéo</label>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2">
|
<td colspan="2">
|
||||||
<input style="width: 100%;" type="submit" name="upload" value="Envoyer la vidéo" />
|
<input style="width: 100%;" type="submit" name="upload" value="Envoyer la vidéo" />
|
||||||
|
@ -60,6 +60,9 @@ elseif (isset($my_account) || isset($new_password)) {
|
|||||||
<td><textarea style="width: 100%" id="description" name="description"><?= $user->getDescription() ?></textarea></td>
|
<td><textarea style="width: 100%" id="description" name="description"><?= $user->getDescription() ?></textarea></td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: center;" colspan="2"><input type="checkbox" id="receive_animath_mails" name="receive_animath_mails" <?= $user->doReceiveAnimathMails() ? "checked" : "" ?> /> <label for="receive_animath_mails">J'accepte de recevoir des mails de la part d'Animath</label></td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2"><input type="submit" style="width: 100%" value="Mettre à jour mes données"/></td>
|
<td colspan="2"><input type="submit" style="width: 100%" value="Mettre à jour mes données"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
require_once "header.php";
|
require_once "header.php";
|
||||||
|
|
||||||
|
if ($has_error) {
|
||||||
|
echo "<h2>Erreur : $error_message</h2>";
|
||||||
|
}
|
||||||
|
|
||||||
for ($problem = 1; $problem <= 4; ++$problem) {
|
for ($problem = 1; $problem <= 4; ++$problem) {
|
||||||
echo "<h2>Vidéos pour le problème $problem</h2>\n";
|
echo "<h2>Vidéos pour le problème $problem</h2>\n";
|
||||||
/** @var Video $video */
|
/** @var Video $video */
|
||||||
@ -9,10 +13,26 @@ for ($problem = 1; $problem <= 4; ++$problem) {
|
|||||||
$link = $video->getLink();
|
$link = $video->getLink();
|
||||||
$team = Team::fromId($video->getTeam());
|
$team = Team::fromId($video->getTeam());
|
||||||
$version = $video->getVersion();
|
$version = $video->getVersion();
|
||||||
echo "Vidéo de présentation de l'équipe « " . $team->getName() . " » (" . $team->getTrigram() . "), version $version : <a href=\"$link\">$link</a>\n";
|
echo "<h4>Vidéo de présentation de l'équipe « " . $team->getName() . " » (" . $team->getTrigram() . ") :</h4>\n";
|
||||||
if (preg_match("#(https?\://|)(www\.|)youtube\.com\/watch\?v=(.*)#", $link, $matches)) {
|
echo "Lien de la vidéo (version $version) : <a href=\"$link\">$link</a>";
|
||||||
$code = $matches[3];
|
displayVideo($link);
|
||||||
echo "<center><iframe width=\"854px\" height=\"480px\" src=\"https://www.youtube.com/embed/$code\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe></center><br />\n";
|
|
||||||
|
if ($video->getValidation() == 0) { ?>
|
||||||
|
<form method="POST">
|
||||||
|
<input type="hidden" name="validate_video" value="" />
|
||||||
|
<input type="hidden" name="video_id" value="<?= $video->getId() ?>" />
|
||||||
|
<input style="width: 49%;" type="submit" name="accept" value="Accepter la vidéo" />
|
||||||
|
<input style="width: 49%;" type="submit" name="reject" value="Refuser la vidéo" />
|
||||||
|
</form>
|
||||||
|
<?php }
|
||||||
|
else
|
||||||
|
echo "<h5>La vidéo a été " . ($video->getValidation() == 1 ? "acceptée" : "refusée") . ".</h5><br />\n";
|
||||||
|
|
||||||
|
if ($video->getValidation() != Video::ACCEPTED) {
|
||||||
|
$last_validated_video = Video::getVideo(Reason::SOLUTION, $team, Video::ACCEPTED);
|
||||||
|
$link = $last_validated_video->getLink();
|
||||||
|
echo "\nLien de la dernière vidéo validée de cette équipe : <a href=\"$link\">$link</a><br />\n";
|
||||||
|
displayVideo($link);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
echo "<hr />\n";
|
echo "<hr />\n";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user