1
0
mirror of https://gitlab.com/animath/si/plateforme-corres2math.git synced 2025-01-07 10:22:21 +00:00

Nombreuses petites corrections, ajout de texte.

Les Correspondances peuvent démarrer :)
This commit is contained in:
Yohann 2019-10-22 14:55:33 +02:00
parent 8adad9d5f7
commit 5c88ccb91a
32 changed files with 371 additions and 236 deletions

View File

@ -11,14 +11,19 @@ html, body {
min-height: 78%;
}
footer {
text-align: center;
}
.inner {
margin: 20px;
}
.alert {
text-align: justify;
}
footer .alert {
text-align: center;
}
#navbar-logo {
height: var(--navbar-height);
display: block;

View File

@ -68,7 +68,7 @@ class Question
ensure($from->getProblem() == $to->getProblem(), "Les deux équipes doivent travailler sur le même problème.");
$req = $DB->prepare("SELECT * FROM `questions` WHERE `from` = ? AND `to` = ? ORDER BY `from`;");
$req = $DB->prepare("SELECT * FROM `questions` WHERE `from` = ? AND `to` = ? ORDER BY `from`, `number`;");
$req->execute([$from->getId(), $to->getId()]);
$questions = [];
@ -80,9 +80,11 @@ class Question
}
if (sizeof($questions) == 0) {
for ($i = 0; $i < 6; ++$i) {
$req = $DB->prepare("INSERT INTO `questions`(`from`, `to`, `problem`, `number`, `question`) VALUES (?, ?, ?, ?, ?);");
$req->execute([$from->getId(), $to->getId(), $from->getProblem(), 0, ""]);
for ($i = 1; $i <= 6; ++$i) {
$req = $DB->prepare("INSERT INTO `questions`(`from`, `to`, `problem`, `number`, `question`) VALUES (?, ?, ?, ?, ?);");
$req->execute([$from->getId(), $to->getId(), $from->getProblem(), $i, self::DEFAULT_QUESTIONS[$i]]);
$req->execute([$from->getId(), $to->getId(), $from->getProblem(), $i, self::DEFAULT_QUESTIONS[$i - 1]]);
}
return self::getQuestions($from, $to);
}

View File

@ -5,30 +5,35 @@ class SchoolClass
const SECONDE = 0;
const PREMIERE = 1;
const TERMINALE = 2;
const ADULT = 3;
public static function getTranslatedName($class) {
switch ($class) {
case null:
return "Adulte";
case self::SECONDE:
return "Seconde ou inférieur";
case self::PREMIERE:
return "Première";
case self::TERMINALE:
return "Terminale";
case self::ADULT:
return "Adulte";
default:
return null;
}
}
public static function getName($class) {
switch ($class) {
case null:
return null;
case self::SECONDE:
return "SECONDE";
case self::PREMIERE:
return "PREMIERE";
case self::TERMINALE:
return "TERMINALE";
case self::ADULT:
return "ADULT";
default:
return null;
}
}
@ -40,6 +45,8 @@ class SchoolClass
return self::PREMIERE;
case "TERMINALE":
return self::TERMINALE;
case "ADULT":
return self::ADULT;
default:
return null;
}

View File

