Fix listing of xnetevent participants.
[platal.git] / modules / xnetevents / xnetevents.inc.php
index fe8fc4a..237e3f7 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2009 Polytechnique.org                              *
+ *  Copyright (C) 2003-2010 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -33,12 +33,15 @@ function get_event_detail($eid, $item_id = false, $asso_id = null)
                                      1) AS inscr_open,
                                LEFT(10, e.debut) AS start_day, LEFT(10, e.fin) AS last_day,
                                LEFT(NOW(), 10) AS now,
-                               ei.titre, al.vid AS absent_list, pl.vid AS participant_list
-                         FROM  #groupex#.evenements              AS e
-                   INNER JOIN  #groupex#.evenements_items        AS ei ON (e.eid = ei.eid)
-                    LEFT JOIN  #groupex#.evenements_participants AS ep ON(e.eid = ep.eid AND ei.item_id = ep.item_id)
-                    LEFT JOIN  #x4dat#.virtual AS al ON(al.type = \'evt\' AND al.alias = CONCAT(short_name, {?}))
-                    LEFT JOIN  #x4dat#.virtual AS pl ON(pl.type = \'evt\' AND pl.alias = CONCAT(short_name, {?}))
+                               ei.titre, al.vid AS absent_list, pl.vid AS participant_list,
+                               pyl.vid AS payed_list, bl.vid AS booked_unpayed_list
+                         FROM  group_events              AS e
+                   INNER JOIN  group_event_items        AS ei ON (e.eid = ei.eid)
+                    LEFT JOIN  group_event_participants AS ep ON(e.eid = ep.eid AND ei.item_id = ep.item_id)
+                    LEFT JOIN  virtual AS al ON(al.type = \'evt\' AND al.alias = CONCAT(short_name, {?}))
+                    LEFT JOIN  virtual AS pl ON(pl.type = \'evt\' AND pl.alias = CONCAT(short_name, {?}))
+                    LEFT JOIN  virtual AS pyl ON(pyl.type = \'evt\' AND pyl.alias = CONCAT(short_name, {?}))
+                    LEFT JOIN  virtual AS bl ON(bl.type = \'evt\' AND bl.alias = CONCAT(short_name, {?}))
                         WHERE  (e.eid = {?} OR e.short_name = {?}) AND ei.item_id = {?} AND e.asso_id = {?}
                      GROUP BY  ei.item_id',
                    '-absents@'.$globals->xnet->evts_domain,
@@ -58,9 +61,9 @@ function get_event_detail($eid, $item_id = false, $asso_id = null)
     // smart calculation of the total number
     if (!$item_id) {
         $res = XDB::query('SELECT  MAX(nb)
-                             FROM  #groupex#.evenements              AS e
-                       INNER JOIN  #groupex#.evenements_items        AS ei ON (e.eid = ei.eid)
-                        LEFT JOIN  #groupex#.evenements_participants AS ep ON (e.eid = ep.eid AND ei.item_id = ep.item_id)
+                             FROM  group_events              AS e
+                       INNER JOIN  group_event_items        AS ei ON (e.eid = ei.eid)
+                        LEFT JOIN  group_event_participants AS ep ON (e.eid = ep.eid AND ei.item_id = ep.item_id)
                             WHERE  e.eid = {?}
                          GROUP BY  ep.uid', $evt['eid']);
         $evt['nb_tot'] = array_sum($res->fetchColumn());
@@ -70,8 +73,8 @@ function get_event_detail($eid, $item_id = false, $asso_id = null)
 
     $evt['moments'] = XDB::fetchAllAssoc('SELECT  titre, details, montant, ei.item_id, nb,
                                                   ep.paid, FIND_IN_SET(\'notify_payment\', ep.flags) AS notify_payment
-                                            FROM  #groupex#.evenements_items        AS ei
-                                       LEFT JOIN  #groupex#.evenements_participants AS ep ON (ep.eid = ei.eid AND ep.item_id = ei.item_id
+                                            FROM  group_event_items        AS ei
+                                       LEFT JOIN  group_event_participants AS ep ON (ep.eid = ei.eid AND ep.item_id = ei.item_id
                                                                                                              AND uid = {?})
                                            WHERE  ei.eid = {?}',
                                            S::i('uid'), $evt['eid']);
@@ -87,8 +90,8 @@ function get_event_detail($eid, $item_id = false, $asso_id = null)
         $evt['notify_payment'] = $evt['notify_payment'] || $m['notify_payment'];
     }
 
-    $montants = XDB::fetchColumn('SELECT  montant
-                                    FROM  ' . $globals->money->mpay_tprefix . 'transactions AS t
+    $montants = XDB::fetchColumn('SELECT  amount
+                                    FROM  payment_transactions AS t
                                    WHERE  ref = {?} AND uid = {?}',
                                    $evt['paiement_id'], S::v('uid'));
     $evt['telepaid'] = 0;
@@ -106,7 +109,7 @@ function get_event_detail($eid, $item_id = false, $asso_id = null)
 // }}}
 
 // {{{ function get_event_participants()
-function get_event_participants(&$evt, $item_id, array $tri = array(), $count = null, $offset = null)
+function get_event_participants(&$evt, $item_id, array $tri = array(), $limit = null)
 {
     global $globals;
 
@@ -114,14 +117,14 @@ function get_event_participants(&$evt, $item_id, array $tri = array(), $count =
     $money  = $evt['money'] && (function_exists('may_update')) && may_update();
     $pay_id = $evt['paiement_id'];
 
-    $append = $item_id ? XDB::foramt(' AND ep.item_id = {?}', $item_id) : '';
+    $append = $item_id ? XDB::format(' AND ep.item_id = {?}', $item_id) : '';
     $query = XDB::fetchAllAssoc('uid', 'SELECT  ep.uid, SUM(ep.paid) AS paid, SUM(ep.nb) AS nb,
                                                 FIND_IN_SET(\'notify_payment\', ep.flags) AS notify_payment
-                                          FROM  #groupex#.evenements_participants AS ep
+                                          FROM  group_event_participants AS ep
                                          WHERE  ep.eid = {?} AND nb > 0 ' . $append . '
                                       GROUP BY  ep.uid', $eid);
-    $uf = new UserFilter(new UFC_True(), $tri);
-    $users = User::getBulkUsersWithUIDs($uf->filter(array_keys($query), $count, $offset));
+    $uf = new UserFilter(new PFC_True(), $tri);
+    $users = User::getBulkUsersWithUIDs($uf->filter(array_keys($query), $limit));
     $tab = array();
     foreach ($users as $user) {
         $uid = $user->id();
@@ -141,8 +144,8 @@ function get_event_participants(&$evt, $item_id, array $tri = array(), $count =
         $u['adminpaid'] = $u['paid'];
         $u['montant'] = 0;
         if ($money && $pay_id) {
-            $montants = XDB::fetchColumn('SELECT  montant
-                                            FROM  ' . $globals->money->mpay_tprefix . 'transactions AS t
+            $montants = XDB::fetchColumn('SELECT  amount
+                                            FROM  payment_transactions AS t
                                            WHERE  ref = {?} AND uid = {?}',
                                          $pay_id, $uid);
             foreach ($montants as $m) {
@@ -152,8 +155,8 @@ function get_event_participants(&$evt, $item_id, array $tri = array(), $count =
         }
         $u['telepayment'] = $u['paid'] - $u['adminpaid'];
         $res_ = XDB::iterator('SELECT  ep.nb, ep.item_id, ei.montant
-                                 FROM  #groupex#.evenements_participants AS ep
-                           INNER JOIN  #groupex#.evenements_items AS ei ON (ei.eid = ep.eid AND ei.item_id = ep.item_id)
+                                 FROM  group_event_participants AS ep
+                           INNER JOIN  group_event_items AS ei ON (ei.eid = ep.eid AND ei.item_id = ep.item_id)
                                 WHERE  ep.eid = {?} AND ep.uid = {?}',
                             $eid, $uid);
         while ($i = $res_->next()) {
@@ -181,15 +184,7 @@ function subscribe_lists_event($participate, $uid, $evt, $paid, $payment = null)
     $payed_list        = $evt['payed_list'];
 
     $user = User::getSilent($uid);
-    if ($user) {
-        $email = $user->forlifeEmail();
-    } else {
-        $res = XDB::query("SELECT  email
-                             FROM  #groupex#.membres
-                            WHERE  uid = {?} AND asso_id = {?}",
-                          $uid, $globals->asso('id'));
-        $email = $res->fetchOneCell();
-    }
+    $email = $user->forlifeEmail();
 
     function subscribe($list, $email)
     {
@@ -226,7 +221,9 @@ function subscribe_lists_event($participate, $uid, $evt, $paid, $payment = null)
         subscribe($payed_list, $email);
     } else {
         unsubscribe($payed_list, $email);
-        subscribe($unpayed_list, $email);
+        if (!is_null($participate)) {
+            subscribe($unpayed_list, $email);
+        }
     }
 }
 // }}}
@@ -246,7 +243,7 @@ function event_change_shortname(&$page, $eid, $old, $new)
                     et qu'il ne contient que des lettres non accentuées,
                     des chiffres ou les caractères - et .");
         return $old;
-    } elseif ($new && ctype_digit($new)) {
+    } elseif ($new && (is_int($new) || ctype_digit($new))) {
         $page->trigError("Le raccourci demandé ne peut être accepté car il
                          ne contient que des chiffres. Rajoute-lui par exemple
                          une lettre.");
@@ -256,7 +253,7 @@ function event_change_shortname(&$page, $eid, $old, $new)
     //vérifier que l'alias n'est pas déja pris
     if ($new && $old != $new) {
         $res = XDB::query('SELECT COUNT(*)
-                             FROM #groupex#.evenements
+                             FROM group_events
                             WHERE short_name = {?}',
                            $new);
         if ($res->fetchOneCell() > 0) {
@@ -301,19 +298,19 @@ function event_change_shortname(&$page, $eid, $old, $new)
         foreach (array('-participants@', '-paye@', '-participants-non-paye@') as $v) {
             XDB::execute("INSERT IGNORE INTO  virtual_redirect (
                                       SELECT  {?} AS vid, IF(al.alias IS NULL, a.email, CONCAT(al.alias, {?})) AS redirect
-                                        FROM  #groupex#.evenements_participants AS ep
-                                   LEFT JOIN  #x4dat#.accounts AS a  ON (ep.uid = a.uid)
-                                   LEFT JOIN  #x4dat#.aliases  AS al ON (al.id = a.uid AND al.type = 'a_vie')
+                                        FROM  group_event_participants AS ep
+                                   LEFT JOIN  accounts AS a  ON (ep.uid = a.uid)
+                                   LEFT JOIN  aliases  AS al ON (al.uid = a.uid AND al.type = 'a_vie')
                                        WHERE  ep.eid = {?} AND " . $where[$v] . "
                                     GROUP BY  ep.uid)",
                          $lastid[$v], '@' . $globals->mail->domain, $eid);
         }
         XDB::execute("INSERT IGNORE INTO  virtual_redirect (
                                   SELECT  {?} AS vid, IF(al.alias IS NULL, a.email, CONCAT(al.alias, {?})) AS redirect
-                                    FROM  #groupex#.membres AS m
-                               LEFT JOIN  #x4dat#.accounts  AS a  ON (a.uid = m.uid)
-                               LEFT JOIN  #x4dat#.aliases   AS al ON (al.id = a.uid AND al.type = 'a_vie')
-                               LEFT JOIN  #groupex#.evenements_participants AS ep ON (ep.uid = m.uid AND ep.eid = {?})
+                                    FROM  group_members AS m
+                               LEFT JOIN  accounts  AS a  ON (a.uid = m.uid)
+                               LEFT JOIN  aliases   AS al ON (al.uid = a.uid AND al.type = 'a_vie')
+                               LEFT JOIN  group_event_participants AS ep ON (ep.uid = m.uid AND ep.eid = {?})
                                    WHERE  m.asso_id = {?} AND ep.uid IS NULL
                                 GROUP BY  m.uid)",
                      $lastid['-absents@'], '@' . $globals->mail->domain, $eid, $globals->asso('id'));