Melix alias visibility in VCards should be user's visibility, and not viewer's alias...
[platal.git] / include / marketing.inc.php
index 37d7075..f6dd15d 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2007 Polytechnique.org                              *
+ *  Copyright (C) 2003-2008 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -43,12 +43,12 @@ class Marketing
     {
         $this->user         = $this->getUser($uid, $email);
         $this->sender_mail  = $this->getFrom($from, $sender);
-        $this->engine      =& $this->getEngine($type, $data, $from == 'user' ? null : $this->sender);
+        $this->engine      =& $this->getEngine($type, $data, $from == 'user' ? $sender : null);
 
         $this->type   = $type;
         $this->data   = $data;
         $this->from   = $from;
-        $this->sender = $sender; 
+        $this->sender = $sender;
     }
 
     private function getUser($uid, $email)
@@ -59,7 +59,7 @@ class Marketing
                             WHERE  user_id = {?}", $uid);
         if ($res->numRows() == 0) {
             return null;
-        } 
+        }
         $user            = $res->fetchOneAssoc();
         $user['id']      = $uid;
         $user['forlife'] = make_forlife($user['prenom'], $user['nom'], $user['promo']);
@@ -70,18 +70,20 @@ class Marketing
 
     private function getFrom($from, $sender)
     {
+        global $globals;
+
         if ($from == 'staff') {
-            return '"Equipe Polytechnique.org" <register@polytechnique.org>';
+            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 '"Equipe Polytechnique.org" <register@polytechnique.org>';
+                return '"L\'équipe de Polytechnique.org" <register@' . $globals->mail->domain . '>';
             }
             $sender = $res->fetchOneAssoc();
-            return '"' . $sender['prenom'] . ' ' . $sender['nom'] . '" <' . $sender['alias'] . '@polytechnique.org>';
+            return '"' . $sender['prenom'] . ' ' . $sender['nom'] . '" <' . $sender['alias'] . '@' . $globals->mail->domain . '>';
         }
     }
 
@@ -141,7 +143,7 @@ class Marketing
         if ($valid) {
             require_once 'validations.inc.php';
             $valid = new MarkReq($this->sender, $this->user['id'], $this->user['mail'],
-                                 $this->from == 'user', $this->type, $this->data); 
+                                 $this->from == 'user', $this->type, $this->data);
             $valid->submit();
         }
         return true;
@@ -166,11 +168,14 @@ class Marketing
         return $array;
     }
 
-    static public function get($uid, $email)
+    static public function get($uid, $email, $recentOnly = false)
     {
         $res = XDB::query("SELECT  uid, email, message, message_data, type, sender
                              FROM  register_marketing
-                            WHERE  uid = {?} AND email = {?}", $uid, $email);
+                            WHERE  uid = {?}
+                              AND  email = {?}".(
+              $recentOnly ? ' AND  DATEDIFF(NOW(), last) < 30' : ''), $uid, $email);
+
         if ($res->numRows() == 0) {
             return null;
         }
@@ -183,7 +188,7 @@ class Marketing
         if (!$email) {
             XDB::execute("DELETE FROM register_marketing WHERE uid = {?}", $uid);
         } else {
-            XDB::execute("DELETE FROM register_marketing WHERE uid = {?} AND email = {?}", $uid, $email);        
+            XDB::execute("DELETE FROM register_marketing WHERE uid = {?} AND email = {?}", $uid, $email);
         }
     }
 
@@ -195,7 +200,7 @@ class Marketing
             $res = XDB::query("SELECT COUNT(*) FROM auth_user_md5 WHERE deces=0");
             $nbx = $res->fetchOneCell();
         }
-    
+
         $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
@@ -203,14 +208,14 @@ class Marketing
         if (!list($date, $promo, $nom, $prenom, $email, $alias) = $res->fetchOneRow()) {
             return false;
         }
-    
+
         require_once('secure_hash.inc.php');
         $hash     = rand_url_id(12);
         $pass     = rand_pass();
         $pass_encrypted = hash_encrypt($pass);
         $fdate    = strftime('%d %B %Y', strtotime($date));
-    
-        $mymail = new PlMailer('marketing/mail.relance.tpl');
+
+        $mymail = new PlMailer('marketing/relance.mail.tpl');
         $mymail->assign('nbdix',      $nbx);
         $mymail->assign('fdate',      $fdate);
         $mymail->assign('lusername',  $alias);
@@ -235,18 +240,25 @@ interface MarketingEngine
     public function process(array $user);
 }
 
-// 
+//
 class AnnuaireMarketing implements MarketingEngine
 {
     protected $titre;
     protected $intro;
+    protected $signature;
 
     public function __construct($data, $from)
     {
-        $this->titre = "Annuaire en ligne des Polytechniciens";
-        $this->intro = "   Ta fiche n'est pas à jour dans l'annuaire des Polytechniciens sur Internet. "
-                     . "Pour la mettre à jour, il te it de visiter cette page ou de copier cette adresse "
+        $this->titre = "Rejoins la communauté polytechnicienne sur Internet";
+        $this->intro = "   Tu n'as pas de fiche dans l'annuaire des polytechniciens sur Internet. "
+                     . "Pour y figurer, il te suffit de visiter cette page ou de copier cette adresse "
                      . "dans la barre de ton navigateur :";
+        if ($from === null) {
+            $this->signature = "L'équipe de Polytechnique.org,\n"
+                             . "Le portail des élèves & anciens élèves de l'École polytechnique";
+        } else {
+            $this->signature = "%%sender%%";
+        }
     }
 
     public function getTitle()
@@ -259,17 +271,23 @@ class AnnuaireMarketing implements MarketingEngine
         return $this->intro;
     }
 
