Improves satistics display, adds info about x, m, d.
authorStéphane Jacob <sj@m4x.org>
Mon, 6 Jun 2011 11:00:15 +0000 (13:00 +0200)
committerStéphane Jacob <sj@m4x.org>
Mon, 6 Jun 2011 11:00:15 +0000 (13:00 +0200)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
modules/marketing.php
templates/marketing/index.tpl

index 75d99e9..fdcdbaf 100644 (file)
@@ -41,23 +41,35 @@ class MarketingModule extends PLModule
         $page->changeTpl('marketing/index.tpl');
         $page->setTitle('Marketing');
 
-        $alive = new ProfileFilter(new PFC_Not(new UFC_Dead()));
-        $registered = new ProfileFilter(new PFC_And(new UFC_Registered(true), new PFC_Not(new UFC_Dead())));
-        $alive72 = new ProfileFilter(new PFC_And(new UFC_Promo('>=', UserFilter::GRADE_ING, 1972), new PFC_Not(new UFC_Dead())));
-        $registered72 = new ProfileFilter(new PFC_And(new UFC_Registered(true), new UFC_Promo('>=', UserFilter::GRADE_ING, 1972), new PFC_Not(new UFC_Dead())));
-        $aliveWomen = new ProfileFilter(new PFC_And(new UFC_Sex(User::GENDER_FEMALE) , new PFC_Not(new UFC_Dead())));
-        $registeredWomen = new ProfileFilter(new PFC_And(new UFC_Registered(true), new UFC_Sex(User::GENDER_FEMALE), new PFC_Not(new UFC_Dead())));
+        $alive = array(
+            'all'    => new ProfileFilter(new PFC_Not(new UFC_Dead())),
+            'women'  => new ProfileFilter(new PFC_And(new UFC_Sex(User::GENDER_FEMALE) , new PFC_Not(new UFC_Dead()))),
+            'x'      => new ProfileFilter(new PFC_And(new PFC_Not(new UFC_Dead()), new UFC_AccountType('x'))),
+            '72'     => new ProfileFilter(new PFC_And(new UFC_Promo('>=', UserFilter::GRADE_ING, 1972), new PFC_Not(new UFC_Dead()))),
+            'master' => new ProfileFilter(new PFC_And(new PFC_Not(new UFC_Dead()), new UFC_AccountType('master'))),
+            'phd'    => new ProfileFilter(new PFC_And(new PFC_Not(new UFC_Dead()), new UFC_AccountType('phd')))
+        );
+        $registered = array(
+            'all'    => new ProfileFilter(new PFC_And(new UFC_Registered(true), new PFC_Not(new UFC_Dead()))),
+            'women'  => new ProfileFilter(new PFC_And(new UFC_Registered(true), new UFC_Sex(User::GENDER_FEMALE), new PFC_Not(new UFC_Dead()))),
+            'x'      => new ProfileFilter(new PFC_And(new UFC_Registered(true), new PFC_Not(new UFC_Dead(), new UFC_AccountType('x')))),
+            '72'     => new ProfileFilter(new PFC_And(new UFC_Registered(true), new UFC_Promo('>=', UserFilter::GRADE_ING, 1972), new PFC_Not(new UFC_Dead()))),
+            'master' => new ProfileFilter(new PFC_And(new UFC_Registered(true), new PFC_Not(new UFC_Dead()), new UFC_AccountType('master'))),
+            'phd'    => new ProfileFilter(new PFC_And(new UFC_Registered(true), new PFC_Not(new UFC_Dead()), new UFC_AccountType('phd')))
+        );
         $statistics = array(
-            'alive'           => $alive->getTotalCount(),
-            'registered'      => $registered->getTotalCount(),
-            'alive72'         => $alive72->getTotalCount(),
-            'registered72'    => $registered72->getTotalCount(),
-            'womenAlive'      => $aliveWomen->getTotalCount(),
-            'womenRegistered' => $registeredWomen->getTotalCount(),
+            'all'    => array('description' => "Étudiants et anciens de l'X"),
+            'women'  => array('description' => "Étudiantes et anciennes de l'X"),
+            'x'      => array('description' => 'X'),
+            '72'     => array('description' => 'X vivants depuis la promo 1972'),
+            'master' => array('description' => "Masters de l'X"),
+            'phd'    => array('description' => "Docteurs de l'X")
         );
