1
0
mirror of https://gitlab.com/animath/si/plateforme-corres2math.git synced 2025-01-08 11:02: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%; min-height: 78%;
} }
footer {
text-align: center;
}
.inner { .inner {
margin: 20px; margin: 20px;
} }
.alert {
text-align: justify;
}
footer .alert {
text-align: center;
}
#navbar-logo { #navbar-logo {
height: var(--navbar-height); height: var(--navbar-height);
display: block; 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."); 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()]); $req->execute([$from->getId(), $to->getId()]);
$questions = []; $questions = [];
@ -80,9 +80,11 @@ class Question
} }
if (sizeof($questions) == 0) { 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 = $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); return self::getQuestions($from, $to);
} }

View File

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

View File

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

View File

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

View File

@ -30,7 +30,8 @@ class GiveQuestions
* @var Team $to_team * @var Team $to_team
*/ */
private $to_team; private $to_team;
private $question_1; private $question_0;
private $question_1;
private $question_2; private $question_2;
private $question_3; private $question_3;
private $question_4; private $question_4;
@ -50,7 +51,7 @@ class GiveQuestions
$this->files = []; $this->files = [];
$this->has_files = false; $this->has_files = false;
for ($i = 1; $i <= 6; ++$i) { for ($i = 0; $i <= 6; ++$i) {
if (strlen($files["file_$i"]["name"]) > 0) { if (strlen($files["file_$i"]["name"]) > 0) {
$this->files[] = $files["file_$i"]; $this->files[] = $files["file_$i"];
$this->has_files = true; $this->has_files = true;
@ -59,7 +60,7 @@ class GiveQuestions
$this->files[] = null; $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() public function makeVerifications()
@ -73,12 +74,12 @@ class GiveQuestions
"Vous devez poser au moins 3 questions."); "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."); 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] == "") if ($this->questions[$i] == "")
$this->questions[$i] = null; $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]["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."); 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 */ /** @var Question[] $questions */
$questions = Question::getQuestions($team, $this->to_team); $questions = Question::getQuestions($team, $this->to_team);
for ($i = 0; $i < 6; ++$i) { for ($i = 0; $i <= 6; ++$i) {
$question = $questions[$i]; $question = $questions[$i];
if ($question->getQuestion() != $this->questions[$i] && $question->getAttachedFile() != null) { if ($question->getQuestion() != $this->questions[$i] && $question->getAttachedFile() != null) {
unlink("$LOCAL_PATH/files/" . $question->getAttachedFile()); unlink("$LOCAL_PATH/files/" . $question->getAttachedFile());

View File

@ -5,7 +5,7 @@ $problem = htmlspecialchars($_GET["probleme"]);
if (!preg_match("#[0-4]#", $problem)) if (!preg_match("#[0-4]#", $problem))
require_once "server_files/404.php"; 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"; require_once "server_files/403.php";
$has_error = false; $has_error = false;

View File

@ -26,6 +26,7 @@ class AnswerQuestions
* @var Team $to_team * @var Team $to_team
*/ */
private $from_team; private $from_team;
private $answer_0;
private $answer_1; private $answer_1;
private $answer_2; private $answer_2;
private $answer_3; private $answer_3;
@ -46,7 +47,7 @@ class AnswerQuestions
$this->files = []; $this->files = [];
$this->has_files = false; $this->has_files = false;
for ($i = 1; $i <= 6; ++$i) { for ($i = 0; $i <= 6; ++$i) {
if (strlen($files["file_$i"]["name"]) > 0) { if (strlen($files["file_$i"]["name"]) > 0) {
$this->files[] = $files["file_$i"]; $this->files[] = $files["file_$i"];
$this->has_files = true; $this->has_files = true;
@ -55,7 +56,7 @@ class AnswerQuestions
$this->files[] = null; $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() 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($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."); 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] == "") if ($this->answers[$i] == "")
$this->answers[$i] = null; $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]["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."); 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 */ /** @var Question[] $questions */
$questions = Question::getQuestions($this->from_team, $team); $questions = Question::getQuestions($this->from_team, $team);
for ($i = 0; $i < 6; ++$i) { for ($i = 0; $i <= 6; ++$i) {
$question = $questions[$i]; $question = $questions[$i];
if ($question->getAnswer() != $this->answers[$i] && $question->getAttachedFileAnswer() != null) { if ($question->getAnswer() != $this->answers[$i] && $question->getAttachedFileAnswer() != null) {
unlink("$LOCAL_PATH/files/" . $question->getAttachedFileAnswer()); unlink("$LOCAL_PATH/files/" . $question->getAttachedFileAnswer());

View File

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

View File

@ -119,6 +119,11 @@ function canValidate(Team $team)
function printDocuments($documents) 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"; echo "<div class=\"alert alert-info\">\n";
foreach ($documents as $document) { foreach ($documents as $document) {
$file_id = $document->getFileId(); $file_id = $document->getFileId();

View File

@ -7,7 +7,7 @@ class Mailer
global $MAIL_DOMAIN, $URL_BASE, $YEAR; global $MAIL_DOMAIN, $URL_BASE, $YEAR;
$content = preg_replace("#{URL_BASE}#", $URL_BASE, $content); $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 = "From: \"Contact Corres2Math\" <" . $from . "@" . $MAIL_DOMAIN . ">\r\n";
$headers .= "Reply-To: \"Contact corres2Math\" <contact@" . $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("#{SURNAME}#", $new_user->surname, $content);
$content = preg_replace("#{TOKEN}#", $new_user->confirm_email_token, $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) public static function sendConfirmEmail(User $user)
@ -80,36 +80,42 @@ class Mailer
$content = preg_replace("#{SURNAME}#", $user->getSurname(), $content); $content = preg_replace("#{SURNAME}#", $user->getSurname(), $content);
$content = preg_replace("#{TOKEN}#", $user->getConfirmEmailToken(), $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) public static function sendChangeEmailAddressMail(User $user)
{ {
global $YEAR;
$content = self::getTemplate("change_email_address"); $content = self::getTemplate("change_email_address");
$content = preg_replace("#{FIRST_NAME}#", $user->getFirstName(), $content); $content = preg_replace("#{FIRST_NAME}#", $user->getFirstName(), $content);
$content = preg_replace("#{SURNAME}#", $user->getSurname(), $content); $content = preg_replace("#{SURNAME}#", $user->getSurname(), $content);
$content = preg_replace("#{TOKEN}#", $user->getConfirmEmailToken(), $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) public static function sendForgottenPasswordProcedureMail(User $user)
{ {
global $YEAR;
$content = self::getTemplate("forgotten_password"); $content = self::getTemplate("forgotten_password");
$content = preg_replace("#{FIRST_NAME}#", $user->getFirstName(), $content); $content = preg_replace("#{FIRST_NAME}#", $user->getFirstName(), $content);
$content = preg_replace("#{SURNAME}#", $user->getSurname(), $content); $content = preg_replace("#{SURNAME}#", $user->getSurname(), $content);
$content = preg_replace("#{TOKEN}#", $user->getForgottenPasswordToken(), $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) public static function sendChangePasswordMail(User $user)
{ {
global $YEAR;
$content = self::getTemplate("change_password"); $content = self::getTemplate("change_password");
$content = preg_replace("#{FIRST_NAME}#", $user->getFirstName(), $content); $content = preg_replace("#{FIRST_NAME}#", $user->getFirstName(), $content);
$content = preg_replace("#{SURNAME}#", $user->getSurname(), $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) public static function sendAddAdminMail(NewAdmin $new_admin)
@ -121,7 +127,7 @@ class Mailer
$content = preg_replace("#{SURNAME}#", $new_admin->surname, $content); $content = preg_replace("#{SURNAME}#", $new_admin->surname, $content);
$content = preg_replace("#{PASSWORD}#", $new_admin->password, $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) public static function sendAddTeamMail(User $user, Team $team)
@ -133,10 +139,13 @@ class Mailer
$content = preg_replace("#{SURNAME}#", $user->getSurname(), $content); $content = preg_replace("#{SURNAME}#", $user->getSurname(), $content);
$content = preg_replace("#{TEAM_NAME}#", $team->getName(), $content); $content = preg_replace("#{TEAM_NAME}#", $team->getName(), $content);
$content = preg_replace("#{TRIGRAM}#", $team->getTrigram(), $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) public static function sendJoinTeamMail(User $user, Team $team)
@ -148,9 +157,12 @@ class Mailer
$content = preg_replace("#{SURNAME}#", $user->getSurname(), $content); $content = preg_replace("#{SURNAME}#", $user->getSurname(), $content);
$content = preg_replace("#{TEAM_NAME}#", $team->getName(), $content); $content = preg_replace("#{TEAM_NAME}#", $team->getName(), $content);
$content = preg_replace("#{TRIGRAM}#", $team->getTrigram(), $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) public static function sendRequestValidationMail(Team $team)
@ -163,7 +175,7 @@ class Mailer
$content = preg_replace("#{PROBLEM}#", $team->getProblem(), $content); $content = preg_replace("#{PROBLEM}#", $team->getProblem(), $content);
$content = preg_replace("#{ACCESS_CODE}#", $team->getAccessCode(), $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) public static function sendValidateTeam($team, $message)
@ -176,7 +188,7 @@ class Mailer
$message = preg_replace("#\n#", "<br/>\n", $message); $message = preg_replace("#\n#", "<br/>\n", $message);
$content = preg_replace("#{MESSAGE}#", $message, $content); $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) public static function sendUnvalidateTeam($team, $message)
@ -189,7 +201,7 @@ class Mailer
$message = preg_replace("#\n#", "<br/>\n", $message); $message = preg_replace("#\n#", "<br/>\n", $message);
$content = preg_replace("#{MESSAGE}#", $message, $content); $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) public static function sendNewVideo(NewVideo $video, Team $team)
@ -201,7 +213,7 @@ class Mailer
$content = preg_replace("#{TRIGRAM}#", $team->getTrigram(), $content); $content = preg_replace("#{TRIGRAM}#", $team->getTrigram(), $content);
$content = preg_replace("#{PROBLEM}#", $team->getProblem(), $content); $content = preg_replace("#{PROBLEM}#", $team->getProblem(), $content);
$content = preg_replace("#{VIDEO_LINK}#", $video->link, $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) public static function sendNewAnswer(NewAnswer $video, Team $team)
@ -217,7 +229,7 @@ class Mailer
$content = preg_replace("#{PROBLEM}#", $team->getProblem(), $content); $content = preg_replace("#{PROBLEM}#", $team->getProblem(), $content);
$content = preg_replace("#{VIDEO_LINK}#", $video->link, $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) public static function validateVideo(Video $video, $message)
@ -238,6 +250,7 @@ class Mailer
$message = preg_replace("#\n#", "<br/>\n", $message); $message = preg_replace("#\n#", "<br/>\n", $message);
$content = preg_replace("#{MESSAGE}#", $message, $content); $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> <body>
Bonjour {FIRST_NAME} {SURNAME},<br /> Bonjour {FIRST_NAME} {SURNAME},<br />
<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 : 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/> <strong>{ACCESS_CODE}</strong><br/>
<br /> <br />

View File

@ -7,8 +7,8 @@
<body> <body>
Bonjour {FIRST_NAME} {SURNAME},<br/> Bonjour {FIRST_NAME} {SURNAME},<br/>
<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 Vous venez de rejoindre l'équipe « {TEAM_NAME} » ({TRIGRAM}) pour les Correspondances des Jeunes Mathématicien·ne·s
remercions.<br/> {PROBLEM} et nous vous en remercions.<br/>
<br/> <br/>
Cordialement,<br/> Cordialement,<br/>
<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. de droit à l'image sont correctes.
{MESSAGE}<br /> {MESSAGE}<br />
<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. pour plus d'informations.
<br/> <br/>
Cordialement,<br/> Cordialement,<br/>

View File

@ -9,7 +9,7 @@ Bonjour {FIRST_NAME} {SURNAME},<br/>
<br/> <br/>
Félicitations ! Votre équipe « {TEAM_NAME} » ({TRIGRAM}) est désormais validée ! Vous êtes désormais apte à travailler sur 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. 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/> <br/>
Cordialement,<br/> Cordialement,<br/>
<br/> <br/>

View File

@ -7,10 +7,13 @@
<body> <body>
Bonjour {FIRST_NAME} {SURNAME},<br/> Bonjour {FIRST_NAME} {SURNAME},<br/>
<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. 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. Vous êtes désormais invités à retravailler vos réponses ou votre présentation orale afin que votre prestation soit
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. 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/> <br/>
{MESSAGE} {MESSAGE}
Cordialement,<br/> Cordialement,<br/>

View File

@ -7,10 +7,13 @@
<body> <body>
Bonjour {FIRST_NAME} {SURNAME},<br/> Bonjour {FIRST_NAME} {SURNAME},<br/>
<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. 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. Vous êtes désormais invités à retravailler vos résultats ou votre présentation orale afin que votre prestation soit
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. 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/> <br/>
{MESSAGE} {MESSAGE}
Cordialement,<br/> Cordialement,<br/>

View File

@ -8,7 +8,8 @@ require_once "header.php";
<?php if (isset($new_team) && !$has_error) { ?> <?php if (isset($new_team) && !$has_error) { ?>
<div class="alert alert-success"> <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> </div>
<?php } elseif ($_SESSION["team"] != NULL) { ?> <?php } elseif ($_SESSION["team"] != NULL) { ?>
<div class="alert alert-danger"> <div class="alert alert-danger">
@ -21,7 +22,7 @@ require_once "header.php";
<?php } else { ?> <?php } else { ?>
<div class="alert alert-info"> <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> </div>
<form method="POST"> <form method="POST">
@ -45,7 +46,7 @@ require_once "header.php";
<option value="0">Choisir un problème ...</option> <option value="0">Choisir un problème ...</option>
<?php <?php
for ($i = 1; $i <= 4; ++$i) 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> </select>
</div> </div>

View File

@ -12,76 +12,88 @@ require_once "header.php";
</div> </div>
<?php } ?> <?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 <?php
for ($i = 0; $i < 2; ++$i) { for ($i = 0; $i < 2; ++$i) {
/** @var Team $answer_team */ /** @var Team $answer_team */
$answer_team = $teams[$i]; $answer_team = $teams[$i];
/** @var Video $sol */ /** @var Video $sol */
$sol = $sols[$i]; $sol = $sols[$i];
/** @var Video $answer */ /** @var Video $answer */
$answer = $answers[$i]; $answer = $answers[$i];
/** @var Video $answer_validated */ /** @var Video $answer_validated */
$answer_validated = $answers_validated[$i]; $answer_validated = $answers_validated[$i];
/** @var Question[] $questions */ /** @var Question[] $questions */
$questions = Question::getQuestions($team, $answer_team); $questions = Question::getQuestions($team, $answer_team);
?> ?>
<div class="jumbotron"> <div class="jumbotron">
<h2>Vidéo de l'équipe <?= $answer_team->getName() ?> (<?= $answer_team->getTrigram() ?>) :</h2> <h2>Vidéo de l'équipe <?= $answer_team->getName() ?> (<?= $answer_team->getTrigram() ?>) :</h2>
<div class="alert alert-info"> <div class="alert alert-info">
<strong>Lien de la vidéo de présentation de la solution au problème :</strong> <strong>Lien de la vidéo de présentation de la solution au problème :</strong>
<a href="<?= $sol->getLink() ?>"><?= $sol->getLink() ?></a> <a href="<?= $sol->getLink() ?>"><?= $sol->getLink() ?></a>
</div> </div>
<?php displayVideo($sol->getLink()) ?> <?php displayVideo($sol->getLink()) ?>
<h5>Questions échangées :</h5> <h5>Questions échangées :</h5>
<?php <?php
for ($j = 0; $j < 6; ++$j) { for ($j = 0; $j <= 6; ++$j) {
/** @var Question $question */ /** @var Question $question */
$question = $questions[$j]; $question = $questions[$j];
if ($question->getQuestion() === null) if ($j > 0 && $question->getQuestion() === null)
continue; continue;
?> ?>
<div class="alert alert-info"> <div class="alert alert-info">
<strong>Question <?= $question->getNumber() + 1 ?> :</strong> <?= $question->getQuestion() ?><br /> <strong><?= $j == 0 ? "Remarques générales :" : "Question " . $question->getNumber() . " :" ?></strong>
<?php <?= $question->getQuestion() ?><br/>
if ($question->getAttachedFile() !== null) { ?> <?php
if ($question->getAttachedFile() !== null) { ?>
<em>Pièce jointe attachée :</em> <em>Pièce jointe attachée :</em>
<a href="/file/<?= $question->getAttachedFile() ?>"><strong>Télécharger</strong></a><br /> <a href="/file/<?= $question->getAttachedFile() ?>"><strong>Télécharger</strong></a><br/>
<?php } ?> <?php } ?>
<strong>Réponse :</strong> <?= $question->getAnswer() ?><br /> <strong>Réponse :</strong> <?= $question->getAnswer() ?><br/>
<?php <?php
if ($question->getAttachedFile() !== null) { ?> if ($question->getAttachedFileAnswer() !== null) { ?>
<em>Pièce jointe attachée :</em> <em>Pièce jointe attachée :</em>
<a href="/file/<?= $question->getAttachedFileAnswer() ?>"><strong>Télécharger</strong></a><br /> <a href="/file/<?= $question->getAttachedFileAnswer() ?>"><strong>Télécharger</strong></a><br/>
<?php } ?> <?php } ?>
</div> </div>
<?php } ?> <?php } ?>
<br/> <br/>
<h5>Vidéo de réponse :</h5> <h5>Vidéo de réponse :</h5>
<?php <?php
if ($answer !== null) { if ($answer !== null) {
$link = $answer->getLink(); $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"; 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); displayVideo($link);
switch ($answer->getValidation()) { switch ($answer->getValidation()) {
case 0: 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>"; echo "<div class=\"alert alert-warning\">La vidéo n'a pas encore été vérifiée par l'équipe d'organisation.</div>";
break; break;
case 1: case 1:
echo "<div class=\"alert alert-success\">La vidéo a été acceptée par l'équipe d'organisation.</div>"; echo "<div class=\"alert alert-success\">La vidéo a été acceptée par l'équipe d'organisation.</div>";
break; break;
case -1: case -1:
echo "<div class=\"alert alert-danger\">La vidéo a été rejetée par l'équipe d'organisation.</div>"; echo "<div class=\"alert alert-danger\">La vidéo a été rejetée par l'équipe d'organisation.</div>";
break; break;
} }
} }
if ($answer_validated != null && $answer_validated->getId() != $answer->getId()) { if ($answer_validated != null && $answer_validated->getId() != $answer->getId()) {
$link = $answer_validated->getLink(); $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"; 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); displayVideo($link);
} }
?> ?>
<form method="POST"> <form method="POST">
<input type="hidden" name="team" value="<?= $i + 1 ?>"/> <input type="hidden" name="team" value="<?= $i + 1 ?>"/>
@ -92,16 +104,19 @@ for ($i = 0; $i < 2; ++$i) {
</div> </div>
</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/> 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> à 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> </form>
</div> </div>
<?php <?php
} }
require_once "footer.php"; require_once "footer.php";

View File

@ -13,6 +13,26 @@ require_once "header.php";
</div> </div>
<?php } ?> <?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 <?php
if ($video !== null) { if ($video !== null) {
$link = $video->getLink(); $link = $video->getLink();

View File

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

View File

@ -3,7 +3,7 @@
<head> <head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> <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="stylesheet" type="text/css" href="/style.css"/>
<link REL="shortcut icon" href="/favicon.ico"/> <link REL="shortcut icon" href="/favicon.ico"/>

View File

@ -84,17 +84,17 @@ if (!$has_error) {
</div> </div>
<div class="alert alert-info"> <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> </div>
<?php if ($team != null && $user->getRole() == Role::PARTICIPANT) { ?>
<hr/> <hr/>
<?php if ($team != null && ($user->getRole() == Role::PARTICIPANT || $user->getRole() == Role::ENCADRANT)) { ?>
<div class="mt-4 mb-4"> <div class="mt-4 mb-4">
<h1 class="display-5">Autorisation de droit à l'image :</h1> <h1 class="display-5">Autorisation de droit à l'image :</h1>
</div> </div>
<?php <?php
print_r($documents);
printDocuments($documents); printDocuments($documents);
} }

View File

@ -11,7 +11,8 @@ require_once "header.php";
if (isset($user) && !$has_error) { if (isset($user) && !$has_error) {
?> ?>
<div class="alert alert-success"> <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> </div>
<?php } else if (isset($_SESSION["user_id"])) { ?> <?php } else if (isset($_SESSION["user_id"])) { ?>
<div class="alert alert-danger"> <div class="alert alert-danger">
@ -105,7 +106,7 @@ if (isset($user) && !$has_error) {
</div> </div>
<label for="receive_animath_mails">J'accepte dêtre recontacté par l'association <em>Animath</em> au sujet <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" <input type="checkbox" id="receive_animath_mails" name="receive_animath_mails"
<?= isset($user) && $user->receive_animath_mails ? "checked" : "" ?> /><br /><br /> <?= isset($user) && $user->receive_animath_mails ? "checked" : "" ?> /><br /><br />

View File

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

View File

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

View File

@ -13,8 +13,8 @@ require_once "header.php";
<strong>Trigramme :</strong> <?= $team->getTrigram() ?> <strong>Trigramme :</strong> <?= $team->getTrigram() ?>
</div> </div>
<div class="alert alert-info"> <div class="alert alert-info">
<strong>Problème :</strong> <a href="/probleme/<?= $team->getProblem() ?>"> <strong>Problème :</strong>
<?= $team->getProblem() == 0 ? "Pas de problème choisi" : $team->getProblem() ?></a> <?= $team->getProblem() == 0 ? "Pas de problème choisi" : $team->getProblem() ?>
</div> </div>
<div class="alert alert-info"> <div class="alert alert-info">
<?php <?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. La date limite d'inscription est dépassée, vous ne pouvez plus demander la validation de votre équipe.
</div> </div>
<?php } else { <?php } else {
if (isset($_GET["modifier"])) { ?> if (isset($_GET["modifier"]) && $team->getValidationStatus() == ValidationStatus::NOT_READY) { ?>
<form method="POST"> <form method="POST">
<div class="form-row"> <div class="form-row">
@ -75,10 +75,10 @@ require_once "header.php";
<div class="form-group row"> <div class="form-group row">
<label for="problem">Problème :</label> <label for="problem">Problème :</label>
<select id="problem" name="problem" class="custom-select"> <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 <?php
for ($i = 1; $i <= 4; ++$i) 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> </select>
</div> </div>
@ -111,7 +111,7 @@ require_once "header.php";
<hr /> <hr />
<form method="post"> <form method="post">
<label for="engage">Je m'engage à participer à l'intégralité des Correspondances</label> <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"> <div class="alert alert-warning">
<strong>Attention !</strong> Une fois votre équipe validée, vous ne pourrez plus modifier le nom <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. 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"/> value="Demander la validation"/>
</form> </form>
<?php } else { ?> <?php } else { ?>
<hr />
<div class="alert alert-warning"> <div class="alert alert-warning">
Pour demander à valider votre équipe, vous devez avoir au moins un encadrant, trois participants, 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. 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> </div>
<?php } ?> <?php } ?>
<div class="alert alert-warning"> <div class="alert alert-info">
<h1>Veuillez toujours enregistrer votre travail ailleurs que sur la plateforme !</h1> Pour cette deuxième phase des Correspondances, vous êtes invités à visionner les vidéos de solution de deux autres
</div> é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 <?php
for ($i = 0; $i < 2; ++$i) { for ($i = 0; $i < 2; ++$i) {
@ -32,37 +44,36 @@ for ($i = 0; $i < 2; ++$i) {
<input type="hidden" name="to" value="<?= $receiver->getTrigram() ?>"/> <input type="hidden" name="to" value="<?= $receiver->getTrigram() ?>"/>
<?php <?php
for ($j = 0; $j < 6; ++$j) { for ($j = 0; $j <= 6; ++$j) {
$question = $questions[$i][$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" <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> onclick="addQuestion(<?= $i ?>, <?= $j ?>)">Ajouter une question</a>
<br/> <br/>
<?php <?php } ?>
} <div class="alert alert-info" id="block_<?= $i ?>_<?= $j ?>" style="display: <?= $j > 0 && $question->getQuestion() == null ? "none" : "block" ?>;">
?>
<div id="block_<?= $i ?>_<?= $j ?>" style="display: <?= $question->getQuestion() == null ? "none" : "block" ?>;">
<div class="form-group-row"> <div class="form-group-row">
<label for="question_<?= $j + 1 ?>_<?= $i ?>">Question <?= $j + 1 ?> :</label> <label for="question_<?= $j ?>_<?= $i ?>">
<textarea class="form-control" id="question_<?= $j + 1 ?>_<?= $i ?>" <strong><?= $j == 0 ? "Remarques générales :" : "Question " . $j . " :" ?></strong>
name="question_<?= $j + 1 ?>"><?= $question->getQuestion() ?></textarea> </label>
<textarea class="form-control" id="question_<?= $j ?>_<?= $i ?>"
name="question_<?= $j ?>"><?= $question->getQuestion() ?></textarea>
</div> </div>
<?php <?php
if ($question->getAttachedFile() != null) { ?> if ($question->getAttachedFile() != null) { ?>
<br/> <br/>
<div class="alert alert-info"> <div class="alert alert-warning">
Pièce jointe : <a href="/file/<?= $question->getAttachedFile() ?>">Télécharger</a> Pièce jointe : <a href="/file/<?= $question->getAttachedFile() ?>">Télécharger</a>
</div> </div>
<?php } ?> <?php } ?>
<div class="form-group-row"> <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> :</label>
<input type="file" name="file_<?= $j + 1 ?>" id="file_<?= $j + 1 ?>"/> <input type="file" name="file_<?= $j ?>" id="file_<?= $j ?>"/>
</div> </div>
</div> </div>

View File

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

View File

@ -13,6 +13,16 @@ if (isset($answer_questions) && !$has_error) { ?>
</div> </div>
<?php } ?> <?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"> <div class="alert alert-info">
<strong>Lien de la vidéo :</strong> <a href="<?= $video->getLink() ?>"><?= $video->getLink() ?></a> <strong>Lien de la vidéo :</strong> <a href="<?= $video->getLink() ?>"><?= $video->getLink() ?></a>
</div> </div>
@ -22,18 +32,21 @@ if (isset($answer_questions) && !$has_error) { ?>
<?php <?php
foreach ($questions as $questions_team) { foreach ($questions as $questions_team) {
$from = Team::fromId($questions_team[0]->getFrom()); $from = Team::fromId($questions_team[0]->getFrom());
$remark = $questions_team[0];
echo "<h4>Questions de l'équipe " . $from->getName() . " (" . $from->getTrigram() . ") :</h4>\n"; echo "<h4>Questions de l'équipe " . $from->getName() . " (" . $from->getTrigram() . ") :</h4>\n";
?> ?>
<form method="POST" enctype="multipart/form-data"> <form method="POST" enctype="multipart/form-data">
<input type="hidden" name="from" value="<?= $from->getTrigram() ?>"/> <input type="hidden" name="from" value="<?= $from->getTrigram() ?>"/>
<?php <?php
for ($i = 0; $i < sizeof($questions_team); ++$i) { for ($i = 0; $i < sizeof($questions_team); ++$i) {
$question = $questions_team[$i]; $question = $questions_team[$i];
if ($question->getQuestion() == null) if ($i > 0 && $question->getQuestion() == null)
continue; continue;
?> ?>
<div class="alert alert-info"> <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 <?php
if ($question->getAttachedFile() != null) { ?> if ($question->getAttachedFile() != null) { ?>
Pièce jointe : Pièce jointe :
@ -41,9 +54,9 @@ foreach ($questions as $questions_team) {
<?php } ?> <?php } ?>
<div class="form-group row"> <div class="form-group row">
<div class="form-group col-md-12"> <div class="form-group col-md-12">
<label for="answer_<?= $i + 1 ?>">Réponse :</label> <label for="answer_<?= $i ?>"><strong>Réponse :</strong></label>
<textarea class="form-control" id="answer_<?= $i + 1 ?>" <textarea class="form-control" id="answer_<?= $i ?>"
name="answer_<?= $i + 1 ?>"><?= $question->getAnswer() ?></textarea> name="answer_<?= $i ?>"><?= $question->getAnswer() ?></textarea>
</div> </div>
</div> </div>
<?php <?php
@ -53,8 +66,8 @@ foreach ($questions as $questions_team) {
<?php } ?> <?php } ?>
<div class="form-group row"> <div class="form-group row">
<div class="form-group col-md-12"> <div class="form-group col-md-12">
<label for="file_<?= $i + 1 ?>">Ajouter une pièce jointe (<em>facultatif</em>) :</label> <label for="file_<?= $i ?>">Ajouter une pièce jointe (<em>facultatif</em>) :</label>
<input type="file" name="file_<?= $i + 1 ?>" id="file_<?= $i + 1 ?>"/> <input type="file" name="file_<?= $i ?>" id="file_<?= $i ?>"/>
</div> </div>
</div> </div>
</div> </div>

View File

@ -51,6 +51,12 @@ for ($problem = 1; $problem <= 4; ++$problem) { ?>
<form method="POST"> <form method="POST">
<input type="hidden" name="validate_video" value=""/> <input type="hidden" name="validate_video" value=""/>
<input type="hidden" name="video_id" value="<?= $video->getId() ?>"/> <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" <input class="btn btn-primary btn-lg" style="width: <?= $video->getValidation() == 0 ? 49 : 100 ?>%;" type="submit" name="accept"
value="Accepter la vidéo"/> value="Accepter la vidéo"/>
<?php if ($video->getValidation() == 0) { ?> <?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"; echo "<h5>Questions posées par l'équipe " . $from->getName() . " (" . $from->getTrigram() . ") :</h5>\n";
for ($i = 0; $i < sizeof($from_questions); ++$i) { for ($i = 0; $i < sizeof($from_questions); ++$i) {
$question = $from_questions[$i]; $question = $from_questions[$i];
if ($question->getQuestion() == null) if ($i > 0 && $question->getQuestion() == null)
continue; continue;
echo "<div class=\"alert alert-info\">\n"; 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) 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"; 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) if ($question->getAnswer() != null)
@ -114,18 +120,24 @@ for ($problem = 1; $problem <= 4; ++$problem) { ?>
<form method="POST"> <form method="POST">
<input type="hidden" name="validate_video" value=""/> <input type="hidden" name="validate_video" value=""/>
<input type="hidden" name="video_id" value="<?= $answer->getId() ?>"/> <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"/> <div class="form-group row">
<?php if ($video->getValidation() == 0) { ?> <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" <input class="btn btn-light btn-lg" style="width: 49%;" type="submit" name="reject"
value="Refuser la vidéo"/> value="Refuser la vidéo"/>
<?php } ?> <?php } ?>
</form> </form>
<br/> <br/>
<?php } <?php }
if ($video->getValidation() != 0) { ?> if ($answer->getValidation() != 0) { ?>
<div class="alert alert-<?= $video->getValidation() == 1 ? "success" : "danger" ?>"> <div class="alert alert-<?= $answer->getValidation() == 1 ? "success" : "danger" ?>">
La vidéo a été <?= $video->getValidation() == 1 ? "acceptée" : "refusée" ?>. La vidéo a été <?= $answer->getValidation() == 1 ? "acceptée" : "refusée" ?>.
</div> </div>
<?php } <?php }
if ($answer->getValidation() != Video::ACCEPTED) { if ($answer->getValidation() != Video::ACCEPTED) {