Adapts broken addresses processing to new mail chain.
[platal.git] / include / validations / broken.inc.php
index 523d355..70d02bd 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2007 Polytechnique.org                              *
+ *  Copyright (C) 2003-2011 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -24,37 +24,25 @@ class BrokenReq extends Validate
 {
     // {{{ properties
 
-    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_user;
     public $m_comment;
+    public $m_email;
 
     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.
+    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.";
     // }}}
     // {{{ constructor
 
-    public function __construct($sender, $user, $email, $comment = null)
+    public function __construct(User $sender, User $user, $email, $comment = null)
     {
         parent::__construct($sender, false, 'broken');
-        $this->m_email     = $email;
+        $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;
     }
 
     // }}}
@@ -70,7 +58,7 @@ class BrokenReq extends Validate
 
     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()})";
     }
 
     // }}}
@@ -79,16 +67,16 @@ class BrokenReq extends Validate
     protected function _mail_body($isok)
     {
         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";
+            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_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"
+            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'utiliserons pas cette adresse pour contacter {$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()}).";
         }
     }
 
@@ -98,39 +86,38 @@ class BrokenReq extends Validate
     public function commit()
     {
         global $globals;
-        $email =  $this->m_bestalias . '@' . $globals->mail->domain;
+        $email =  $this->m_user->bestEmail();
 
-        XDB::execute("UPDATE  emails AS e
-                  INNER JOIN  aliases AS a ON (a.id = e.uid)
-                         SET  e.flags = 'active', panne_level = 2
-                       WHERE  a.alias = {?} AND e.email = {?}", $this->m_forlife, $this->m_email);
+        XDB::execute('UPDATE  email_redirect_account
+                         SET  flags = \'active\', broken_level = 2
+                       WHERE  uid = {?} AND redirect = {?}',
+                     $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->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"));
+                    . "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;
         }
 
-        $email =  $this->m_bestalias . '@' . $globals->mail->domain;
-        if ($this->old_email) {
+        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  redirect
+                                   FROM  email_redirect_account
+                                  WHERE  uid = {?} AND flags = \'broken\'',
+                                $this->m_user->id());
             $redirect = array();
             while (list($red) = $res->next()) {
                 list(, $redirect[]) = explode('@', $red);
@@ -146,7 +133,7 @@ class BrokenReq extends Validate
                         . ' 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 de redirection ? Si oui, envoie nous des informations qui "