Merge branch 'master' of /home/git/platal into profile_edit
[platal.git] / include / validations / broken.inc.php
index 951a8b7..80317a7 100644 (file)
@@ -24,26 +24,28 @@ class BrokenReq extends Validate
 {
     // {{{ 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).
+    public $m_forlife;
+    public $m_bestalias;
+    public $m_prenom;
+    public $m_nom;
+    public $m_promo;
+    public $m_sexe;
+    public $m_email;
+    public $old_email;
+    public $m_comment;
+
+    private $m_reactive = false;
+
+    public $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.
-    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 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";
     // }}}
     // {{{ constructor
 
-    function BrokenReq($sender, $user, $email, $comment = null)
+    public function __construct($sender, $user, $email, $comment = null)
     {
-        $this->Validate($sender, false, 'broken');
+        parent::__construct($sender, false, 'broken');
         $this->m_email     = $email;
         $this->m_comment   = trim($comment);
         $this->m_forlife   = $user['forlife'];
@@ -58,44 +60,72 @@ class BrokenReq extends Validate
     // }}}
     // {{{ 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_prenom} {$this->m_nom} ({$this->m_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 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"
+                ."Merci de ta participation !\n";
+        } elseif ($isok) {
+            return "  L'adresse de redirection {$this->m_email} de {$this->m_prenom} {$this->m_nom} ({$this->m_promo}) "
+                ."vient d'être réactivée. Un mail 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_prenom} {$this->m_nom} ({$this->m_promo}).";
         }
     }
 
     // }}}
     // {{{ function commit()
 
-    function commit()
+    public function commit()
     {
         global $globals;
         $email =  $this->m_bestalias . '@' . $globals->mail->domain;
+
+        XDB::execute("UPDATE  emails AS e
+                  INNER JOIN  aliases AS a ON (a.id = e.uid)
+                         SET  e.flags = 'active'
+                       WHERE  a.alias = {?} AND e.email = {?}", $this->m_forlife, $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"
+                             . "-- \nTrès Cordialement,\nL'Equipe de Polytechnique.org\n"));
+            $mailer->send();
+            return true;
+        }
+
+        $email =  $this->m_bestalias . '@' . $globals->mail->domain;
         if ($this->old_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";
+            $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
@@ -106,25 +136,25 @@ class BrokenReq extends Validate
                 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.';
             } 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_sexe ? 'Chère ' : 'Cher ') . $this->m_prenom . ",\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";
+              . "L'adresse {$this->m_email} nous a été communiquée, veux-tu que cette adresse devienne ta nouvelle "
+              . "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"
+              . "-- \nTrès Cordialement,\nL'Equipe 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);
@@ -134,5 +164,5 @@ class BrokenReq extends Validate
     // }}}
 }
 
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
 ?>