Port homonyms stuff.
authorFlorent Bruneau <florent.bruneau@polytechnique.org>
Wed, 31 Dec 2008 00:32:26 +0000 (01:32 +0100)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Wed, 31 Dec 2008 00:32:26 +0000 (01:32 +0100)
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
include/validations/homonymes.inc.php
modules/admin.php
modules/admin/homonyms.inc.php [moved from include/homonymes.inc.php with 63% similarity]
templates/admin/homonymes.tpl

index 44f0234..5ed8ae0 100644 (file)
@@ -121,9 +121,8 @@ est ambigu pour des raisons d'homonymie et signalera ton email exact.";
 
     public function commit()
     {
-        require_once('homonymes.inc.php');
-
-        switch_bestalias($this->user->id(), $this->loginbis);
+        Platal::load('admin', 'homonyms.inc.php');
+        switch_bestalias($this->user, $this->loginbis);
         if (!$this->warning) {
             XDB::execute("UPDATE aliases SET type = 'homonyme', expire = NOW() WHERE alias = {?}", $this->loginbis);
             XDB::execute("REPLACE INTO homonymes (homonyme_id, user_id) VALUES({?}, {?})", $this->user->id(), $this->user->id());
index 47b97f4..4a9350e 100644 (file)
@@ -762,15 +762,14 @@ class AdminModule extends PLModule
     {
         $page->changeTpl('admin/homonymes.tpl');
         $page->setTitle('Administration - Homonymes');
-        require_once("homonymes.inc.php");
+        $this->load("homonyms.inc.php");
 
         if ($target) {
-            if (! list($prenom,$nom,$forlife,$loginbis) = select_if_homonyme($target)) {
-                $target=0;
+            $user = User::getSilent($target);
+            if (!$user || !($loginbis = select_if_homonyme($user))) {
+                $target = 0;
             } else {
-                $page->assign('nom',$nom);
-                $page->assign('prenom',$prenom);
-                $page->assign('forlife',$forlife);
+                $page->assign('user', $user);
                 $page->assign('loginbis',$loginbis);
             }
         }
@@ -785,24 +784,24 @@ class AdminModule extends PLModule
                 case 'mail':
                     S::assert_xsrf_token();
 
-                    send_warning_homonyme($prenom, $nom, $forlife, $loginbis);
-                    switch_bestalias($target, $loginbis);
+                    send_warning_homonyme($user, $loginbis);
+                    switch_bestalias($user, $loginbis);
                     $op = 'list';
-                    $page->trigSuccess('Email envoyé à ' . $forlife . '.');
+                    $page->trigSuccess('Email envoyé à ' . $user->forlifeEmail() . '.');
                     break;
 
                 case 'correct':
                     S::assert_xsrf_token();
 
-                    switch_bestalias($target, $loginbis);
+                    switch_bestalias($user, $loginbis);
                     XDB::execute("UPDATE  aliases
                                      SET  type = 'homonyme', expire=NOW()
                                    WHERE  alias = {?}", $loginbis);
                     XDB::execute("REPLACE INTO  homonymes (homonyme_id,user_id)
-                                        VALUES  ({?},{?})", $target, $target);
-                    send_robot_homonyme($prenom, $nom, $forlife, $loginbis);
+                                        VALUES  ({?}, {?})", $target, $target);
+                    send_robot_homonyme($user, $loginbis);
                     $op = 'list';
-                    $page->trigSuccess('Email envoyé à ' . $forlife . ', alias supprimé.');
+                    $page->trigSuccess('Email envoyé à ' . $user->forlifeEmail() . ', alias supprimé.');
                     break;
             }
         }
@@ -812,7 +811,7 @@ class AdminModule extends PLModule
                     "SELECT  a.alias AS homonyme, s.alias AS forlife,
                              IF(h.homonyme_id = s.id, a.expire, NULL) AS expire,
                              IF(h.homonyme_id = s.id, a.type, NULL) AS type,
-                             ac.uid AS user_id, ac.display_name AS prenom
+                             ac.uid AS user_id
                        FROM  aliases       AS a
                   LEFT JOIN  homonymes     AS h ON (h.homonyme_id = a.id)
                  INNER JOIN  aliases       AS s ON (s.id = h.user_id AND s.type='a_vie')
similarity index 63%
rename from include/homonymes.inc.php
rename to modules/admin/homonyms.inc.php
index 13a3076..8c50ce0 100644 (file)
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************/
 
-function select_if_homonyme($uid) {
-    $res = XDB::query("SELECT  prenom,nom,a.alias AS forlife,h.alias AS loginbis
-                                   FROM  auth_user_md5 AS u
-                             INNER JOIN  aliases       AS a ON (a.id=u.user_id AND a.type='a_vie')
-                             INNER JOIN  aliases       AS h ON (h.id=u.user_id AND h.expire!='')
-                                  WHERE  user_id = {?}", $uid);
-    return $res->fetchOneRow();
+function select_if_homonyme(PlUser &$user) {
+    return XDB::fetchOneCell("SELECT  a.alias
+                                FROM  aliases AS a
+                               WHERE  a.id = {?} AND a.expire != ''",
+                             $user->id());
 }
 
-function send_warning_homonyme($prenom, $nom, $forlife, $loginbis) {
+function send_warning_homonyme(PlUser &$user, $loginbis) {
     global $globals;
     $cc = "support+homonyme@" . $globals->mail->domain;
     $FROM = "\"Support Polytechnique.org\" <$cc>";
     $mymail = new PlMailer();
     $mymail->setFrom($FROM);
-    $mymail->setSubject("Dans 2 semaines, suppression de $loginbis@" . $globals->mail->domain);
-    $mymail->addTo("$prenom $nom <$forlife@" . $globals->mail->domain . '>');
     $mymail->addCc($cc);
+    $mymail->setSubject("Dans 2 semaines, suppression de $loginbis@" . $globals->mail->domain);
     $mymail->setTxtBody(Env::v('mailbody'));
-    $mymail->send();
+    $mymail->sendTo($user);
 }
 
-function send_robot_homonyme($prenom, $nom, $forlife, $loginbis) {
+function send_robot_homonyme(PlUser &$user, $loginbis) {
     global $globals;
     $cc = "support+homonyme@" . $globals->mail->domain;
     $FROM = "\"Support Polytechnique.org\" <$cc>";
     $mymail = new PlMailer();
     $mymail->setFrom($FROM);
     $mymail->setSubject("Mise en place du robot $loginbis@" . $globals->mail->domain);
-    $mymail->addTo("$prenom $nom <$forlife@" . $globals->mail->domain . '>');
     $mymail->addCc($cc);
     $mymail->setTxtBody(Env::v('mailbody'));
-    $mymail->send();
+    $mymail->sendTo($user);
 }
 
-function switch_bestalias($uid, $loginbis) {
+function switch_bestalias(PlUser &$user, $loginbis) {
     // check if loginbis was the bestalias
-    $res = XDB::query("SELECT alias FROM aliases WHERE id = {?} AND FIND_IN_SET('bestalias', flags)", $uid);
-    $bestalias = $res->fetchOneCell();
-    if ($bestalias && $bestalias != $loginbis) return false;
+    $bestailas = XDB::fetchOneCell("SELECT  alias
+                                      FROM  aliases
+                                     WHERE  id = {?} AND FIND_IN_SET('bestalias', flags)",
+                                   $user->id());
+    if ($bestalias && $bestalias != $loginbis) {
+        return false;
+    }
 
     // select the shortest alias still alive
-    $res = XDB::query("SELECT alias FROM aliases WHERE id = {?} AND alias != {?} AND expire IS NULL ORDER BY LENGTH(alias) LIMIT 1", $uid, $loginbis);
-    $newbest = $res->fetchOneCell();
+    $newbest = XDB::fetchOneCell("SELECT  alias
+                                    FROM  aliases
+                                   WHERE  id = {?} AND alias != {?} AND expire IS NULL
+                                ORDER BY  LENGTH(alias)
+                                   LIMIT  1", $user->id(), $loginbis);
     // change the bestalias flag
-    XDB::execute("UPDATE aliases SET flags = (flags & (255 - 1)) | IF(alias = {?}, 1, 0) WHERE id = {?}", $newbest, $uid);
-
+    XDB::execute("UPDATE  aliases
+                     SET  flags = (flags & (255 - 1)) | IF(alias = {?}, 1, 0)
+                   WHERE  id = {?}", $newbest, $user->id());
     return $newbest;
 }
 
index 33c88c4..24890c1 100644 (file)
     <tr>
       <td>
         <textarea cols="80" rows="20" name="mailbody">
-{$prenom},
+{$user->displayName()},
 
 
 Comme nous t'en avons informé par email il y a quelques temps,
 pour respecter nos engagements en terme d'adresses email devinables,
 tu te verras bientôt retirer l'alias {$loginbis}@{#globals.mail.domain#} pour
-ne garder que {$forlife}@{#globals.mail.domain#}.
+ne garder que {$user->forlifeEmail()}.
 
 Toute personne qui écrira à {$loginbis}@{#globals.mail.domain#} recevra la
 réponse d'un robot qui l'informera que {$loginbis}@{#globals.mail.domain#}
@@ -111,7 +111,7 @@ L'équipe Polytechnique.org
     <tr>
       <td>
         <textarea cols="80" rows="20" name="mailbody">
-{$prenom},
+{$user->displayName()},
 
 Comme nous t'en avons informé par email il y a quelques temps,
 nous t'avons retiré de façon définitive l'adresse