Beaucoup de petites modifications

This commit is contained in:
galaxyoyo 2019-10-06 13:29:20 +02:00
parent 8ab6a7a3aa
commit 866d4a2744
15 changed files with 107 additions and 19 deletions

Binary file not shown.

Binary file not shown.

View File

@ -58,6 +58,8 @@ $ROUTES["^suivi-tournoi/?$"] = ["server_files/controllers/suivi_tournoi.php"];
# Assets files
$ROUTES["^Autorisation de droit à l'image - majeur.pdf$"] = ["assets/Autorisation de droit à l'image - majeur.pdf", "application/pdf"];
$ROUTES["^Autorisation de droit à l'image - mineur.pdf$"] = ["assets/Autorisation de droit à l'image - mineur.pdf", "application/pdf"];
$ROUTES["^favicon\.ico$"] = ["assets/favicon.ico", "image/x-icon"];
$ROUTES["^logo\.png"] = ["assets/logo.png", "image/png"];
$ROUTES["^style\.css$"] = ["assets/style.css", "text/css"];

View File

@ -79,7 +79,7 @@ class Document
$req = $DB->query("SELECT * FROM `documents` AS `t1` "
. "INNER JOIN (SELECT `user`, `problem`, MAX(`uploaded_at`) AS `last_upload`, COUNT(`team`) AS `version` FROM `documents` GROUP BY `problem`, `user`) `t2` "
. "ON `t1`.`user` = `t2`.`user` AND `t1`.`problem` = `t2`.`problem` "
. "WHERE `t1`.`uploaded_at` = `t2`.`last_upload` AND `t1`.`problem` = $problem " . ($team_id >= 0 ? "AND `team` = $team_id" : "") . ";");
. "WHERE `t1`.`uploaded_at` = `t2`.`last_upload` AND `t1`.`problem` = $problem " . ($team_id >= 0 ? "AND `team` = $team_id" : "") . " ORDER BY `t1`.`user`;");
$docs = [];

View File

@ -18,6 +18,40 @@ elseif (isset($_POST["unvalidate"])) {
$team->setValidationStatus(ValidationStatus::NOT_READY);
Mailer::sendUnvalidateTeam($team);
}
elseif (isset($_POST["select_problem"])) {
if ($team->getValidationStatus() == ValidationStatus::NOT_READY) {
$problem = $_POST["select_problem"];
if (preg_match("#[0-4]#", $problem)) {
$team->setProblem($problem);
$DB->prepare("UPDATE `documents` SET `problem` = ? WHERE `team` = ?;")->execute([$problem, $team->getId()]);
}
else {
$has_error = true;
$error_message = "Le problème indiqué n'existe pas.";
}
}
else {
$has_error = true;
$error_message = "Cette équipe est déjà validée ou en cours de validation.";
}
}
elseif (isset($_POST["delete_team"])) {
if ($team->getValidationStatus() == ValidationStatus::NOT_READY) {
$documents = Document::getAllDocuments($team->getProblem(), $team->getId());
/** @var Document $doc */
foreach ($documents as $doc)
unlink($LOCAL_PATH . "/files/" . $doc->getFileId());
$DB->prepare("DELETE FROM `documents` WHERE `team` = ?;")->execute([$team->getId()]);
$DB->prepare("DELETE FROM `teams` WHERE `id` = ?;")->execute([$team->getId()]);
$DB->prepare("UPDATE `users` SET `team_id` = NULL WHERE `team_id` = ?;")->execute([$team->getId()]);
header("Location: /");
exit(0);
}
else {
$has_error = true;
$error_message = "Cette équipe est déjà validée ou en cours de validation.";
}
}
if (isset($_POST["download_zip"])) {
$file_name = getZipFile($team->getProblem(), $team->getId());

View File

@ -92,6 +92,6 @@ class AttributeTeam
}
if ($team != null)
$documents = $user->getAllDocuments($team->getProblem());
$documents = $user->getAllDocuments();
require_once "server_files/views/informations.php";

View File

@ -29,8 +29,10 @@ if (isset($_POST["request_validation"])) {
$has_error = true;
$error_message = "Vous devez cocher la case qui vous engage à participer à l'intégralité des Correspondances.";
}
else
else {
$_SESSION["team"]->setValidationStatus(ValidationStatus::WAITING);
Mailer::sendRequestValidationMail($team);
}
}
/** @var Question[][] $questions_received */
@ -95,6 +97,7 @@ class MyTeam
$this->team->setProblem($this->problem);
$DB->exec("UPDATE `teams` SET `problem` = " . $this->problem . " WHERE `id` = " . $this->team->getId() . ";");
$DB->exec("UPDATE `documents` SET `problem` = " . $this->problem . " WHERE `team` = " . $this->team->getId() . ";");
header("Location: $URL_BASE/mon-equipe");
}

View File

@ -95,13 +95,6 @@ function canValidate(Team $team)
$can_validate &= $team->getParticipants()[2] != null;
$can_validate &= preg_match("#[1-4]#", $team->getProblem());
if ($team->getEncadrantId() != null) {
$req = $DB->prepare("SELECT COUNT(*) AS `version` FROM `documents` WHERE `user` = ? AND `problem` = ?;");
$req->execute([$team->getEncadrantId(), $team->getProblem()]);
$d = $req->fetch();
$can_validate &= $d["version"] > 0;
}
for ($i = 1; $i <= 5; ++$i) {
if ($team->getParticipants()[$i] === NULL)
continue;

View File

@ -150,6 +150,19 @@ class Mailer
self::sendMail($user->getEmail(), "Équipe rejointe Correspondances des Jeunes Mathématicien·ne·s $YEAR", $content);
}
public static function sendRequestValidationMail(Team $team)
{
global $YEAR;
$content = self::getTemplate("request_validation");
$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);
self::broadcastToAdmins("Ajout d'une équipe Correspondances des Jeunes Mathématicien·ne·s $YEAR", $content);
}
public static function sendValidateTeam($team)
{
global $YEAR;

View File

@ -0,0 +1,19 @@
<!DOCTYPE html>
<!--suppress HtmlUnknownTarget -->
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Demande de validation - Correspondances des Jeunes Mathématicien·ne·s</title>
</head>
<body>
Bonjour {FIRST_NAME} {SURNAME},<br />
<br />
L'équipe « {TEAM_NAME} » ({TRIGRAM}) vient de demander à valider son équipe pour participer au problème n°{PROBLEM} des
Correspondances des Jeunes Mathématicien·ne·s. Vous pouvez décider d'accepter ou de refuser l'équipe en vous rendant sur
la page de l'équipe : <a href="{URL_BASE}/equipe/{TRIGRAM}">{URL_BASE}/equipe/{TRIGRAM}</a><br/>
<br/>
Cordialement,<br/>
<br />
L'organisation des Correspondances des Jeunes Mathématicien·ne·s
</body>
</html>

View File

@ -11,9 +11,22 @@
<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>
<?php if (date("Y-m-d H:i:s") < $CONFIG->getInscriptionDate()) { ?>
<label for="problem">Problème :</label>
<form method="POST">
<select class="custom-select" id="problem" name="select_problem" onchange="this.form.submit()">
<option value="0">Pas de problème choisi</option>
<?php
for ($i = 1; $i <= 4; ++$i) { ?>
<option value="<?= $i ?>" <?= $team->getProblem() == $i ? "selected" : "" ?>>Problème <?= $i ?></option>
<?php } ?>
</select>
</form>
<?php } else { ?>
<strong>Problème :</strong> <a href="/probleme/<?= $team->getProblem() ?>">
<?= $team->getProblem() == 0 ? "Pas de problème choisi" : $team->getProblem() ?>
</a>
<?php } ?>
</div>
<div class="alert alert-<?= $team->getValidationStatus() == ValidationStatus::VALIDATED ? "success" : ($team->getValidationStatus() == ValidationStatus::WAITING ? "warning" : "danger") ?>">
<strong>Validation de l'équipe
@ -78,7 +91,7 @@ if ($_SESSION["role"] == Role::ADMIN) { ?>
<hr/>
<h2>Autorisations</h2>
<h2>Autorisations de droit à l'image</h2>
<?php printDocuments($documents) ?>
@ -99,6 +112,11 @@ if ($_SESSION["role"] == Role::ADMIN) { ?>
</div>
</form>
<?php
}
} elseif ($team->getValidationStatus() == ValidationStatus::NOT_READY && $_SESSION["role"] == Role::ADMIN) { ?>
<hr/>
<form method="POST">
<input type="submit" class="btn btn-primary btn-lg btn-block" name="delete_team" value="Supprimer l'équipe" style="background-color: #ff2e34"/>
</form>
<?php }
require_once "footer.php" ?>

View File

@ -46,7 +46,7 @@
<div class="alert alert-warning">
<strong>Attention aux dates !</strong> Si vous ne finalisez pas votre inscription dans le délai indiqué, vous
ne pourrez malheureusement pas participer au tournoi.
ne pourrez malheureusement pas participer aux Correspondances.
</div>
<div class="alert alert-info">

View File

@ -94,6 +94,7 @@ if (!$has_error) {
<h1 class="display-5">Autorisation de droit à l'image :</h1>
</div>
<?php
print_r($documents);
printDocuments($documents);
}

View File

@ -91,7 +91,7 @@ if (!$has_error && (isset($my_account) || isset($new_password))) {
</div>
</div>
<?php } else { ?>
<?php } else if ($user->getRole() == Role::ENCADRANT) { ?>
<div class="form-group row">
<label id="description_label" for="description">Activité professionnelle :</label>
@ -134,12 +134,17 @@ if (!$has_error && (isset($my_account) || isset($new_password))) {
</div>
</form>
<?php if (isset($_SESSION["team"]) && $_SESSION["team"]->getValidationStatus() == ValidationStatus::NOT_READY) { ?>
<?php if (isset($_SESSION["team"]) && $user->getRole() == Role::PARTICIPANT && $_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 printDocuments($documents); ?>
<form method="POST" enctype="multipart/form-data">

View File

@ -101,7 +101,7 @@ require_once "header.php";
<hr/>
<form method="POST">
<input class="btn btn-primary btn-lg btn-block" type="submit" name="leave_team"
<input class="btn btn-primary btn-lg btn-block" type="submit" name="leave_team" style="background-color: #ff2e34"
value="Quitter l'équipe"/>
</form>