From 9e7a7308bedc972f9138f99f3875ea032324c1ae Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Thu, 16 Jan 2020 23:00:31 +0100 Subject: [PATCH] Corrections dans les mails --- server_files/controllers/ajouter_equipe.php | 2 +- server_files/controllers/equipe.php | 6 ++ server_files/controllers/mon_equipe.php | 4 +- server_files/services/mail.php | 95 ++++++++++++++++++- .../mail_templates/request_validation.html | 19 ++++ .../mail_templates/unvalidate_team.html | 19 ++++ .../mail_templates/validate_team.html | 18 ++++ 7 files changed, 156 insertions(+), 7 deletions(-) create mode 100644 server_files/services/mail_templates/request_validation.html create mode 100644 server_files/services/mail_templates/unvalidate_team.html create mode 100644 server_files/services/mail_templates/validate_team.html diff --git a/server_files/controllers/ajouter_equipe.php b/server_files/controllers/ajouter_equipe.php index 9b8b4b7..95112bb 100644 --- a/server_files/controllers/ajouter_equipe.php +++ b/server_files/controllers/ajouter_equipe.php @@ -51,7 +51,7 @@ class NewTeam { $req = $DB->prepare("INSERT INTO `teams` (`name`, `trigram`, `tournament`, `encadrant_1`, `participant_1`, `validation_status`, `access_code`, `year`) VALUES (?, ?, ?, ?, ?, ?, ?, ?);"); $req->execute([$this->name, $this->trigram, $this->tournament_id, $_SESSION["role"] == Role::ENCADRANT ? $_SESSION["user_id"] : NULL, - $_SESSION["role"] == Role::PARTICIPANT ? $_SESSION["user_id"] : NULL, ValidationStatus::NOT_READY, $this->access_code, $YEAR]); + $_SESSION["role"] == Role::PARTICIPANT ? $_SESSION["user_id"] : NULL, ValidationStatus::getName(ValidationStatus::NOT_READY), $this->access_code, $YEAR]); $_SESSION["team"] = Team::fromTrigram($this->trigram); $_SESSION["user"]->setTeamId($_SESSION["team"]->getId()); diff --git a/server_files/controllers/equipe.php b/server_files/controllers/equipe.php index 14d1b13..6727918 100644 --- a/server_files/controllers/equipe.php +++ b/server_files/controllers/equipe.php @@ -13,7 +13,13 @@ if ($team === null) if (isset($_POST["validate"])) { $team->setValidationStatus(ValidationStatus::VALIDATED); + Mailer::sendValidateTeam($team, $_POST["message"]); } +elseif (isset($_POST["unvalidate"])) { + $team->setValidationStatus(ValidationStatus::NOT_READY); + Mailer::sendUnvalidateTeam($team, $_POST["message"]); +} + if (isset($_POST["select"])) { $team->selectForFinal(true); diff --git a/server_files/controllers/mon_equipe.php b/server_files/controllers/mon_equipe.php index 06490f0..e3d6d34 100644 --- a/server_files/controllers/mon_equipe.php +++ b/server_files/controllers/mon_equipe.php @@ -41,8 +41,10 @@ else if (isset($_POST["request_validation"])) { if (!canValidate($team, $tournament)) $error_message = "Votre équipe ne peut pas demander la validation : il manque soit des participants, soit des documents."; - else + else { $team->setValidationStatus(ValidationStatus::WAITING); + Mailer::sendRequestValidationMail($team, $team->isSelectedForFinal() ? $FINAL : $tournament); + } } class MyTeam diff --git a/server_files/services/mail.php b/server_files/services/mail.php index 4c927ae..da1f0ad 100644 --- a/server_files/services/mail.php +++ b/server_files/services/mail.php @@ -16,6 +16,56 @@ class Mailer mail($email, $subject, $content, $headers); } + private static function broadcastToTeam(Team $team, $subject, $content, $from = "contact") + { + $content = preg_replace("#{TEAM_NAME}#", $team->getName(), $content); + $content = preg_replace("#{TRIGRAM}#", $team->getTrigram(), $content); + + foreach ($team->getEncadrants() as $participant_id) { + $participant = User::fromId($participant_id); + if ($participant == null) + continue; + + $c = preg_replace("#{FIRST_NAME}#", $participant->getFirstName(), $content); + $c = preg_replace("#{SURNAME}#", $participant->getSurname(), $c); + self::sendMail($participant->getEmail(), $subject, $c, $from); + } + + foreach ($team->getParticipants() as $participant_id) { + $participant = User::fromId($participant_id); + if ($participant == null) + continue; + + $c = preg_replace("#{FIRST_NAME}#", $participant->getFirstName(), $content); + $c = preg_replace("#{SURNAME}#", $participant->getSurname(), $c); + self::sendMail($participant->getEmail(), $subject, $c, $from); + } + } + + private static function broadcastToAdmins($subject, $content, $from = "contact") + { + /** @var User $admin */ + foreach (User::getAdmins() as $admin) { + $c = preg_replace("#{FIRST_NAME}#", $admin->getFirstName(), $content); + $c = preg_replace("#{SURNAME}#", $admin->getSurname(), $c); + self::sendMail($admin->getEmail(), $subject, $c, $from); + } + } + + private static function brodcastToOrgas(Tournament $tournament, $subject, $content, $from = "contact") + { + foreach ($tournament->getOrganizers() as $orga) { + if ($orga->getRole() == Role::ADMIN) + continue; + + $c = preg_replace("#{FIRST_NAME}#", $orga->getFirstName(), $content); + $c = preg_replace("#{SURNAME}#", $orga->getSurname(), $c); + self::sendMail($orga->getEmail(), $subject, $c, $from); + } + + self::broadcastToAdmins($subject, $content, $from); + } + private static function getTemplate($name) { global $LOCAL_PATH; @@ -146,11 +196,46 @@ class Mailer else $content = preg_replace("#{PAYMENT_INFOS}#", $payment->getTransactionInfos(), $content); - foreach (User::getAdmins() as $admin) { - $content = preg_replace("#{FIRST_NAME}#", $admin->getFirstName(), $content); - $content = preg_replace("#{SURNAME}#", $admin->getSurname(), $content); - self::sendMail($admin->getEmail(), "Demande de validation de paiement pour le tournoi " . $tournament->getName() . " – TFJM² $YEAR", $content); - } + self::broadcastToAdmins("Demande de validation de paiement pour le tournoi " . $tournament->getName() . " – TFJM² $YEAR", $content); + } + + public static function sendRequestValidationMail(Team $team, Tournament $tournament) + { + 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("#{TOURNAMENT}#", $tournament->getName(), $content); + $content = preg_replace("#{ACCESS_CODE}#", $team->getAccessCode(), $content); + + self::brodcastToOrgas($tournament, "Demande de validation – Correspondances des Jeunes Mathématicien·ne·s $YEAR - " . ($YEAR + 1), $content); + } + + public static function sendValidateTeam($team, $message) + { + global $YEAR; + + $content = self::getTemplate("validate_team"); + if (strlen($message) > 0) + $message = " L'équipe d'organisation vous transmet le message suivant :\n\n" . $message; + $message = preg_replace("#\n#", "
\n", $message); + $content = preg_replace("#{MESSAGE}#", $message, $content); + + self::broadcastToTeam($team, "Équipe validée – Correspondances des Jeunes Mathématicien·ne·s $YEAR - " . ($YEAR + 1), $content); + } + + public static function sendUnvalidateTeam($team, $message) + { + global $YEAR; + + $content = self::getTemplate("unvalidate_team"); + if (strlen($message) > 0) + $message = " L'équipe d'organisation vous transmet le message suivant :\n\n" . $message; + $message = preg_replace("#\n#", "
\n", $message); + $content = preg_replace("#{MESSAGE}#", $message, $content); + + self::broadcastToTeam($team, "Équipe non validée – Correspondances des Jeunes Mathématicien·ne·s $YEAR - " . ($YEAR + 1), $content); } public static function sendValidatePayment(User $user, Team $team, Tournament $tournament, Payment $payment, $message) diff --git a/server_files/services/mail_templates/request_validation.html b/server_files/services/mail_templates/request_validation.html new file mode 100644 index 0000000..203d616 --- /dev/null +++ b/server_files/services/mail_templates/request_validation.html @@ -0,0 +1,19 @@ + + + + + + Demande de validation - TFJM² + + +Bonjour {FIRST_NAME} {SURNAME},
+
+L'équipe « {TEAM_NAME} » ({TRIGRAM}) vient de demander à valider son équipe pour participer au tournoi {TOURNAMENT} du +TFJM². Vous pouvez décider d'accepter ou de refuser l'équipe en vous rendant sur la page de l'équipe : +{URL_BASE}/equipe/{TRIGRAM}
+
+Cordialement,
+
+Le comité national d'organisation du TFJM2 + + \ No newline at end of file diff --git a/server_files/services/mail_templates/unvalidate_team.html b/server_files/services/mail_templates/unvalidate_team.html new file mode 100644 index 0000000..d9c5588 --- /dev/null +++ b/server_files/services/mail_templates/unvalidate_team.html @@ -0,0 +1,19 @@ + + + + + Équipe non validée – TFJM² {YEAR} + + +Bonjour {FIRST_NAME} {SURNAME},
+
+Maleureusement, votre équipe « {TEAM_NAME} » ({TRIGRAM}) n'a pas été validée. Veuillez vérifier que vos autorisations sont correctes. +{MESSAGE}
+
+N'hésitez pas à nous contacter à l'adresse contact@tfjm.org pour plus d'informations. +
+Cordialement,
+
+Le comité national d'organisation du TFJM2 + + \ No newline at end of file diff --git a/server_files/services/mail_templates/validate_team.html b/server_files/services/mail_templates/validate_team.html new file mode 100644 index 0000000..1837756 --- /dev/null +++ b/server_files/services/mail_templates/validate_team.html @@ -0,0 +1,18 @@ + + + + + Équipe validée – Correspondances des Jeunes Mathématicien·ne·s {YEAR} + + +Bonjour {FIRST_NAME} {SURNAME},
+
+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}
+
+Cordialement,
+
+Le comité national d'organisation du TFJM2 + + \ No newline at end of file