Merge branch 'master' of /home/git/platal into profile_edit
[platal.git] / include / validations / broken.inc.php
index 5cbbdfa..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";
     // }}}
     // {{{ 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,15 +60,15 @@ 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})";
     }
@@ -74,25 +76,53 @@ class BrokenReq extends Validate
     // }}}
     // {{{ function _mail_body
 
-    function _mail_body($isok)
+    protected function _mail_body($isok)
     {
-        if ($isok) {
-            return "  Un mail de contact vient d'être envoyé "
+        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"
+                ." 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";
@@ -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"
               . $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"
+              . "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);