Add simple 'view_profile' stats.
authorFlorent Bruneau <florent.bruneau@polytechnique.org>
Tue, 25 Mar 2008 21:12:49 +0000 (22:12 +0100)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Tue, 25 Mar 2008 21:12:49 +0000 (22:12 +0100)
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
modules/stats.php
templates/stats/index.tpl
upgrade/0.9.16/10_logger.sql

index 6d97fcd..f5c6c17 100644 (file)
@@ -42,6 +42,7 @@ class StatsModule extends PLModule
             'stats/graph/evolution'
                               => $this->make_hook('graph_evo', AUTH_COOKIE),
             'stats/promos'    => $this->make_hook('promos',    AUTH_COOKIE),
+            'stats/profile'   => $this->make_hook('profile',   AUTH_COOKIE),
 
             'stats/coupures'  => $this->make_hook('coupures',  AUTH_PUBLIC),
         );
@@ -295,6 +296,30 @@ EOF2;
             $page->assign('mxs', $res);
         }
     }
+
+    function handler_profile(&$page, $period = 'overall')
+    {
+        $page->changeTpl('stats/profile.tpl');
+
+        $time = '';
+        switch ($period) {
+          case 'week': case 'month': case 'year':
+            $time = ' AND e.stamp > DATE_SUB(CURDATE(), INTERVAL 1 ' . strtoupper($period) . ')';
+            break;
+        }
+        $rows = XDB::iterator("SELECT  IF(u.nom_usage != '', u.nom_usage, u.nom) AS nom,
+                                       u.prenom, u.promo, e.data AS forlife, COUNT(*) AS count
+                                 FROM  logger.events AS e
+                           INNER JOIN  logger.actions AS act ON (e.action = act.id)
+                           INNER JOIN  aliases AS a ON (a.alias = e.data)
+                           INNER JOIN  auth_user_md5 AS u ON (u.user_id = a.id)
+                                WHERE  act.text = 'view_profile' $time
+                             GROUP BY  e.data
+                             ORDER BY  count DESC
+                                LIMIT  10");
+        $page->assign('profiles', $rows);
+        $page->assign('period', $period);
+    }
 }
 
 // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
index 9c6c7cc..8a2705d 100644 (file)
@@ -33,6 +33,7 @@ Quelques statistiques sur l'utilisation des services de Polytechnique.org ainsi
 <li><a href="stats/evolution">Nombre d'inscrits au cours du temps</a></li>
 <li><a href="stats/promos/{$smarty.session.promo}">Nombre d'inscrits dans ta promotion</a></li>
 <li><a href="stats/promos">Nombre d'inscrits par promotion</a></li>
+<li><a href="stats/profile">Consultations des fiches de l'annuaire</a></li>
 </ul>
 
 {* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
index 5be5ad2..ba3d58b 100644 (file)
@@ -2,4 +2,9 @@ INSERT INTO logger.actions (text, description)
      VALUES ('view_profile', 'Consultation d\'une fiche'),
             ('search', 'RĂ©alisation d\'une recherche');
 
+user logger;
+ALTER TABLE events ADD INDEX action (action);
+
+user x4dat;
+
 # vim:set syntax=mysql: