tel_type can't be null.
[platal.git] / modules / marketing.php
index 69160fa..baa5eaa 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   *
@@ -42,38 +42,55 @@ class MarketingModule extends PLModule
 
         $page->setTitle('Marketing');
 
-        // Quelques statistiques
-
-        $res   = XDB::query(
-                  "SELECT COUNT(*) AS vivants,
-                          COUNT(NULLIF(perms='admin' OR perms='user', 0)) AS inscrits,
-                          100*COUNT(NULLIF(perms='admin' OR perms='user', 0))/COUNT(*) AS ins_rate,
-                          COUNT(NULLIF(promo >= 1972, 0)) AS vivants72,
-                          COUNT(NULLIF(promo >= 1972 AND (perms='admin' OR perms='user'), 0)) AS inscrits72,
-                          100 * COUNT(NULLIF(promo >= 1972 AND (perms='admin' OR perms='user'), 0)) /
-                              COUNT(NULLIF(promo >= 1972, 0)) AS ins72_rate,
-                          COUNT(NULLIF(FIND_IN_SET('femme', flags), 0)) AS vivantes,
-                          COUNT(NULLIF(FIND_IN_SET('femme', flags) AND (perms='admin' OR perms='user'), 0)) AS inscrites,
-                          100 * COUNT(NULLIF(FIND_IN_SET('femme', flags) AND (perms='admin' OR perms='user'), 0)) /
-                              COUNT(NULLIF(FIND_IN_SET('femme', flags), 0)) AS inse_rate
-                     FROM auth_user_md5
-                    WHERE deces = 0");
+        // Some statistics
+        $res = XDB::query(
+                "SELECT  COUNT(*) AS vivants,
+                         COUNT(NULLIF(perms='admin' OR perms='user', 0)) AS inscrits,
+                         100*COUNT(NULLIF(perms='admin' OR perms='user', 0))/COUNT(*) AS ins_rate,
+                         COUNT(NULLIF(promo >= 1972, 0)) AS vivants72,
+                         COUNT(NULLIF(promo >= 1972 AND (perms='admin' OR perms='user'), 0)) AS inscrits72,
+                         100 * COUNT(NULLIF(promo >= 1972 AND (perms='admin' OR perms='user'), 0)) /
+                             COUNT(NULLIF(promo >= 1972, 0)) AS ins72_rate,
+                         COUNT(NULLIF(FIND_IN_SET('femme', flags), 0)) AS vivantes,
+                         COUNT(NULLIF(FIND_IN_SET('femme', flags) AND (perms='admin' OR perms='user'), 0)) AS inscrites,
+                         100 * COUNT(NULLIF(FIND_IN_SET('femme', flags) AND (perms='admin' OR perms='user'), 0)) /
+                             COUNT(NULLIF(FIND_IN_SET('femme', flags), 0)) AS inse_rate
+                   FROM  auth_user_md5
+                  WHERE  deces = 0");
         $stats = $res->fetchOneAssoc();
         $page->assign('stats', $stats);
 
-        $res   = XDB::query("SELECT count(*) FROM auth_user_md5 WHERE date_ins > ".
-                                      date('Ymd000000', strtotime('1 week ago')));
+        $res = XDB::query('SELECT  COUNT(*)
+                             FROM  auth_user_md5
+                            WHERE  date_ins > ' . date('Ymd000000', strtotime('1 week ago')));
         $page->assign('nbInsSem', $res->fetchOneCell());
 
-        $res = XDB::query("SELECT count(*) FROM register_pending WHERE hash != 'INSCRIT'");
+        $res = XDB::query("SELECT  COUNT(*)
+                             FROM  register_pending
+                            WHERE  hash != 'INSCRIT'");
         $page->assign('nbInsEnCours', $res->fetchOneCell());
 
-        $res = XDB::query("SELECT count(*) FROM register_marketing");
-        $page->assign('nbInsMarket', $res->fetchOneCell());
-
-        $res = XDB::query("SELECT count(*) FROM register_mstats
-                                      WHERE TO_DAYS(NOW()) - TO_DAYS(success) <= 7");
-        $page->assign('nbInsMarkOK', $res->fetchOneCell());
+        $res = XDB::query('SELECT  COUNT(*) AS count
+                             FROM  register_marketing
+                         GROUP BY  sender = 0');
+        $nbInsMarketNo = $res->fetchAllAssoc();
+        $res = XDB::query('SELECT  COUNT(*)
+                             FROM  register_marketing
+                            WHERE  TO_DAYS(NOW()) - TO_DAYS(last) <= 7');
+        $page->assign('nbInsMarketNoPerso', $nbInsMarketNo[0]['count']);
+        $page->assign('nbInsMarketNoXorg', $nbInsMarketNo[1]['count']);
+        $page->assign('nbInsMarketNoWeek', $res->fetchOneCell());
+
+        $res = XDB::query('SELECT  COUNT(*) AS count
+                             FROM  register_mstats
+                         GROUP BY  sender = 0');
+        $nbInsMarketOk = $res->fetchAllAssoc();
+        $res = XDB::query('SELECT  COUNT(*)
+                             FROM  register_mstats
+                            WHERE  TO_DAYS(NOW()) - TO_DAYS(success) <= 7');
+        $page->assign('nbInsMarketOkPerso', $nbInsMarketOk[0]['count']);
+        $page->assign('nbInsMarketOkXorg', $nbInsMarketOk[1]['count']);
+        $page->assign('nbInsMarketOkWeek', $res->fetchOneCell());
     }
 
     function handler_private(&$page, $hruid = null,
@@ -157,7 +174,7 @@ class MarketingModule extends PLModule
         $res = XDB::iterator(
                 "SELECT  r.*, a.alias
                    FROM  register_marketing AS r
-             INNER JOIN  aliases            AS a ON (r.sender=a.id AND a.type = 'a_vie')
+              LEFT JOIN  aliases            AS a ON (r.sender=a.id AND a.type = 'a_vie')
                   WHERE  uid={?}
                ORDER BY  date", $user->id());
         $page->assign('addr', $res);
@@ -187,20 +204,18 @@ class MarketingModule extends PLModule
             pl_redirect('emails/redirect');
         }
 
-        $res = Xdb::query("SELECT  u.nom, u.prenom, u.promo, FIND_IN_SET('femme', u.flags) AS sexe,
-                                   u.deces = '0000-00-00' AS alive, u.hruid, a.alias AS forlife, b.alias AS bestalias,
-                                   IF(e.email IS NOT NULL, e.email, IF(FIND_IN_SET('googleapps', u.mail_storage), 'googleapps', NULL)) AS email, e.last
-                             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 b ON (b.id = u.user_id AND FIND_IN_SET('bestalias', b.flags))
-                        LEFT JOIN  emails        AS e ON (e.flags = 'active' AND e.uid = u.user_id)
-                            WHERE  u.hruid = {?}
-                         ORDER BY  e.panne_level, e.last", $user->login());
+        $res = XDB::query(
+                "SELECT  u.deces = '0000-00-00' AS alive, e.last,
+                         IF(e.email IS NOT NULL, e.email, IF(FIND_IN_SET('googleapps', u.mail_storage), 'googleapps', NULL)) AS email
+                   FROM  auth_user_md5 AS u
+              LEFT JOIN  emails        AS e ON (e.flags = 'active' AND e.uid = u.user_id)
+                  WHERE  u.user_id = {?}
+               ORDER BY  e.panne_level, e.last", $user->id());
         if (!$res->numRows()) {
             return PL_NOT_FOUND;
         }
-        $user_data = $res->fetchOneAssoc();
-        $page->assign('user', $user_data);
+        $user->addProperties($res->fetchOneAssoc());
+        $page->assign('user', $user);
 
         $email = null;
         require_once 'emails.inc.php';
@@ -217,15 +232,15 @@ class MarketingModule extends PLModule
                                 WHERE  email = {?} AND uid = {?}", $email, $user->id());
             $state = $res->numRows() ? $res->fetchOneCell() : null;
             if ($state == 'panne') {
-                $page->trigWarning("L'adresse que tu as fournie est l'adresse actuelle de {$user_data['prenom']} et est en panne.");
+                $page->trigWarning("L'adresse que tu as fournie est l'adresse actuelle de {$user->fullName()} et est en panne.");
             } elseif ($state == 'active') {
-                $page->trigWarning("L'adresse que tu as fournie est l'adresse actuelle de {$user_data['prenom']}");
-            } elseif ($user_data['email'] && !trim(Post::v('comment'))) {
+                $page->trigWarning("L'adresse que tu as fournie est l'adresse actuelle de {$user->fullName()}");
+            } elseif ($user->email && !trim(Post::v('comment'))) {
                 $page->trigError("Il faut que tu ajoutes un commentaire à ta proposition pour justifier le "
-                               . "besoin de changer la redirection de " . $user_data['prenom']);
+                               . "besoin de changer la redirection de {$user->fullName()}.");
             } else {
                 require_once 'validations.inc.php';
-                $valid = new BrokenReq(S::i('uid'), $user_data, $email, trim(Post::v('comment')));
+                $valid = new BrokenReq(S::user(), $user, $email, trim(Post::v('comment')));
                 $valid->submit();
                 $page->assign('sent', true);
             }
@@ -348,7 +363,7 @@ class MarketingModule extends PLModule
             $sent  = Array();
             foreach (array_keys($_POST['relance']) as $uid) {
                 if ($tmp = Marketing::relance($uid, $nbdix)) {
-                    $sent[] = $tmp.' a été relancé';
+                    $sent[] = $tmp . ' a été relancé.';
                 }
             }
             $page->assign('sent', $sent);