Merge commit 'origin/master' into fusionax
[platal.git] / include / marketing.inc.php
index f397ad0..7a53989 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2008 Polytechnique.org                              *
+ *  Copyright (C) 2003-2009 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -53,37 +53,31 @@ class Marketing
 
     private function getUser($uid, $email)
     {
-        $res = XDB::query("SELECT  FIND_IN_SET('femme', flags) AS sexe, nom, prenom, promo
-                             FROM  auth_user_md5
-                            WHERE  user_id = {?}", $uid);
-        if ($res->numRows() == 0) {
+        $user = User::getSilent($uid);
+        if (!$user) {
             return null;
         }
-        $user            = $res->fetchOneAssoc();
-        $user['id']      = $uid;
-        $user['forlife'] = make_forlife($user['prenom'], $user['nom'], $user['promo']);
-        $user['mail']    = $email;
-        $user['to']      = '"' . $user['prenom'] . ' ' . $user['nom'] . '" <' . $email . '>';
-        return $user;
+
+        global $globals;
+        return array(
+            'user'           => $user,
+            'id'             => $user->id(),
+            'sexe'           => $user->isFemale(),
+            'mail'           => $email,
+            'to'             => '"' . $user->fullName() . '" <' . $email . '>',
+            'forlife_email'  => $user->login() . '@' . $globals->mail->domain,
+            'forlife_email2' => $user->login() . '@' . $globals->mail->domain2,
+        );
     }
 
     private function getFrom($from, $sender)
     {
         global $globals;
 
-        if ($from == 'staff') {
+        if ($from == 'staff' || !($user = User::getSilent($sender))) {
             return '"L\'équipe de Polytechnique.org" <register@' . $globals->mail->domain . '>';
-        } else {
-            $res = XDB::query("SELECT  u.nom, u.prenom, a.alias
-                                 FROM  auth_user_md5 AS u
-                           INNER JOIN  aliases       AS a ON (a.id = u.user_id AND FIND_IN_SET('bestalias', a.flags))
-                                WHERE  u.user_id = {?}", $sender);
-            if (!$res->numRows()) {
-                return '"L\'équipe de Polytechnique.org" <register@' . $globals->mail->domain . '>';
-            }
-            $sender = $res->fetchOneAssoc();
-            return '"' . $sender['prenom'] . ' ' . $sender['nom'] . '" <' . $sender['alias'] . '@' . $globals->mail->domain . '>';
         }
+        return '"' . $user->fullName() . '" <' . $user->bestEmail() . '>';
     }
 
     private function &getEngine($type, $data, $from)
@@ -141,7 +135,7 @@ class Marketing
         $this->engine->process($this->user);
         if ($valid) {
             require_once 'validations.inc.php';
-            $valid = new MarkReq($this->sender, $this->user['id'], $this->user['mail'],
+            $valid = new MarkReq(User::getSilent($this->sender), $this->user['user'], $this->user['mail'],
                                  $this->from == 'user', $this->type, $this->data);
             $valid->submit();
         }
@@ -203,7 +197,9 @@ class Marketing
         $res = XDB::query("SELECT  r.date, u.promo, u.nom, u.prenom, r.email, r.bestalias
                              FROM  register_pending AS r
                        INNER JOIN  auth_user_md5    AS u ON u.user_id = r.uid
-                            WHERE  hash!='INSCRIT' AND uid={?} AND TO_DAYS(relance) < TO_DAYS(NOW())", $uid);
+                            WHERE  hash != 'INSCRIT' AND uid = {?} AND
+                                   (TO_DAYS(relance) IS NULL OR TO_DAYS(relance) < TO_DAYS(NOW()))",
+                          $uid);
         if (!list($date, $promo, $nom, $prenom, $email, $alias) = $res->fetchOneRow()) {
             return false;
         }
@@ -226,7 +222,7 @@ class Marketing
         $mymail->send();
         XDB::execute('UPDATE  register_pending
                          SET  hash={?}, password={?}, relance=NOW()
-                       WHERE uid={?}', $hash, $pass_encrypted, $uid);
+                       WHERE  uid={?}', $hash, $pass_encrypted, $uid);
         return "$prenom $nom ($promo)";
     }
 }
@@ -304,12 +300,8 @@ class ListMarketing extends AnnuaireMarketing
     public function __construct($data, $from)
     {
         list($this->name, $this->domain) = explode('@', $data);
-        $res = XDB::query("SELECT  prenom, IF (nom_usage != '', nom_usage, nom)
-            FROM  auth_user_md5
-            WHERE  user_id = {?} AND user_id != 0", $from ? $from : 0);
-        if ($res->numRows()) {
-            list($prenom, $nom) = $res->fetchOneRow();
-            $from = "$prenom $nom";
+        if ($from && ($user = User::getSilent($from))) {
+            $from = $user->fullName();
         } else {
             $from = "Je";
         }
@@ -339,12 +331,8 @@ class GroupMarketing extends AnnuaireMarketing
     public function __construct($data, $from)
     {
         $this->group = $data;
-        $res = XDB::query("SELECT  prenom, IF (nom_usage != '', nom_usage, nom)
-            FROM  auth_user_md5
-            WHERE  user_id = {?} AND user_id != 0", $from ? $from : 0);
-        if ($res->numRows()) {
-            list($prenom, $nom) = $res->fetchOneRow();
-            $from = "$prenom $nom vient";
+        if ($from && ($user = User::getSilent($from))) {
+            $from = $user->fullName() . " vient";
         } else {
             $from = "Je viens";
         }