-        $statistics['registeredRate']      = $statistics['registered'] / $statistics['alive'] * 100;
-        $statistics['registeredRate72']    = $statistics['registered72'] / $statistics['alive72'] * 100;
-        $statistics['womenRegisteredRate'] = $statistics['womenRegistered'] / $statistics['womenAlive'] * 100;
+        foreach ($statistics as $key => &$data) {
+            $data['alive'] = $alive[$key]->getTotalCount();
+            $data['registered'] = $registered[$key]->getTotalCount();
+            $data['rate'] = round($data['registered'] / $data['alive'] * 100, 2);
+        }
 
         $registeredWeek = new ProfileFilter(new PFC_And(new UFC_Registered(true, '>=', strtotime('1 week ago')), new PFC_Not(new UFC_Dead())));
         $registrationPending = XDB::fetchOneCell('SELECT  COUNT(*)
index a137e24..9fd3291 100644 (file)
 
 <br />
 
-<p>
-nombre d'étudiants et anciens de l'X vivants d'après notre base de données&nbsp;: {$statistics.alive}<br />
-nombre d'étudiants et anciens de l'X vivants inscrits à Polytechnique.org&nbsp;: {$statistics.registered}<br />
-Soit un pourcentage d'inscrits de&nbsp;: {$statistics.registeredRate} %<br />
-</p>
-
-<p>
-Parmi ceux-ci&nbsp;:<br />
-nombre d'X vivants depuis la promo 1972 d'après notre base de données&nbsp;: {$statistics.alive72}<br />
-nombre d'X vivants depuis la promo 1972 inscrits à Polytechnique.org&nbsp;: {$statistics.registered72}<br />
-Soit un pourcentage d'inscrits de&nbsp;: {$statistics.registeredRate72} %<br />
-</p>
-
-<p>
-nombre de étudiantes et anciennes de l'X vivantes&nbsp;: {$statistics.womenAlive}<br />
-nombre de étudiantes et anciennes de l'X vivantes et inscrites&nbsp;: {$statistics.womenRegistered}<br />
-Soit un pourcentage d'inscrites de&nbsp;: {$statistics.womenRegisteredRate} %<br />
-</p>
+<table class="bicol">
+  <tr>
+    <th colspan="4">Statistiques</th>
+  </tr>
+  <tr>
+    <td class="titre"></td>
+    <td style="text-align: right" class="titre">Vivants</td>
+    <td style="text-align: right" class="titre">Inscrits</td>
+    <td style="text-align: right" class="titre">Pourcentage</td>
+  </tr>
+  {foreach from=$statistics item=data}
+  <tr>
+    <td>{$data.description}</td>
+    <td style="text-align: right">{$data.alive}</td>
+    <td style="text-align: right">{$data.registered}</td>
+    <td style="text-align: right">{$data.rate}</td>
+  </tr>
+  {/foreach}
+</table>
 
 <p>
 nombre d'<a href="marketing/this_week">inscrits ces 7 derniers jours</a>&nbsp;: {$registrations.week}<br />
@@ -69,35 +70,35 @@ nombre d'<a href="marketing/relance">inscriptions en cours</a> (2ème phase non
   </tr>
   <tr>
     <td>&nbsp;</td>
-    <td class="titre">Non abouti</td>
-    <td class="titre">Abouti</td>
-    <td class="titre">Total</td>
+    <td style="text-align: right" class="titre">Non abouti</td>
+    <td style="text-align: right" class="titre">Abouti</td>
+    <td style="text-align: right" class="titre">Total</td>
   </tr>
   <tr>
     <td>Personnel</td>
-    <td>{$marketings.noPerso}</td>
-    <td rowspan="3" style="vertical-align: middle">{$marketings.ok}</td>
-    <td rowspan="3" style="vertical-align: middle">{$marketings.ok+$marketings.noPerso+$marketings.noXorg+$marketings.noAX}</td>
+    <td style="text-align: right">{$marketings.noPerso}</td>
+    <td rowspan="3" style="vertical-align: middle; text-align: right">{$marketings.ok}</td>
+    <td rowspan="3" style="vertical-align: middle; text-align: right">{$marketings.ok+$marketings.noPerso+$marketings.noXorg+$marketings.noAX}</td>
   </tr>
   <tr>
     <td>Par Polytechnique.org</td>
-    <td>{$marketings.noXorg}</td>
+    <td style="text-align: right">{$marketings.noXorg}</td>
   </tr>
   <tr>
     <td>Par l'AX</td>
-    <td>{$marketings.noAX}</td>
+    <td style="text-align: right">{$marketings.noAX}</td>
   </tr>
   <tr>
     <td>Cette semaine</td>
-    <td>{$marketings.noWeek}</td>
-    <td>{$marketings.okWeek}</td>
-    <td>{$marketings.okWeek+$marketings.noWeek}</td>
+    <td style="text-align: right">{$marketings.noWeek}</td>
+    <td style="text-align: right">{$marketings.okWeek}</td>
+    <td style="text-align: right">{$marketings.okWeek+$marketings.noWeek}</td>
   </tr>
   <tr>
     <td class="titre">Total</td>
-    <td>{$marketings.noPerso+$marketings.noXorg+$marketings.noAX}</td>
-    <td>{$marketings.ok}</td>
-    <td>{$marketings.ok+$marketings.noPerso+$marketings.noXorg+$marketings.noAX}</td>
+    <td style="text-align: right">{$marketings.noPerso+$marketings.noXorg+$marketings.noAX}</td>
+    <td style="text-align: right">{$marketings.ok}</td>
+    <td style="text-align: right">{$marketings.ok+$marketings.noPerso+$marketings.noXorg+$marketings.noAX}</td>
   </tr>
 </table>