+    public function getSignature()
+    {
+        return $this->signature;
+    }
+
     protected function prepareText(PlatalPage &$page, array $user)
     {
         $page->assign('intro', $this->getIntro());
         $page->assign('u', $user);
+        $page->assign('sign', $this->getSignature());
         $res = XDB::query("SELECT COUNT(*) FROM auth_user_md5 WHERE perms IN ('user', 'admin') AND deces = 0");
         $page->assign('num_users', $res->fetchOneCell());
     }
 
     public function getText(array $user)
     {
-        $page = new XorgPage('marketing/mail.marketing.tpl', NO_SKIN);
+        $page = new XorgPage('marketing/marketing.mail.tpl', NO_SKIN);
         $this->prepareText($page, $user);
         return $page->raw();
     }
@@ -287,8 +305,8 @@ class ListMarketing extends AnnuaireMarketing
     {
         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);
+            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";
@@ -296,22 +314,22 @@ class ListMarketing extends AnnuaireMarketing
             $from = "Je";
         }
         $this->titre = "Un camarade solicite ton inscription à $data";
-        $this->intro = "Polytechnique.org, l'annuaire des Polytechniciens sur internet, "
-                     . "fournit de nombreux services aux groupes X, ainsi que des listes "
-                     . "de diffusion pour les X en faisant la demande.\n\n"
-                     . "$from solicite ton inscription à la liste <$data>. "
-                     . "Cependant, seuls les X inscrits sur Polytechnique.org peuvent "
-                     . "profiter de l'ensemble de nos services, c'est pourquoi nous te "
-                     . "proposons auparavant de t'inscrire sur notre site. Pour cela, il "
-                     . "te suffit de visiter cette page ou de copier cette adresse dans "
-                     . "la barre de ton navigateur :";
+        $this->intro = "Polytechnique.org, l'annuaire des polytechniciens sur internet, "
+            . "fournit de nombreux services aux groupes X, ainsi que des listes "
+            . "de diffusion pour les X en faisant la demande.\n\n"
+            . "$from solicite ton inscription à la liste <$data>. "
+            . "Cependant, seuls les X inscrits sur Polytechnique.org peuvent "
+            . "profiter de l'ensemble de nos services, c'est pourquoi nous te "
+            . "proposons auparavant de t'inscrire sur notre site. Pour cela, il "
+            . "te suffit de visiter cette page ou de copier cette adresse dans "
+            . "la barre de ton navigateur :";
     }
 
     public function process(array $user)
     {
         return XDB::execute("REPLACE INTO  register_subs (uid, type, sub, domain)
-                                   VALUES  ({?}, 'list', {?}, {?})",
-                            $user['id'], $this->name, $this->domain);
+            VALUES  ({?}, 'list', {?}, {?})",
+                $user['id'], $this->name, $this->domain);
     }
 }
 
@@ -322,8 +340,8 @@ class GroupMarketing extends AnnuaireMarketing
     {
         $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);
+            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";
@@ -331,21 +349,21 @@ class GroupMarketing extends AnnuaireMarketing
             $from = "Je viens";
         }
         $this->titre = "Profite de ton inscription au groupe \"$data\" pour découvrir Polytechnique.org";
-        $this->intro = "Polytechnique.org, l'annuaire des Polytechniciens sur internet, fournit "
-                     . "de nombreux services aux groupes X ( listes de diffusion, paiement en "
-                     . "ligne, sites internet...), en particulier pour le groupe \"$data\"\n\n"
-                     . "$from de t'inscrire dans l'annuaire du groupe \"$data\". "
-                     . "Cependant, seuls les X inscrits sur Polytechnique.org peuvent profiter "
-                     . "de l'ensemble de nos services, c'est pourquoi nous te proposons de "
-                     . "t'inscrire sur notre site . Pour cela, il te suffit de visiter cette page "
-                     . "ou de copier cette adresse dans la barre de ton navigateur :";
+        $this->intro = "Polytechnique.org, l'annuaire des polytechniciens sur internet, fournit "
+            . "de nombreux services aux groupes X ( listes de diffusion, paiement en "
+            . "ligne, sites internet...), en particulier pour le groupe \"$data\"\n\n"
+            . "$from de t'inscrire dans l'annuaire du groupe \"$data\". "
+            . "Cependant, seuls les X inscrits sur Polytechnique.org peuvent profiter "
+            . "de l'ensemble de nos services, c'est pourquoi nous te proposons de "
+            . "t'inscrire sur notre site . Pour cela, il te suffit de visiter cette page "
+            . "ou de copier cette adresse dans la barre de ton navigateur :";
     }
 
     public function process(array $user)
     {
         return XDB::execute("REPLACE INTO  register_subs (uid, type, sub, domain)
-                                   VALUES  ({?}, 'group', {?}, '')",
-                            $user['id'], $this->group);
+            VALUES  ({?}, 'group', {?}, '')",
+                $user['id'], $this->group);
     }
 }