<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
{
// {{{ properties
- var $m_forlife;
- var $m_bestalias;
- var $m_prenom;
- var $m_nom;
- var $m_promo;
- var $m_sexe;
- var $m_email;
- var $old_email;
- var $m_comment;
-
- var $rules = "Accepter si l'adresse mail parait correcte, et pas absurde (ou si le marketeur est de confiance).
- Si le demandeur marque sa propre adresse mail, refuser dans tous les cas.
+ public $m_user;
+ public $m_comment;
+ public $m_email;
+
+ private $m_reactive = false;
+
+ public $rules = "Accepter si l'adresse email parait correcte, et pas absurde (ou si le marketeur est de confiance).
+ Si le demandeur marque sa propre adresse email, refuser dans tous les cas.
Si l'adresse proposée est surveillée, refuser.
- Si le compte associé est désactivé, étudier le cas en fonction de la raison de la désactivation";
+ Si le compte associé est désactivé, étudier le cas en fonction de la raison de la désactivation.";
// }}}
// {{{ constructor
- function BrokenReq($sender, $user, $email, $comment = null)
+ public function __construct(User &$sender, User &$user, $email, $comment = null)
{
- $this->Validate($sender, false, 'broken');
- $this->m_email = $email;
+ parent::__construct($sender, false, 'broken');
+ $this->m_user = &$user;
$this->m_comment = trim($comment);
- $this->m_forlife = $user['forlife'];
- $this->m_bestalias = $user['bestalias'];
- $this->m_prenom = $user['prenom'];
- $this->m_nom = $user['nom'];
- $this->m_promo = $user['promo'];
- $this->m_sexe = $user['sexe'];
- $this->old_email = $user['email'];
+ $this->m_email = $email;
}
// }}}
// {{{ function formu()
- function formu()
+ public function formu()
{
return 'include/form.valid.broken.tpl';
}
// }}}
// {{{ function _mail_subj
-
- function _mail_subj()
+
+ protected function _mail_subj()
{
- return "[Polytechnique.org] Récupération de {$this->m_prenom} {$this->m_nom} ({$this->m_promo})";
+ return "[Polytechnique.org] Récupération de {$this->m_user->fullName()} ({$this->m_user->promo()})";
}
// }}}
// {{{ function _mail_body
- function _mail_body($isok)
+ protected function _mail_body($isok)
{
- if ($isok) {
- return " Un mail de contact vient d'être envoyé "
- ." à {$this->m_prenom} {$this->m_nom} ({$this->m_promo}) pour confirmer sa volonté de"
- ." mettre à jour sa redirection Polytechnique.org!\n\n"
+ if ($isok && !$this->m_reactive) {
+ return " Un email de contact vient d'être envoyé à {$this->m_user->fullName()}"
+ . " ({$this->m_user->promo()}) pour confirmer sa volonté de"
+ . " mettre à jour sa redirection Polytechnique.org !\n\n"
+ . "Merci de ta participation !\n";
+ } elseif ($isok) {
+ return " L'adresse de redirection {$this->m_email} de {$this->m_user->fullName()} ({$this->m_user->promo()}) "
+ ."vient d'être réactivée. Un email lui a été envoyé pour l'en informer.\n\n"
."Merci de ta participation !\n";
} else {
- return " Nous n'avons pas jugé bon d'envoyer de mail de contact à {$this->m_prenom} {$this->m_nom} ({$this->m_promo}).";
+ return " Nous n'utiliserons pas cette adresse pour contacter {$this->m_user->fullName()} ({$this->m_user->promo()}).";
}
}
// }}}
// {{{ function commit()
- function commit()
+ public function commit()
{
global $globals;
- $email = $this->m_bestalias . '@' . $globals->mail->domain;
- if ($this->old_email) {
+ $email = $this->m_user->bestEmail();
+
+ XDB::execute("UPDATE emails
+ SET flags = 'active', panne_level = 2
+ WHERE uid = {?} AND email = {?}", $this->m_user->id(), $this->m_email);
+ if (XDB::affectedRows() > 0) {
+ $this->m_reactive = true;
+ $mailer = new PlMailer();
+ $mailer->setFrom('"Association Polytechnique.org" <register@' . $globals->mail->domain . '>');
+ $mailer->addTo($email);
+ $mailer->setSubject("Mise à jour de ton adresse {$email}");
+ $mailer->setTxtBody(wordwrap("Cher Camarade,\n\n"
+ . "Ton adresse {$email} étant en panne et ayant été informés que ta redirection {$this->m_email}, jusqu'à présent inactive, "
+ . "est fonctionnelle, nous venons de réactiver cette adresse.\n\n"
+ . "N'hésite pas à aller gérer toi-même tes redirections en te rendant à la page :\n"
+ . "https://www.polytechnique.org/emails/redirect\n"
+ . "Si tu as perdu ton mot de passe d'accès au site, tu peux également effectuer la procédure de récupération à l'adresse :\n"
+ . "https://www.polytechnique.org/recovery\n\n"
+ . "-- \nTrès Cordialement,\nL'Équipe de Polytechnique.org\n"));
+ $mailer->send();
+ return true;
+ }
+
+ if ($this->m_user->email) {
$subject = "Ton adresse $email semble ne plus fonctionner";
$reason = "Nous avons été informés que ton adresse $email ne fonctionne plus correctement par un camarade";
} else {
- $res = XDB::iterRow("SELECT email
- FROM emails AS e
- INNER JOIN aliases AS a ON (a.id = e.uid)
- WHERE a.alias = {?} AND e.flags = 'panne'", $this->m_forlife);
+ $res = XDB::iterRow("SELECT email FROM emails WHERE uid = {?} AND flags = 'panne'", $this->m_user->id());
$redirect = array();
while (list($red) = $res->next()) {
list(, $redirect[]) = explode('@', $red);
}
$subject = "Ton adresse $email ne fonctionne plus";
- $reason = "Ton adresse $email ne fonctionne plus ";
+ $reason = "Ton adresse $email ne fonctionne plus";
if (!count($redirect)) {
$reason .= '.';
} elseif (count($redirect) == 1) {
- $reason .= ' car sa redirection vers ' . $redirect[0] . ' est hors-service depuis plusiers mois.';
+ $reason .= ' car sa redirection vers ' . $redirect[0] . ' est hors-service depuis plusieurs mois.';
} else {
- $reason .= ' cas ses redirections vers ' . implode(', ', $redirect)
+ $reason .= ' car ses redirections vers ' . implode(', ', $redirect)
. ' sont hors-services depuis plusieurs mois.';
}
}
- $body = ($this->m_sexe ? 'Chère ' : 'Cher ') . $this->m_prenom . ",\n\n"
+ $body = ($this->m_user->isFemale() ? 'Chère ' : 'Cher ') . $this->m_user->displayName() . ",\n\n"
. $reason . "\n\n"
. "L'adresse {$this->m_email} nous a été communiquée, veux-tu que cette adresse devienne ta nouvelle "
- . "adresse devienne ta nouvelle adresse de redirection ? Si oui, envoie nous des informations qui "
- . "nous permettrons de nous assurer de ton identité (par exemple ta date de naissance et ta promotion)\n"
- . "-- \nTrès Cordialement,\nL'Equipe de Polytechnique.org\n";
+ . "adresse de redirection ? Si oui, envoie nous des informations qui "
+ . "nous permettront de nous assurer de ton identité (par exemple ta date de naissance et ta promotion).\n\n"
+ . "-- \nTrès Cordialement,\nL'Équipe de Polytechnique.org\n";
$body = wordwrap($body, 78);
$mailer = new PlMailer();
- $mailer->setFrom('"Association Polytechnique.org" <register@polytechnique.org>');
+ $mailer->setFrom('"Association Polytechnique.org" <register@' . $globals->mail->domain . '>');
$mailer->addTo($this->m_email);
$mailer->setSubject($subject);
$mailer->setTxtBody($body);