@ -43,27 +43,32 @@ class Config
public function initDB()
{
global $DB, $LOCAL_PATH;
global $DB, $LOCAL_PATH, $YEAR;
$index_template_page = htmlspecialchars(file_get_contents($LOCAL_PATH . "/server_files/views/index.html"));
$DB->exec("SET GLOBAL time_zone = 'Europe/Paris';");
$DB->prepare("INSERT IGNORE INTO `config` VALUES ('inscription_date', CURRENT_TIMESTAMP + INTERVAL 2 DAY),
('start_phase1_date', CURRENT_TIMESTAMP + INTERVAL 1 DAY), ('end_phase1_date', CURRENT_TIMESTAMP + INTERVAL 3 DAY),
('start_phase2_date', CURRENT_TIMESTAMP + INTERVAL 4 DAY), ('end_phase2_date', CURRENT_TIMESTAMP + INTERVAL 5 DAY),
('start_phase3_date', CURRENT_TIMESTAMP + INTERVAL 6 DAY), ('end_phase3_date', CURRENT_TIMESTAMP + INTERVAL 7 DAY),
('start_phase4_date', CURRENT_TIMESTAMP + INTERVAL 8 DAY), ('end_phase4_date', CURRENT_TIMESTAMP + INTERVAL 9 DAY),
('index_page', ?);")->execute([$index_template_page]);
$DB->prepare("INSERT IGNORE INTO `config`(`key`, `value`)
VALUES ('inscription_date_$YEAR', CURRENT_TIMESTAMP + INTERVAL 2 DAY),
('start_phase1_date_$YEAR', CURRENT_TIMESTAMP + INTERVAL 1 DAY),
('end_phase1_date_$YEAR', CURRENT_TIMESTAMP + INTERVAL 3 DAY),
('start_phase2_date_$YEAR', CURRENT_TIMESTAMP + INTERVAL 4 DAY),
('end_phase2_date_$YEAR', CURRENT_TIMESTAMP + INTERVAL 5 DAY),
('start_phase3_date_$YEAR', CURRENT_TIMESTAMP + INTERVAL 6 DAY),
('end_phase3_date_$YEAR', CURRENT_TIMESTAMP + INTERVAL 7 DAY),
('start_phase4_date_$YEAR', CURRENT_TIMESTAMP + INTERVAL 8 DAY),
('end_phase4_date_$YEAR', CURRENT_TIMESTAMP + INTERVAL 9 DAY),
('index_page_$YEAR', ?);")->execute([$index_template_page]);
}
public function loadConfigValues()
{
global $DB;
global $DB, $YEAR;
$req = $DB->query("SELECT * FROM `config`;");
$req = $DB->query("SELECT * FROM `config` WHERE `key` REGEXP '$YEAR';");
while (($data = $req->fetch()) !== false) {
$key = $data["key"];
$key = substr($data["key"], 0, -5);
$this->$key = $data["value"];
}
}
@ -75,8 +80,8 @@ class Config
public function setInscriptionDate($inscription_date)
{
global $DB;
$DB->exec("UPDATE `config` SET `value` = '$inscription_date' WHERE `key` = 'inscription_date';");
global $DB, $YEAR;
$DB->exec("UPDATE `config` SET `value` = '$inscription_date' WHERE `key` = 'inscription_date_$YEAR'");
$this->inscription_date = $inscription_date;
}
@ -88,8 +93,8 @@ class Config
public function setStartPhase1Date($start_phase1_date)
{
global $DB;
$DB->exec("UPDATE `config` SET `value` = '$start_phase1_date' WHERE `key` = 'start_phase1_date';");
global $DB, $YEAR;
$DB->exec("UPDATE `config` SET `value` = '$start_phase1_date' WHERE `key` = 'start_phase1_date_$YEAR'");
$this->start_phase1_date = $start_phase1_date;
}
@ -101,8 +106,8 @@ class Config
public function setEndPhase1Date($end_phase1_date)
{
global $DB;
$DB->exec("UPDATE `config` SET `value` = '$end_phase1_date' WHERE `key` = 'end_phase1_date';");
global $DB, $YEAR;
$DB->exec("UPDATE `config` SET `value` = '$end_phase1_date' WHERE `key` = 'end_phase1_date_$YEAR'");
$this->end_phase1_date = $end_phase1_date;
}
@ -114,8 +119,8 @@ class Config
public function setStartPhase2Date($start_phase2_date)
{
global $DB;
$DB->exec("UPDATE `config` SET `value` = '$start_phase2_date' WHERE `key` = 'start_phase2_date';");
global $DB, $YEAR;
$DB->exec("UPDATE `config` SET `value` = '$start_phase2_date' WHERE `key` = 'start_phase2_date_$YEAR'");
$this->start_phase2_date = $start_phase2_date;
}
@ -127,8 +132,8 @@ class Config
public function setEndPhase2Date($end_phase2_date)
{
global $DB;
$DB->exec("UPDATE `config` SET `value` = '$end_phase2_date' WHERE `key` = 'end_phase2_date';");
global $DB, $YEAR;
$DB->exec("UPDATE `config` SET `value` = '$end_phase2_date' WHERE `key` = 'end_phase2_date_$YEAR'");
$this->end_phase2_date = $end_phase2_date;
}
@ -140,8 +145,8 @@ class Config
public function setStartPhase3Date($start_phase3_date)
{
global $DB;
$DB->exec("UPDATE `config` SET `value` = '$start_phase3_date' WHERE `key` = 'start_phase3_date';");
global $DB, $YEAR;
$DB->exec("UPDATE `config` SET `value` = '$start_phase3_date' WHERE `key` = 'start_phase3_date_$YEAR'");
$this->start_phase3_date = $start_phase3_date;
}
@ -153,8 +158,8 @@ class Config
public function setEndPhase3Date($end_phase3_date)
{
global $DB;
$DB->exec("UPDATE `config` SET `value` = '$end_phase3_date' WHERE `key` = 'end_phase3_date';");
global $DB, $YEAR;
$DB->exec("UPDATE `config` SET `value` = '$end_phase3_date' WHERE `key` = 'end_phase3_date_$YEAR'");
$this->end_phase3_date = $end_phase3_date;
}
@ -166,8 +171,8 @@ class Config
public function setStartPhase4Date($start_phase4_date)
{
global $DB;
$DB->exec("UPDATE `config` SET `value` = '$start_phase4_date' WHERE `key` = 'start_phase4_date';");
global $DB, $YEAR;
$DB->exec("UPDATE `config` SET `value` = '$start_phase4_date' WHERE `key` = 'start_phase4_date_$YEAR'");
$this->start_phase4_date = $start_phase4_date;
}
@ -179,8 +184,8 @@ class Config
public function setEndPhase4Date($end_phase4_date)
{
global $DB;
$DB->exec("UPDATE `config` SET `value` = '$end_phase4_date' WHERE `key` = 'end_phase4_date';");
global $DB, $YEAR;
$DB->exec("UPDATE `config` SET `value` = '$end_phase4_date' WHERE `key` = 'end_phase4_date_$YEAR'");
$this->end_phase4_date = $end_phase4_date;
}
@ -192,8 +197,8 @@ class Config
public function setIndexPage($index_page)
{
global $DB;
$DB->prepare("UPDATE `config` SET `value` = ? WHERE `key` = 'index_page';")->execute([$index_page]);
global $DB, $YEAR;
$DB->prepare("UPDATE `config` SET `value` = ? WHERE `key` = 'index_page_$YEAR'")->execute([$index_page]);
$this->index_page = $index_page;
}

View File

@ -44,9 +44,10 @@ class NewAdmin {
$this->password = genRandomPhrase(16, true);
$req = $DB->prepare("INSERT INTO `users`(`email`, `pwd_hash`, `surname`, `first_name`, `role`, `year`)
VALUES (?, ?, ?, ?, ?, ?);");
$req->execute([$this->email, password_hash($this->password, PASSWORD_BCRYPT), $this->surname, $this->first_name, "ADMIN", $YEAR]);
$req = $DB->prepare("INSERT INTO `users`(`email`, `pwd_hash`, `surname`, `first_name`, `class`, `role`, `year`)
VALUES (?, ?, ?, ?, ?, ?, ?);");
$req->execute([$this->email, password_hash($this->password, PASSWORD_BCRYPT), $this->surname,
$this->first_name, "ADULT", "ADMIN", $YEAR]);
Mailer::sendAddAdminMail($this);
}

View File

@ -30,7 +30,8 @@ class GiveQuestions
* @var Team $to_team
*/
private $to_team;
private $question_1;
private $question_0;
private $question_1;
private $question_2;
private $question_3;
private $question_4;
@ -50,7 +51,7 @@ class GiveQuestions
$this->files = [];
$this->has_files = false;
for ($i = 1; $i <= 6; ++$i) {
for ($i = 0; $i <= 6; ++$i) {
if (strlen($files["file_$i"]["name"]) > 0) {
$this->files[] = $files["file_$i"];
$this->has_files = true;
@ -59,7 +60,7 @@ class GiveQuestions
$this->files[] = null;
}
$this->questions = [$this->question_1, $this->question_2, $this->question_3, $this->question_4, $this->question_5, $this->question_6];
$this->questions = [$this->question_0, $this->question_1, $this->question_2, $this->question_3, $this->question_4, $this->question_5, $this->question_6];
}
public function makeVerifications()
@ -73,12 +74,12 @@ class GiveQuestions
"Vous devez poser au moins 3 questions.");
ensure(!$this->has_files || $this->no_drawing, "Vous devez confirmer ne pas avoir inclus de texte dans vos pièces jointes.");
for ($i = 3; $i < 6; ++$i) {
for ($i = 4; $i <= 6; ++$i) {
if ($this->questions[$i] == "")
$this->questions[$i] = null;
}
for ($i = 0; $i < 6; ++$i) {
for ($i = 0; $i <= 6; ++$i) {
ensure($this->files[$i]["size"] <= 2e6, "Le fichier doit peser moins que 2 Mo.");
ensure(!$this->files[$i]["error"], "Une erreur est survenue. Veuillez vérifier vos pièces jointes. Elles ne doivent pas peser plus de 2 Mo chacune.");
}
@ -92,7 +93,7 @@ class GiveQuestions
/** @var Question[] $questions */
$questions = Question::getQuestions($team, $this->to_team);
for ($i = 0; $i < 6; ++$i) {
for ($i = 0; $i <= 6; ++$i) {
$question = $questions[$i];
if ($question->getQuestion() != $this->questions[$i] && $question->getAttachedFile() != null) {
unlink("$LOCAL_PATH/files/" . $question->getAttachedFile());

View File

@ -5,7 +5,7 @@ $problem = htmlspecialchars($_GET["probleme"]);
if (!preg_match("#[0-4]#", $problem))
require_once "server_files/404.php";
if (isset($_GET["modifier"]) && $_SESSION["role"] != Role::ADMIN)
if (!isset($_SESSION["user_id"]) || $_SESSION["role"] != Role::ADMIN)
require_once "server_files/403.php";
$has_error = false;

View File

@ -26,6 +26,7 @@ class AnswerQuestions
* @var Team $to_team
*/
private $from_team;
private $answer_0;
private $answer_1;
private $answer_2;
private $answer_3;
@ -46,7 +47,7 @@ class AnswerQuestions
$this->files = [];
$this->has_files = false;
for ($i = 1; $i <= 6; ++$i) {
for ($i = 0; $i <= 6; ++$i) {
if (strlen($files["file_$i"]["name"]) > 0) {
$this->files[] = $files["file_$i"];
$this->has_files = true;
@ -55,7 +56,7 @@ class AnswerQuestions
$this->files[] = null;
}
$this->answers = [$this->answer_1, $this->answer_2, $this->answer_3, $this->answer_4, $this->answer_5, $this->answer_6];
$this->answers = [$this->answer_0, $this->answer_1, $this->answer_2, $this->answer_3, $this->answer_4, $this->answer_5, $this->answer_6];
}
public function makeVerifications()
@ -67,12 +68,12 @@ class AnswerQuestions
ensure($team->getProblem() == $this->from_team->getProblem(), "Les équipes ne travaillent pas sur le même problème.");
ensure(!$this->has_files || $this->no_drawing, "Vous devez confirmer ne pas avoir inclus de texte dans vos pièces jointes.");
for ($i = 0; $i < 6; ++$i) {
for ($i = 1; $i <= 6; ++$i) {
if ($this->answers[$i] == "")
$this->answers[$i] = null;
}
for ($i = 0; $i < 6; ++$i) {
for ($i = 0; $i <= 6; ++$i) {
ensure($this->files[$i]["size"] <= 2e6, "Le fichier doit peser moins que 2 Mo.");
ensure(!$this->files[$i]["error"], "Une erreur est survenue. Veuillez vérifier vos pièces jointes. Elles ne doivent pas peser plus de 2 Mo chacune.");
}
@ -86,7 +87,7 @@ class AnswerQuestions
/** @var Question[] $questions */
$questions = Question::getQuestions($this->from_team, $team);
for ($i = 0; $i < 6; ++$i) {
for ($i = 0; $i <= 6; ++$i) {
$question = $questions[$i];
if ($question->getAnswer() != $this->answers[$i] && $question->getAttachedFileAnswer() != null) {
unlink("$LOCAL_PATH/files/" . $question->getAttachedFileAnswer());

View File

@ -64,12 +64,12 @@ switch (Phase::getCurrentPhase()) {
case Phase::PHASE2:
$req = $DB->query("SELECT DISTINCT `teams`.`id` FROM `teams`"
. " WHERE `id` NOT IN (SELECT `q1`.`from` FROM `questions` AS `q1`"
. " JOIN `questions` AS `q2` ON `q2`.`from` = `q1`.`from` AND `q2`.`number` = 1"
. " JOIN `questions` AS `q3` ON `q3`.`from` = `q1`.`from` AND `q3`.`number` = 2"
. " JOIN `questions` AS `q4` ON `q4`.`from` = `q1`.`from` AND `q4`.`number` = 3"
. " JOIN `questions` AS `q5` ON `q5`.`from` = `q1`.`from` AND `q5`.`number` = 4"
. " JOIN `questions` AS `q6` ON `q6`.`from` = `q1`.`from` AND `q6`.`number` = 5"
. " WHERE `q1`.`number` = 0"
. " JOIN `questions` AS `q2` ON `q2`.`from` = `q1`.`from` AND `q2`.`number` = 2"
. " JOIN `questions` AS `q3` ON `q3`.`from` = `q1`.`from` AND `q3`.`number` = 3"
. " JOIN `questions` AS `q4` ON `q4`.`from` = `q1`.`from` AND `q4`.`number` = 4"
. " JOIN `questions` AS `q5` ON `q5`.`from` = `q1`.`from` AND `q5`.`number` = 5"
. " JOIN `questions` AS `q6` ON `q6`.`from` = `q1`.`from` AND `q6`.`number` = 6"
. " WHERE `q1`.`number` = 1"
. " AND (`q1`.`question` != '" . Question::DEFAULT_QUESTIONS[0] . "'"
. " OR `q2`.`question` != '" . Question::DEFAULT_QUESTIONS[1] . "'"
. " OR `q3`.`question` != '" . Question::DEFAULT_QUESTIONS[2] . "'"
@ -82,12 +82,12 @@ switch (Phase::getCurrentPhase()) {
case Phase::PHASE3:
$req = $DB->query("SELECT DISTINCT `teams`.`id` FROM `teams`"
. " WHERE `id` NOT IN (SELECT `q1`.`to` FROM `questions` AS `q1`"
. " JOIN `questions` AS `q2` ON `q2`.`to` = `q1`.`to` AND `q2`.`number` = 1"
. " JOIN `questions` AS `q3` ON `q3`.`to` = `q1`.`to` AND `q3`.`number` = 2"
. " JOIN `questions` AS `q4` ON `q4`.`to` = `q1`.`to` AND `q4`.`number` = 3"
. " JOIN `questions` AS `q5` ON `q5`.`to` = `q1`.`to` AND `q5`.`number` = 4"
. " JOIN `questions` AS `q6` ON `q6`.`to` = `q1`.`to` AND `q6`.`number` = 5"
. " WHERE `q1`.`question` = 0"
. " JOIN `questions` AS `q2` ON `q2`.`to` = `q1`.`to` AND `q2`.`number` = 2"
. " JOIN `questions` AS `q3` ON `q3`.`to` = `q1`.`to` AND `q3`.`number` = 3"
. " JOIN `questions` AS `q4` ON `q4`.`to` = `q1`.`to` AND `q4`.`number` = 4"
. " JOIN `questions` AS `q5` ON `q5`.`to` = `q1`.`to` AND `q5`.`number` = 5"
. " JOIN `questions` AS `q6` ON `q6`.`to` = `q1`.`to` AND `q6`.`number` = 6"
. " WHERE `q1`.`question` = 1"
. " AND (`q1`.`answer` IS NOT NULL"
. " OR `q2`.`answer` IS NOT NULL"
. " OR `q3`.`answer` IS NOT NULL"

View File

@ -119,6 +119,11 @@ function canValidate(Team $team)
function printDocuments($documents)
{
if (sizeof($documents) == 0) {
echo "<div class=\"alert alert-warning\">\nPas de document envoyé pour le moment.\n</div>\n";
return;
}
echo "<div class=\"alert alert-info\">\n";
foreach ($documents as $document) {
$file_id = $document->getFileId();

View File

@ -7,7 +7,7 @@ class Mailer
global $MAIL_DOMAIN, $URL_BASE, $YEAR;
$content = preg_replace("#{URL_BASE}#", $URL_BASE, $content);
$content = preg_replace("#{YEAR}#", $YEAR, $content);
$content = preg_replace("#{YEAR}#", $YEAR . "- " . ($YEAR + 1), $content);
$headers = "From: \"Contact Corres2Math\" <" . $from . "@" . $MAIL_DOMAIN . ">\r\n";
$headers .= "Reply-To: \"Contact corres2Math\" <contact@" . $MAIL_DOMAIN . ">\r\n";
@ -68,7 +68,7 @@ class Mailer
$content = preg_replace("#{SURNAME}#", $new_user->surname, $content);
$content = preg_replace("#{TOKEN}#", $new_user->confirm_email_token, $content);
self::sendMail($new_user->email, "Inscription aux Correspondances des Jeunes Mathématicien·ne·s $YEAR", $content);
self::sendMail($new_user->email, "Inscription aux Correspondances des Jeunes Mathématicien·ne·s $YEAR - " . ($YEAR + 1), $content);
}
public static function sendConfirmEmail(User $user)
@ -80,36 +80,42 @@ class Mailer
$content = preg_replace("#{SURNAME}#", $user->getSurname(), $content);
$content = preg_replace("#{TOKEN}#", $user->getConfirmEmailToken(), $content);
self::sendMail($user->getEmail(), "Confirmation d'adresse e-mail Correspondances des Jeunes Mathématicien·ne·s $YEAR", $content);
self::sendMail($user->getEmail(), "Confirmation d'adresse e-mail Correspondances des Jeunes Mathématicien·ne·s $YEAR - " . ($YEAR + 1), $content);
}
public static function sendChangeEmailAddressMail(User $user)
{
global $YEAR;
$content = self::getTemplate("change_email_address");
$content = preg_replace("#{FIRST_NAME}#", $user->getFirstName(), $content);
$content = preg_replace("#{SURNAME}#", $user->getSurname(), $content);
$content = preg_replace("#{TOKEN}#", $user->getConfirmEmailToken(), $content);
self::sendMail($user->getEmail(), "Changement d'adresse e-mail Correspondances des Jeunes Mathématicien·ne·s", $content);
self::sendMail($user->getEmail(), "Changement d'adresse e-mail Correspondances des Jeunes Mathématicien·ne·s $YEAR - " . ($YEAR + 1), $content);
}
public static function sendForgottenPasswordProcedureMail(User $user)
{
global $YEAR;
$content = self::getTemplate("forgotten_password");
$content = preg_replace("#{FIRST_NAME}#", $user->getFirstName(), $content);
$content = preg_replace("#{SURNAME}#", $user->getSurname(), $content);
$content = preg_replace("#{TOKEN}#", $user->getForgottenPasswordToken(), $content);
self::sendMail($user->getEmail(), "Mot de passe oublié Correspondances des Jeunes Mathématicien·ne·s", $content);
self::sendMail($user->getEmail(), "Mot de passe oublié Correspondances des Jeunes Mathématicien·ne·s $YEAR - " . ($YEAR + 1), $content);
}
public static function sendChangePasswordMail(User $user)
{
global $YEAR;
$content = self::getTemplate("change_password");
$content = preg_replace("#{FIRST_NAME}#", $user->getFirstName(), $content);
$content = preg_replace("#{SURNAME}#", $user->getSurname(), $content);
self::sendMail($user->getEmail(), "Mot de passe changé Correspondances des Jeunes Mathématicien·ne·s", $content);
self::sendMail($user->getEmail(), "Mot de passe changé Correspondances des Jeunes Mathématicien·ne·s $YEAR - " . ($YEAR + 1), $content);
}
public static function sendAddAdminMail(NewAdmin $new_admin)
@ -121,7 +127,7 @@ class Mailer
$content = preg_replace("#{SURNAME}#", $new_admin->surname, $content);
$content = preg_replace("#{PASSWORD}#", $new_admin->password, $content);
self::sendMail($new_admin->email, "Ajout d'un administrateur Correspondances des Jeunes Mathématicien·ne·s $YEAR", $content);
self::sendMail($new_admin->email, "Ajout d'un administrateur Correspondances des Jeunes Mathématicien·ne·s $YEAR - " . ($YEAR + 1), $content);
}
public static function sendAddTeamMail(User $user, Team $team)
@ -133,10 +139,13 @@ class Mailer
$content = preg_replace("#{SURNAME}#", $user->getSurname(), $content);
$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("#{ACCESS_CODE}#", $team->getAccessCode(), $content);
$content = preg_replace("#{ACCESS_CODE}#", $team->getAccessCode(), $content);
if ($team->getProblem() > 0)
$content = preg_replace("#{PROBLEM}#", "pour le problème" . $team->getProblem(), $content);
else
$content = preg_replace("#{PROBLEM}#", "", $content);
self::sendMail($user->getEmail(), "Ajout d'une équipe Correspondances des Jeunes Mathématicien·ne·s $YEAR", $content);
self::sendMail($user->getEmail(), "Ajout d'une équipe Correspondances des Jeunes Mathématicien·ne·s $YEAR - " . ($YEAR + 1), $content);
}
public static function sendJoinTeamMail(User $user, Team $team)
@ -148,9 +157,12 @@ class Mailer
$content = preg_replace("#{SURNAME}#", $user->getSurname(), $content);
$content = preg_replace("#{TEAM_NAME}#", $team->getName(), $content);
$content = preg_replace("#{TRIGRAM}#", $team->getTrigram(), $content);
$content = preg_replace("#{PROBLEM}#", $team->getProblem(), $content);
if ($team->getProblem() > 0)
$content = preg_replace("#{PROBLEM}#", "pour le problème" . $team->getProblem(), $content);
else
$content = preg_replace("#{PROBLEM}#", "", $content);
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 - " . ($YEAR + 1), $content);
}
public static function sendRequestValidationMail(Team $team)
@ -163,7 +175,7 @@ class Mailer
$content = preg_replace("#{PROBLEM}#", $team->getProblem(), $content);
$content = preg_replace("#{ACCESS_CODE}#", $team->getAccessCode(), $content);
self::broadcastToAdmins("Ajout d'une équipe Correspondances des Jeunes Mathématicien·ne·s $YEAR", $content);
self::broadcastToAdmins("Demande de validation Correspondances des Jeunes Mathématicien·ne·s $YEAR - " . ($YEAR + 1), $content);
}
public static function sendValidateTeam($team, $message)
@ -176,7 +188,7 @@ class Mailer
$message = preg_replace("#\n#", "<br/>\n", $message);
$content = preg_replace("#{MESSAGE}#", $message, $content);
self::broadcastToTeam($team, "Équipe validée Correspondances des Jeunes Mathématicien·ne·s $YEAR", $content);
self::broadcastToTeam($team, "Équipe validée Correspondances des Jeunes Mathématicien·ne·s $YEAR - " . ($YEAR + 1), $content);
}
public static function sendUnvalidateTeam($team, $message)
@ -189,7 +201,7 @@ class Mailer
$message = preg_replace("#\n#", "<br/>\n", $message);
$content = preg_replace("#{MESSAGE}#", $message, $content);
self::broadcastToTeam($team, "Équipe non validée Correspondances des Jeunes Mathématicien·ne·s $YEAR", $content);
self::broadcastToTeam($team, "Équipe non validée Correspondances des Jeunes Mathématicien·ne·s $YEAR - " . ($YEAR + 1), $content);
}
public static function sendNewVideo(NewVideo $video, Team $team)
@ -201,7 +213,7 @@ class Mailer
$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);
self::broadcastToAdmins("Nouvelle vidéo Correspondances des Jeunes Mathématicien·ne·s $YEAR - " . ($YEAR + 1), $content);
}
public static function sendNewAnswer(NewAnswer $video, Team $team)
@ -217,7 +229,7 @@ class Mailer
$content = preg_replace("#{PROBLEM}#", $team->getProblem(), $content);
$content = preg_replace("#{VIDEO_LINK}#", $video->link, $content);
self::broadcastToAdmins("Nouvelle vidéo de réponse Correspondances des Jeunes Mathématicien·ne·s $YEAR", $content);
self::broadcastToAdmins("Nouvelle vidéo de réponse Correspondances des Jeunes Mathématicien·ne·s $YEAR - " . ($YEAR + 1), $content);
}
public static function validateVideo(Video $video, $message)
@ -238,6 +250,7 @@ class Mailer
$message = preg_replace("#\n#", "<br/>\n", $message);
$content = preg_replace("#{MESSAGE}#", $message, $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);
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 - " . ($YEAR + 1), $content);
}
}

View File

@ -7,7 +7,8 @@
<body>
Bonjour {FIRST_NAME} {SURNAME},<br />
<br />
Vous venez de créer l'équipe « {TEAM_NAME} » ({TRIGRAM}) pour les Correspondances des Jeunes Mathématicien·ne·s pour le problème {PROBLEM} et nous vous en remercions.<br />
Vous venez de créer l'équipe « {TEAM_NAME} » ({TRIGRAM}) pour les Correspondances des Jeunes Mathématicien·ne·s
{PROBLEM} et nous vous en remercions.<br />
Afin de permettre aux autres membres de votre équipe de vous rejoindre, veuillez leur transmettre le code d'accès :
<strong>{ACCESS_CODE}</strong><br/>
<br />

View File

@ -7,8 +7,8 @@
<body>
Bonjour {FIRST_NAME} {SURNAME},<br/>
<br/>
Vous venez de rejoindre l'équipe « {TEAM_NAME} » ({TRIGRAM}) pour les Correspondances des Jeunes Mathématicien·ne·s pour le problème {PROBLEM} et nous vous en
remercions.<br/>
Vous venez de rejoindre l'équipe « {TEAM_NAME} » ({TRIGRAM}) pour les Correspondances des Jeunes Mathématicien·ne·s
{PROBLEM} et nous vous en remercions.<br/>
<br/>
Cordialement,<br/>
<br/>

View File

@ -11,7 +11,7 @@ Maleureusement, votre équipe « {TEAM_NAME} » ({TRIGRAM}) n'a pas été valid
de droit à l'image sont correctes.
{MESSAGE}<br />
<br />
<br />N'hésitez pas à nous contacter à l'adresse <a href="contact@correspondances-maths.fr">contact@correspondances-maths.fr</a>
N'hésitez pas à nous contacter à l'adresse <a href="contact@correspondances-maths.fr">contact@correspondances-maths.fr</a>
pour plus d'informations.
<br/>
Cordialement,<br/>

View File

@ -9,7 +9,7 @@ Bonjour {FIRST_NAME} {SURNAME},<br/>
<br/>
Félicitations ! Votre équipe « {TEAM_NAME} » ({TRIGRAM}) est désormais validée ! Vous êtes désormais apte à travailler sur
votre problème. Lorsque les Correspondances auront débutées, vous pourrez soumettre votre vidéo sur la plateforme d'inscription.
{MESSAGE}
{MESSAGE}<br />
<br/>
Cordialement,<br/>
<br/>

View File

@ -7,10 +7,13 @@
<body>
Bonjour {FIRST_NAME} {SURNAME},<br/>
<br/>
Malheureusement, votre vidéo de réponse 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 />
Malheureusement, votre vidéo de réponse 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éponses 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.
Vous êtes désormais invités à retravailler vos réponses 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 />
<br/>
{MESSAGE}
Cordialement,<br/>

View File

@ -7,10 +7,13 @@
<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 />
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.
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 />
<br/>
{MESSAGE}
Cordialement,<br/>

View File

@ -8,7 +8,8 @@ require_once "header.php";
<?php if (isset($new_team) && !$has_error) { ?>
<div class="alert alert-success">
Votre équipe a bien été créée ! Voici le code d'accès à transmettre aux autres membres de votre équipe : <strong><?= $new_team->access_code ?></strong>
Votre équipe a bien été créée ! Voici le code d'accès à transmettre aux autres membres de votre équipe :
<strong><?= $new_team->access_code ?></strong>
</div>
<?php } elseif ($_SESSION["team"] != NULL) { ?>
<div class="alert alert-danger">
@ -21,7 +22,7 @@ require_once "header.php";
<?php } else { ?>
<div class="alert alert-info">
Chacune des informations pourra être modifiée avant que l'équipe soit validée.
Chacune des informations pourra être modifiée avant que l'équipe tant que l'équipe n'est pas validée.
</div>
<form method="POST">
@ -45,7 +46,7 @@ require_once "header.php";
<option value="0">Choisir un problème ...</option>
<?php
for ($i = 1; $i <= 4; ++$i)
echo "<option value='$i' " . (isset($new_team) && $new_team->problem == $i ? "selected" : "") . ">$i</option>";
echo "<option value='$i' " . (isset($new_team) && $new_team->problem == $i ? "selected" : "") . ">Problème $i</option>";
?>
</select>
</div>

View File

@ -12,76 +12,88 @@ require_once "header.php";
</div>
<?php } ?>
<div class="alert alert-info">
Pour clore vos Correspondances, vous devez produire, pour chaque vidéo reçue d'une autre équipe, une vidéo de
synthèse d'au plus 4 minutes.
Cette vidéo doit mettre en perspective de la vidéo initiale en tenant compte de l'échange qui a eu lieu.
Vous devez mettre en valeur léchange questions/réponses, et montrer l'évolution de la résolution au problème.
</div>
<div class="alert alert-warning">
<strong>Date limite de soumission :</strong> <?= formatDate($CONFIG->getEndPhase4Date(), true) ?>
</div>
<?php
for ($i = 0; $i < 2; ++$i) {
/** @var Team $answer_team */
$answer_team = $teams[$i];
/** @var Video $sol */
$sol = $sols[$i];
/** @var Video $answer */
$answer = $answers[$i];
/** @var Video $answer_validated */
$answer_validated = $answers_validated[$i];
/** @var Question[] $questions */
$questions = Question::getQuestions($team, $answer_team);
?>
/** @var Team $answer_team */
$answer_team = $teams[$i];
/** @var Video $sol */
$sol = $sols[$i];
/** @var Video $answer */
$answer = $answers[$i];
/** @var Video $answer_validated */
$answer_validated = $answers_validated[$i];
/** @var Question[] $questions */
$questions = Question::getQuestions($team, $answer_team);
?>
<div class="jumbotron">
<h2>Vidéo de l'équipe <?= $answer_team->getName() ?> (<?= $answer_team->getTrigram() ?>) :</h2>
<div class="alert alert-info">
<strong>Lien de la vidéo de présentation de la solution au problème :</strong>
<a href="<?= $sol->getLink() ?>"><?= $sol->getLink() ?></a>
</div>
<?php displayVideo($sol->getLink()) ?>
<?php displayVideo($sol->getLink()) ?>
<h5>Questions échangées :</h5>
<?php
for ($j = 0; $j < 6; ++$j) {
/** @var Question $question */
$question = $questions[$j];
if ($question->getQuestion() === null)
continue;
?>
<?php
for ($j = 0; $j <= 6; ++$j) {
/** @var Question $question */
$question = $questions[$j];
if ($j > 0 && $question->getQuestion() === null)
continue;
?>
<div class="alert alert-info">
<strong>Question <?= $question->getNumber() + 1 ?> :</strong> <?= $question->getQuestion() ?><br />
<?php
if ($question->getAttachedFile() !== null) { ?>
<strong><?= $j == 0 ? "Remarques générales :" : "Question " . $question->getNumber() . " :" ?></strong>
<?= $question->getQuestion() ?><br/>
<?php
if ($question->getAttachedFile() !== null) { ?>
<em>Pièce jointe attachée :</em>
<a href="/file/<?= $question->getAttachedFile() ?>"><strong>Télécharger</strong></a><br />
<?php } ?>
<strong>Réponse :</strong> <?= $question->getAnswer() ?><br />
<?php
if ($question->getAttachedFile() !== null) { ?>
<a href="/file/<?= $question->getAttachedFile() ?>"><strong>Télécharger</strong></a><br/>
<?php } ?>
<strong>Réponse :</strong> <?= $question->getAnswer() ?><br/>
<?php
if ($question->getAttachedFileAnswer() !== null) { ?>
<em>Pièce jointe attachée :</em>
<a href="/file/<?= $question->getAttachedFileAnswer() ?>"><strong>Télécharger</strong></a><br />
<?php } ?>
<a href="/file/<?= $question->getAttachedFileAnswer() ?>"><strong>Télécharger</strong></a><br/>
<?php } ?>
</div>
<?php } ?>
<?php } ?>
<br/>
<h5>Vidéo de réponse :</h5>
<?php
if ($answer !== null) {
$link = $answer->getLink();
echo "<div class=\"alert alert-info\"><strong>Lien de la vidéo déjà envoyée :</strong> <a href=\"$link\">$link</a> (version " . $answer->getVersion() . ")</div>\n";
displayVideo($link);
switch ($answer->getValidation()) {
case 0:
echo "<div class=\"alert alert-warning\">La vidéo n'a pas encore été vérifiée par l'équipe d'organisation.</div>";
break;
case 1:
echo "<div class=\"alert alert-success\">La vidéo a été acceptée par l'équipe d'organisation.</div>";
break;
case -1:
echo "<div class=\"alert alert-danger\">La vidéo a été rejetée par l'équipe d'organisation.</div>";
break;
}
}
if ($answer_validated != null && $answer_validated->getId() != $answer->getId()) {
$link = $answer_validated->getLink();
echo "<hr />\n<div class=\"alert alert-info\">Lien de la dernière vidéo validée : <a href=\"$link\">$link</a></div>\n";
displayVideo($link);
}
?>
<?php
if ($answer !== null) {
$link = $answer->getLink();
echo "<div class=\"alert alert-info\"><strong>Lien de la vidéo déjà envoyée :</strong> <a href=\"$link\">$link</a> (version " . $answer->getVersion() . ")</div>\n";
displayVideo($link);
switch ($answer->getValidation()) {
case 0:
echo "<div class=\"alert alert-warning\">La vidéo n'a pas encore été vérifiée par l'équipe d'organisation.</div>";
break;
case 1:
echo "<div class=\"alert alert-success\">La vidéo a été acceptée par l'équipe d'organisation.</div>";
break;
case -1:
echo "<div class=\"alert alert-danger\">La vidéo a été rejetée par l'équipe d'organisation.</div>";
break;
}
}
if ($answer_validated != null && $answer_validated->getId() != $answer->getId()) {
$link = $answer_validated->getLink();
echo "<hr />\n<div class=\"alert alert-info\">Lien de la dernière vidéo validée : <a href=\"$link\">$link</a></div>\n";
displayVideo($link);
}
?>
<form method="POST">
<input type="hidden" name="team" value="<?= $i + 1 ?>"/>
@ -92,16 +104,19 @@ for ($i = 0; $i < 2; ++$i) {
</div>
</div>
<input type="checkbox" name="valid_link" id="valid_link_<?= $i ?>" required/> <label for="valid_link_<?= $i ?>">Je
<input type="checkbox" name="valid_link" id="valid_link_<?= $i ?>" required/> <label
for="valid_link_<?= $i ?>">Je
confirme que le lien est valide</label><br/>
<input type="checkbox" name="no_change" id="no_change_<?= $i ?>" required/> <label for="no_change_<?= $i ?>">Je m'engage
<input type="checkbox" name="no_change" id="no_change_<?= $i ?>" required/> <label
for="no_change_<?= $i ?>">Je m'engage
à ne pas changer le contenu du lien et de la vidéo</label>
<input class="btn btn-primary btn-lg btn-block" type="submit" name="upload_answer" value="Envoyer la vidéo"/>
<input class="btn btn-primary btn-lg btn-block" type="submit" name="upload_answer"
value="Envoyer la vidéo"/>
</form>
</div>
<?php
<?php
}
require_once "footer.php";

View File

@ -13,6 +13,26 @@ require_once "header.php";
</div>
<?php } ?>
<div class="alert alert-info">
<ul>
<li>Une fois vos travaux sur votre problème terminés, vous êtes invités dans le cadre des Correspondances à tourner
une vidéo dans laquelle vous présentez vos résultats.</li>
<li>La vidéo doit durer au maximum 8 minutes.</li>
<li>Un travail de recherche, en équipe sur les problèmes, supervisé par l'encadrant·e, est attendu.</li>
<li>Au début de la vidéo, une brève présentation de l'énoncé est appréciée.</li>
<li>L'équipe doit présenter ses réponses trouvées aux questions de l'énoncé.</li>
<li>Toutes les plateformes d'hébergement vidéo sont supportées. Néanmoins, les plateformes
<a href="https://vimeo.com/">Viméo</a>, <a href="https://www.youtube.com/">YouTube</a>
et <a href="https://dailymotion.com/fr">Dailymotion</a> permettent une prévisualisation de la vidéo.
Cette liste pourra être étendue si besoin est.</li>
<li>Les liens de vos vidéos sont soumis à validation à l'équipe d'organisation.</li>
</ul>
</div>
<div class="alert alert-warning">
<strong>Date limite de soumission :</strong> <?= formatDate($CONFIG->getEndPhase1Date(), true) ?>
</div>
<?php
if ($video !== null) {
$link = $video->getLink();

View File

@ -105,7 +105,7 @@
<?php if ($team->getValidationStatus() == ValidationStatus::WAITING) { ?>
<hr/>
<form method="POST">
<div class="form-row">
<div class="form-group row">
<label for="message">Message à adresser à l'équipe :</label>
<textarea class="form-control" id="message" name="message"></textarea>
</div>

View File

@ -9,7 +9,7 @@
<em>Ce site a été conçu pour Animath, avec amour et passion. Il est récent et il est possible que
certaines pages ne fonctionnent pas correctement. Si vous remarquez des bugs, merci de les signaler à
l'adresse <a href="mailto:contact@correspondances-maths.fr">contact@correspondances-maths.fr</a>.</em><br/>
© 2019 Correspondances de Jeunes Mathématicien·ne·s
© <?= $YEAR ?> Correspondances de Jeunes Mathématicien·ne·s
</div>
</div>
</footer>

View File

@ -3,7 +3,7 @@
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Site d'inscription pour les Correspondances des Jeunes Mathématicien·ne·s <?= $YEAR ?></title>
<title>Site d'inscription pour les Correspondances des Jeunes Mathématicien·ne·s <?= $YEAR . " - " . ($YEAR + 1) ?></title>
<link rel="stylesheet" type="text/css" href="/style.css"/>
<link REL="shortcut icon" href="/favicon.ico"/>

View File

@ -84,17 +84,17 @@ if (!$has_error) {
</div>
<div class="alert alert-info">
<strong>Autorise Animath à envoyer des mails :</strong> <?= $user->doReceiveAnimathMails() ? "oui" : "non" ?>
<strong><?= $user->getRole() == Role::ADMIN ? "Reçoit des notifications par mail :"
: "Autorise Animath à envoyer des mails :" ?></strong> <?= $user->doReceiveAnimathMails() ? "oui" : "non" ?>
</div>
<?php if ($team != null && $user->getRole() == Role::PARTICIPANT) { ?>
<hr/>
<?php if ($team != null && ($user->getRole() == Role::PARTICIPANT || $user->getRole() == Role::ENCADRANT)) { ?>
<div class="mt-4 mb-4">
<h1 class="display-5">Autorisation de droit à l'image :</h1>
</div>
<?php
print_r($documents);
printDocuments($documents);
}

View File

@ -11,7 +11,8 @@ require_once "header.php";
if (isset($user) && !$has_error) {
?>
<div class="alert alert-success">
Vous êtes bien inscrit ! Merci désormais de confirmer votre boîte mail pour valider votre adresse.
Vous êtes bien inscrit ! Merci désormais de confirmer votre boîte mail pour valider votre adresse. Pensez à vérifier
vos courriers indésirables.
</div>
<?php } else if (isset($_SESSION["user_id"])) { ?>
<div class="alert alert-danger">
@ -105,7 +106,7 @@ if (isset($user) && !$has_error) {
</div>
<label for="receive_animath_mails">J'accepte dêtre recontacté par l'association <em>Animath</em> au sujet
d'autres activités (<em>facultatif</em>) :</label>
d'autres activités à l'issue des Correspondances (<em>facultatif</em>) :</label>
<input type="checkbox" id="receive_animath_mails" name="receive_animath_mails"
<?= isset($user) && $user->receive_animath_mails ? "checked" : "" ?> /><br /><br />

View File

@ -34,8 +34,8 @@ if (false) {
continue;
?>
<div class="alert alert-info">
<strong>Question <?= $question->getNumber() + 1 ?>
:</strong> <?= $question->getQuestion() ?>
<strong><?= $j == 0 ? "Remarques générales :" : "Question " . $j . " :" ?></strong>
<?= $question->getQuestion() ?>
<br/>
<?php
if ($question->getAttachedFile() !== null) { ?>
@ -45,7 +45,7 @@ if (false) {
<?php } ?>
<strong>Réponse :</strong> <?= $question->getAnswer() ?><br/>
<?php
if ($question->getAttachedFile() !== null) { ?>
if ($question->getAttachedFileAnswer() !== null) { ?>
<em>Pièce jointe attachée :</em>
<a href="/file/<?= $question->getAttachedFileAnswer() ?>"><strong>Télécharger</strong></a>
<br/>
@ -97,7 +97,7 @@ if (false) {
continue;
?>
<div class="alert alert-info">
<strong>Question <?= $question->getNumber() + 1 ?>
<strong>Question <?= $question->getNumber() ?>
:</strong> <?= $question->getQuestion() ?>
<br/>
<?php

View File

@ -53,11 +53,11 @@ if (!$has_error && (isset($my_account) || isset($new_password))) {
<label for="receive_animath_mails">
<?= $user->getRole() == Role::PARTICIPANT || $user->getRole() == Role::ENCADRANT
? "J'accepte d'être recontacté par l'association <em>Animath</em> au sujet d'autres activités (<em>facultatif</em>) :"
: "Recevoir les notifications par mail :" ?>
? "J'accepte d'être recontacté par l'association <em>Animath</em> au sujet d'autres activités (<em>facultatif</em>) :"
: "Recevoir les notifications par mail :" ?>
</label>
<input type="checkbox" id="receive_animath_mails" name="receive_animath_mails"
<?= $user->doReceiveAnimathMails() ? "checked" : "" ?> />
<?= $user->doReceiveAnimathMails() ? "checked" : "" ?> />
<?php if ($user->getRole() == Role::PARTICIPANT) { ?>
<div class="form-row">
@ -92,7 +92,7 @@ if (!$has_error && (isset($my_account) || isset($new_password))) {
</div>
</div>
<?php } else if ($user->getRole() == Role::ENCADRANT) { ?>
<?php } else if ($user->getRole() == Role::ENCADRANT) { ?>
<div class="form-group row">
<label id="description_label" for="description">Activité professionnelle :</label>
@ -135,32 +135,40 @@ if (!$has_error && (isset($my_account) || isset($new_password))) {
</div>
</form>
<?php if (isset($_SESSION["team"]) && $user->getRole() == Role::PARTICIPANT && $_SESSION["team"]->getValidationStatus() == ValidationStatus::NOT_READY
&& date("Y-m-d H:i:s") < $CONFIG->getInscriptionDate()) { ?>
<?php if (isset($_SESSION["team"]) && $user->getRole() == Role::PARTICIPANT) {
$not_validated = $_SESSION["team"]->getValidationStatus() == ValidationStatus::NOT_READY
&& date("Y-m-d H:i:s") < $CONFIG->getInscriptionDate();
?>
<hr/>
<div class="mt-4 mb-4">
<h1 class="display-5">Autorisation de droit à l'image</h1>
</div>
<em>Ce document peut être modifié tant que l'équipe n'est pas validée.</em>
<div class="alert alert-info">
<strong>Modèle d'autorisation de droit à l'image :</strong>
<a href="/Autorisation de droit à l'image - majeur.pdf">majeur</a> - <a href="/Autorisation de droit à l'image - mineur.pdf">mineur</a>
</div>
<?php if ($not_validated) { ?>
<em>Ce document peut être modifié tant que l'équipe n'est pas validée.</em>
<div class="alert alert-info">
<strong>Modèle d'autorisation de droit à l'image :</strong>
<a href="/Autorisation de droit à l'image - majeur.pdf">majeur</a> - <a
href="/Autorisation de droit à l'image - mineur.pdf">mineur</a>
</div>
<?php } ?>
<?php printDocuments($documents); ?>
<form method="POST" enctype="multipart/form-data">
<?php if ($not_validated) { ?>
<form method="POST" enctype="multipart/form-data">
<div class="form-row">
<div class="form-group col-md-12">
<label for="document">Fichier :</label>
<input class="form-control" type="file" id="document" name="document" required/>
<div class="form-row">
<div class="form-group col-md-12">
<label for="document">Fichier :</label>
<input class="form-control" type="file" id="document" name="document" required/>
</div>
</div>
</div>
<div class="form-group row">
<input class="btn btn-primary btn-lg btn-block" type="submit" name="send_document"
value="Envoyer le document"/>
</div>
</form>
<div class="form-group row">
<input class="btn btn-primary btn-lg btn-block" type="submit" name="send_document"
value="Envoyer le document"/>
</div>
</form>
<?php } ?>
<?php } ?>
<?php require_once "footer.php" ?>

View File

@ -13,8 +13,8 @@ require_once "header.php";
<strong>Trigramme :</strong> <?= $team->getTrigram() ?>
</div>
<div class="alert alert-info">
<strong>Problème :</strong> <a href="/probleme/<?= $team->getProblem() ?>">
<?= $team->getProblem() == 0 ? "Pas de problème choisi" : $team->getProblem() ?></a>
<strong>Problème :</strong>
<?= $team->getProblem() == 0 ? "Pas de problème choisi" : $team->getProblem() ?>
</div>
<div class="alert alert-info">
<?php
@ -55,7 +55,7 @@ require_once "header.php";
La date limite d'inscription est dépassée, vous ne pouvez plus demander la validation de votre équipe.
</div>
<?php } else {
if (isset($_GET["modifier"])) { ?>
if (isset($_GET["modifier"]) && $team->getValidationStatus() == ValidationStatus::NOT_READY) { ?>
<form method="POST">
<div class="form-row">
@ -75,10 +75,10 @@ require_once "header.php";
<div class="form-group row">
<label for="problem">Problème :</label>
<select id="problem" name="problem" class="custom-select">
<option value="0">Choisir un problème (peut être choisi plus tard)</option>
<option value="0">Choisir un problème ...</option>
<?php
for ($i = 1; $i <= 4; ++$i)
echo "<option value='$i' " . ($team->getProblem() == $i ? "selected" : "") . ">$i</option>";
echo "<option value='$i' " . ($team->getProblem() == $i ? "selected" : "") . ">Problème $i</option>";
?>
</select>
</div>
@ -111,7 +111,7 @@ require_once "header.php";
<hr />
<form method="post">
<label for="engage">Je m'engage à participer à l'intégralité des Correspondances</label>
<input type="checkbox" name="engage" id="engage"/>
<input type="checkbox" name="engage" id="engage" required/>
<div class="alert alert-warning">
<strong>Attention !</strong> Une fois votre équipe validée, vous ne pourrez plus modifier le nom
de l'équipe, le trigramme, le problème sur lequel vous souhaitez travailler ou la composition de l'équipe.
@ -120,6 +120,7 @@ require_once "header.php";
value="Demander la validation"/>
</form>
<?php } else { ?>
<hr />
<div class="alert alert-warning">
Pour demander à valider votre équipe, vous devez avoir au moins un encadrant, trois participants,
choisi un problème et soumis une autorisation de droit à l'image par participant.

View File

@ -13,9 +13,21 @@ if (isset($give_questions) && !$has_error) { ?>
</div>
<?php } ?>
<div class="alert alert-warning">
<h1>Veuillez toujours enregistrer votre travail ailleurs que sur la plateforme !</h1>
</div>
<div class="alert alert-info">
Pour cette deuxième phase des Correspondances, vous êtes invités à visionner les vidéos de solution de deux autres
équipes, qui ont travaillé sur le même problème que vous. Vous devez désormais poser entre 3 et 6 questions, portant
sur la présentation de l'équipe. Chaque question peut-être accompagnée d'une pièce jointe (dessin, schéma, ...)
sous toute forme (PDF, image, archive, ...) tant que le poids ne dépasse pas 2 Mo. Si vous le souhaitez, vous pouvez
adresser aux équipes des remarques plus générales.
</div>
<div class="alert alert-warning">
<strong>Date limite de soumission des questions :</strong> <?= formatDate($CONFIG->getEndPhase2Date(), true) ?>
</div>
<div class="alert alert-warning">
<h2>Veuillez toujours enregistrer votre travail ailleurs que sur la plateforme !</h2>
</div>
<?php
for ($i = 0; $i < 2; ++$i) {
@ -32,37 +44,36 @@ for ($i = 0; $i < 2; ++$i) {
<input type="hidden" name="to" value="<?= $receiver->getTrigram() ?>"/>
<?php
for ($j = 0; $j < 6; ++$j) {
for ($j = 0; $j <= 6; ++$j) {
$question = $questions[$i][$j];
if ($question->getQuestion() == null && $j) { ?>
if ($question->getQuestion() == null && $j > 0) { ?>
<a id="button_<?= $i ?>_<?= $j ?>" class="btn btn-secondary btn-lg btn-block"
style="display: <?= $j == 0 || $questions[$i][$j - 1]->getQuestion() != null ? "block" : "none" ?>"
style="display: <?= $questions[$i][$j - 1]->getQuestion() != null ? "block" : "none" ?>"
onclick="addQuestion(<?= $i ?>, <?= $j ?>)">Ajouter une question</a>
<br/>
<?php
}
?>
<div id="block_<?= $i ?>_<?= $j ?>" style="display: <?= $question->getQuestion() == null ? "none" : "block" ?>;">
<?php } ?>
<div class="alert alert-info" id="block_<?= $i ?>_<?= $j ?>" style="display: <?= $j > 0 && $question->getQuestion() == null ? "none" : "block" ?>;">
<div class="form-group-row">
<label for="question_<?= $j + 1 ?>_<?= $i ?>">Question <?= $j + 1 ?> :</label>
<textarea class="form-control" id="question_<?= $j + 1 ?>_<?= $i ?>"
name="question_<?= $j + 1 ?>"><?= $question->getQuestion() ?></textarea>
<label for="question_<?= $j ?>_<?= $i ?>">
<strong><?= $j == 0 ? "Remarques générales :" : "Question " . $j . " :" ?></strong>
</label>
<textarea class="form-control" id="question_<?= $j ?>_<?= $i ?>"
name="question_<?= $j ?>"><?= $question->getQuestion() ?></textarea>
</div>
<?php
if ($question->getAttachedFile() != null) { ?>
<br/>
<div class="alert alert-info">
<div class="alert alert-warning">
Pièce jointe : <a href="/file/<?= $question->getAttachedFile() ?>">Télécharger</a>
</div>
<?php } ?>
<div class="form-group-row">
<label for="file_<?= $j + 1 ?>_<?= $i ?>">Ajouter une pièce jointe (<em>facultatif</em>)
<label for="file_<?= $j ?>_<?= $i ?>">Ajouter une pièce jointe (<em>facultatif</em>)
:</label>
<input type="file" name="file_<?= $j + 1 ?>" id="file_<?= $j + 1 ?>"/>
<input type="file" name="file_<?= $j ?>" id="file_<?= $j ?>"/>
</div>
</div>

View File

@ -22,9 +22,11 @@
<th scope="col">
Date d'inscription
</th>
<th scope="col">
État de validation de l'inscription
</th>
<?php if ($problem > 0) { ?>
<th scope="col">
État de validation de l'inscription
</th>
<?php } ?>
</tr>
</thead>
<tbody>
@ -43,7 +45,9 @@
</th>
<td><?= $team->getTrigram() ?></td>
<td><?= formatDate($team->getInscriptionDate()) ?></td>
<td><?= ValidationStatus::getTranslatedName($team->getValidationStatus()) ?></td>
<?php if ($problem > 0) { ?>
<td><?= ValidationStatus::getTranslatedName($team->getValidationStatus()) ?></td>
<?php } ?>
</tr>
<?php
}
@ -60,9 +64,11 @@
<th>
Date d'inscription
</th>
<th>
État de validation de l'inscription
</th>
<?php if ($problem > 0) { ?>
<th>
État de validation de l'inscription
</th>
<?php } ?>
</tr>
</tfoot>
</table>

View File

@ -13,6 +13,16 @@ if (isset($answer_questions) && !$has_error) { ?>
</div>
<?php } ?>
<div class="alert alert-info">
Deux autres équipes ayant travaillé sur le même problème que vous vous ont posé quelques questions. Afin de faire
avancer l'échange, vous êtes invités à répondre à leurs interrogations. Vous êtes libres d'ajouter à votre souhait
un paragraphe de remarques.
</div>
<div class="alert alert-warning">
<strong>Date limite de soumission des réponses :</strong> <?= formatDate($CONFIG->getEndPhase3Date(), true) ?>
</div>
<div class="alert alert-info">
<strong>Lien de la vidéo :</strong> <a href="<?= $video->getLink() ?>"><?= $video->getLink() ?></a>
</div>
@ -22,18 +32,21 @@ if (isset($answer_questions) && !$has_error) { ?>
<?php
foreach ($questions as $questions_team) {
$from = Team::fromId($questions_team[0]->getFrom());
$remark = $questions_team[0];
echo "<h4>Questions de l'équipe " . $from->getName() . " (" . $from->getTrigram() . ") :</h4>\n";
?>
<form method="POST" enctype="multipart/form-data">
<input type="hidden" name="from" value="<?= $from->getTrigram() ?>"/>
<?php
for ($i = 0; $i < sizeof($questions_team); ++$i) {
$question = $questions_team[$i];
if ($question->getQuestion() == null)
if ($i > 0 && $question->getQuestion() == null)
continue;
?>
<div class="alert alert-info">
<strong>Question <?= $i + 1 ?> :</strong> <?= $question->getQuestion() ?><br/>
<strong><?= $i == 0 ? "Remarques générales :" : "Question " . $question->getNumber() . " :" ?></strong>
<?= $question->getQuestion() ?><br/>
<?php
if ($question->getAttachedFile() != null) { ?>
Pièce jointe :
@ -41,9 +54,9 @@ foreach ($questions as $questions_team) {
<?php } ?>
<div class="form-group row">
<div class="form-group col-md-12">
<label for="answer_<?= $i + 1 ?>">Réponse :</label>
<textarea class="form-control" id="answer_<?= $i + 1 ?>"
name="answer_<?= $i + 1 ?>"><?= $question->getAnswer() ?></textarea>
<label for="answer_<?= $i ?>"><strong>Réponse :</strong></label>
<textarea class="form-control" id="answer_<?= $i ?>"
name="answer_<?= $i ?>"><?= $question->getAnswer() ?></textarea>
</div>
</div>
<?php
@ -53,8 +66,8 @@ foreach ($questions as $questions_team) {
<?php } ?>
<div class="form-group row">
<div class="form-group col-md-12">
<label for="file_<?= $i + 1 ?>">Ajouter une pièce jointe (<em>facultatif</em>) :</label>
<input type="file" name="file_<?= $i + 1 ?>" id="file_<?= $i + 1 ?>"/>
<label for="file_<?= $i ?>">Ajouter une pièce jointe (<em>facultatif</em>) :</label>
<input type="file" name="file_<?= $i ?>" id="file_<?= $i ?>"/>
</div>
</div>
</div>

View File

@ -51,6 +51,12 @@ for ($problem = 1; $problem <= 4; ++$problem) { ?>
<form method="POST">
<input type="hidden" name="validate_video" value=""/>
<input type="hidden" name="video_id" value="<?= $video->getId() ?>"/>
<div class="form-group row">
<label for="message">Message à adresser à l'équipe :</label>
<textarea class="form-control" id="message" name="message"></textarea>
</div>
<input class="btn btn-primary btn-lg" style="width: <?= $video->getValidation() == 0 ? 49 : 100 ?>%;" type="submit" name="accept"
value="Accepter la vidéo"/>
<?php if ($video->getValidation() == 0) { ?>
@ -86,11 +92,11 @@ for ($problem = 1; $problem <= 4; ++$problem) { ?>
echo "<h5>Questions posées par l'équipe " . $from->getName() . " (" . $from->getTrigram() . ") :</h5>\n";
for ($i = 0; $i < sizeof($from_questions); ++$i) {
$question = $from_questions[$i];
if ($question->getQuestion() == null)
if ($i > 0 && $question->getQuestion() == null)
continue;
echo "<div class=\"alert alert-info\">\n";
echo "<strong>Question " . ($i + 1) . " :</strong> " . $question->getQuestion() . "<br />\n";
echo "<strong>" . ($i == 0 ? "Remarques générales :" : "Question " . $i . " :") . "</strong> " . $question->getQuestion() . "<br />\n";
if ($question->getAttachedFile() != null)
echo "<em>Pièce jointe attachée :</em> <a href=\"/file/" . $question->getAttachedFile() . "\"><strong>Télécharger</strong></a><br />\n";
if ($question->getAnswer() != null)
@ -114,18 +120,24 @@ for ($problem = 1; $problem <= 4; ++$problem) { ?>
<form method="POST">
<input type="hidden" name="validate_video" value=""/>
<input type="hidden" name="video_id" value="<?= $answer->getId() ?>"/>
<input class="btn btn-primary btn-lg" style="width: 49%;" type="submit" name="accept"
value="Accepter la vidéo"/>
<?php if ($video->getValidation() == 0) { ?>
<div class="form-group row">
<label for="message">Message à adresser à l'équipe :</label>
<textarea class="form-control" id="message" name="message"></textarea>
</div>
<input class="btn btn-primary btn-lg" style="width: <?= $answer->getValidation() == 0 ? 49 : 100 ?>%;"
type="submit" name="accept" value="Accepter la vidéo"/>
<?php if ($answer->getValidation() == 0) { ?>
<input class="btn btn-light btn-lg" style="width: 49%;" type="submit" name="reject"
value="Refuser la vidéo"/>
<?php } ?>
</form>
<br/>
<?php }
if ($video->getValidation() != 0) { ?>
<div class="alert alert-<?= $video->getValidation() == 1 ? "success" : "danger" ?>">
La vidéo a été <?= $video->getValidation() == 1 ? "acceptée" : "refusée" ?>.
if ($answer->getValidation() != 0) { ?>
<div class="alert alert-<?= $answer->getValidation() == 1 ? "success" : "danger" ?>">
La vidéo a été <?= $answer->getValidation() == 1 ? "acceptée" : "refusée" ?>.
</div>
<?php }
if ($answer->getValidation() != Video::ACCEPTED) {