Revert "Rewrites xnetevents index page."
authorNicolas Iooss <nicolas.iooss_git@polytechnique.org>
Sun, 9 Mar 2014 17:32:18 +0000 (18:32 +0100)
committerNicolas Iooss <nicolas.iooss_git@polytechnique.org>
Sun, 9 Mar 2014 17:32:18 +0000 (18:32 +0100)
This reverts commit 607115209690960e2954517822a2862dc33d1c90.

modules/xnetevents.php
modules/xnetevents/xnetevents.inc.php
templates/xnetevents/index.tpl

index 38e4a28..a9d4d1c 100644 (file)
@@ -40,8 +40,6 @@ class XnetEventsModule extends PLModule
         global $globals;
 
         $page->changeTpl('xnetevents/index.tpl');
-        $this->load('xnetevents.inc.php');
-
         $action = null;
         $archive = ($archive == 'archive' && may_update());
 
@@ -153,49 +151,77 @@ class XnetEventsModule extends PLModule
                              SET event_order = {?}
                            WHERE id = {?}",
                           $order, $globals->asso('id'));
+        } else {
+            $order = XDB::fetchOneCell("SELECT event_order FROM groups
+                                         WHERE id = {?}",
+                                        $globals->asso('id'));
+        }
+        if ($order == 'desc') {
+            $evenements = XDB::iterator('SELECT  e.*, LEFT(e.debut, 10) AS first_day, LEFT(e.fin, 10) AS last_day,
+                                                 IF(e.deadline_inscription,
+                                                         e.deadline_inscription >= LEFT(NOW(), 10),
+                                                         1) AS inscr_open,
+                                                 e.deadline_inscription,
+                                                 MAX(ep.nb) IS NOT NULL AS inscrit, MAX(ep.paid) AS paid
+                                           FROM  group_events              AS e
+                                      LEFT JOIN  group_event_participants AS ep ON (ep.eid = e.eid AND ep.uid = {?})
+                                          WHERE  asso_id = {?} AND  archive = {?}
+                                       GROUP BY  e.eid
+                                       ORDER BY  inscr_open DESC, debut DESC',
+                                         S::i('uid'), $globals->asso('id'), $archive ? 1 : 0);
+        } else {
+            $evenements = XDB::iterator('SELECT  e.*, LEFT(e.debut, 10) AS first_day, LEFT(e.fin, 10) AS last_day,
+                                                 IF(e.deadline_inscription,
+                                                         e.deadline_inscription >= LEFT(NOW(), 10),
+                                                         1) AS inscr_open,
+                                                 e.deadline_inscription,
+                                                 MAX(ep.nb) IS NOT NULL AS inscrit, MAX(ep.paid) AS paid
+                                           FROM  group_events              AS e
+                                      LEFT JOIN  group_event_participants AS ep ON (ep.eid = e.eid AND ep.uid = {?})
+                                          WHERE  asso_id = {?} AND  archive = {?}
+                                       GROUP BY  e.eid
+                                       ORDER BY  inscr_open DESC, debut ASC',
+                                         S::i('uid'), $globals->asso('id'), $archive ? 1 : 0);
         }
-        $order = get_event_order($globals->asso('id'));
-        $evts = get_events($globals->asso('id'), $order);
         $page->assign('order', $order);
 
+        $evts = array();
         $undisplayed_events = 0;
-        foreach ($evts as $eid => &$e) {
+        $this->load('xnetevents.inc.php');
+
+        while ($e = $evenements->next()) {
             if (!is_member() && !may_update() && !$e['accept_nonmembre']) {
                 $undisplayed_events ++;
                 continue;
             }
 
             $e['show_participants'] = ($e['show_participants'] && (is_member() || may_update()));
-            $e['items'] = get_event_items($eid);
+            $e['moments'] = XDB::fetchAllAssoc('SELECT  titre, details, montant, ei.item_id, nb, ep.paid
+                                                  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 ep.uid = {?})
+                                                 WHERE ei.eid = {?}',
+                                                S::i('uid'), $e['eid']);
+
             $e['topay'] = 0;
             $e['paid']  = 0;
-            $sub = get_event_subscription($eid, S::i('uid'));
-            if (empty($sub)) {
-                $e['inscrit'] = false;
-            } else {
-                $e['inscrit'] = true;
-                foreach ($e['items'] as $item_id => $m) {
-                    if (isset($sub[$item_id])) {
-                        $e['topay'] += $sub[$item_id]['nb'] * $m['montant'];
-                        $e['paid'] += $sub[$item_id]['paid'];
-                    }
-                }
+            foreach ($e['moments'] as $m) {
+                $e['topay'] += $m['nb'] * $m['montant'];
+                $e['paid'] += $m['paid'];
             }
-            $e['sub'] = $sub;
 
-            $telepaid = get_event_telepaid($eid, S::i('uid'));
-            $e['paid'] += $telepaid;
+            $montant = XDB::fetchOneCell(
+                "SELECT SUM(amount) as sum_amount
+                   FROM payment_transactions AS t
+                 WHERE ref = {?} AND uid = {?}", $e['paiement_id'], S::v('uid'));
+            $e['paid'] += $montant;
 
-            $e['date'] = make_event_date($e['debut'], $e['fin']);
-            if ($e['deadline_inscription'] == null || strtotime($e['deadline_inscription']) >= time()) {
-                $e['inscr_open'] = true;
-            } else {
-                $e['inscr_open'] = false;
-            }
+            make_event_date($e);
 
             if (Env::has('updated') && $e['eid'] == Env::i('updated')) {
                 $page->assign('updated', $e);
             }
+            $evts[] = $e;
         }
 
         $page->assign('evenements', $evts);
index 7dd1ae1..594f0aa 100644 (file)
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************/
 
-// {{{ function get_event_order()
-/* get the order to paste the events
- * @param $asso_id: group's id
- */
-function get_event_order($asso_id)
-{
-    $order = XDB::fetchOneCell('SELECT g.event_order
-                                  FROM groups as g
-                                 WHERE id = {?}',
-                                       $asso_id);
-    return $order;
-}
-// }}}
-
-// {{{ function get_events()
-/* get the events of the given group ordered by the standard order for the group
- * @param $asso_id: group's id
- * @param $order: order to paste the events (asc or desc)
- */
-function get_events($asso_id, $order)
-{
-    if ($order != 'asc' && $order != 'desc') {
-        $order = 'desc';
-    }
-    $evts = XDB::fetchAllAssoc('eid', "SELECT ge.eid, ge.uid, ge.intitule, ge.debut, ge.fin, ge.show_participants, ge.deadline_inscription, ge.accept_nonmembre
-                                         FROM group_events as ge
-                                        WHERE asso_id = {?}
-                                     ORDER BY ge.debut $order",
-                                              $asso_id);
-    return $evts;
-}
-// }}}
-
-// {{{ function get_event() (detail, for subs page only for now)
-/* get event details
- * @param $eid: event's id
- */
-function get_event($eid)
-{
-    $evt = XDB::fetchOneAssoc('SELECT ge.uid, ge.intitule, ge.descriptif, ge.debut, ge.fin, ge.deadline_inscription, ge.accept_nonmembre
-                                         FROM group_events as ge
-                                        WHERE eid = {?}',
-                                        $eid);
-    if (!is_null($evt['deadline_inscription']) && strtotime($evt['deadline_inscription']) < time()) {
-        $evt['inscr_open'] = false;
-    } else {
-        $evt['inscr_open'] = true;
-    }
-    $evt['organizer'] = User::getSilent($evt['uid'])->profile();
-    $evt['date'] = make_event_date($evt['debut'], $evt['fin']);
-
-    return $evt;
-}
-// }}}
-
-// {{{ function get_event_items()
-/** get items of the given event
- *
- * @param $eid : event's id
- *
- */
-function get_event_items($eid)
-{
-    $evt = XDB::fetchAllAssoc('item_id', 'SELECT gei.item_id, gei.titre, gei.details, gei.montant
-        FROM group_event_items as gei
-        WHERE eid = {?}',
-        $eid);
-    return $evt;
-}
-// }}}
-
-// {{{ function get_event_subscription()
-/* get all participations if uid is not specified, only the user's participation if uid specified
- * @param $eid: event's id
- * @param $uid: user's id
- */
-function get_event_subscription($eid, $uid = null)
-{
-    if (!is_null($uid)) {
-        $where = ' and gep.uid = '.$uid;
-    }
-    else {
-        $where = '';
-    }
-   $sub =  XDB::fetchAllAssoc('item_id','SELECT gep.item_id, gep.nb, gep.paid FROM group_event_participants as gep
-                                          WHERE gep.eid = {?}'.$where,
-                                                $eid);
-   return $sub;
-}
-// }}}
-
-// {{{ function get_event_telepaid()
-/* get the total payments made by a user for an event
- * @param $eid: event's id
- * @param $uid: user's id
- */
-function get_event_telepaid($eid, $uid)
-{
-   $telepaid = XDB::fetchOneCell('SELECT SUM(pt.amount)
-                                    FROM payment_transactions AS pt
-                               LEFT JOIN group_events as ge ON (ge.paiement_id = pt.ref)
-                                   WHERE ge.eid = {?} AND pt.uid = {?}', 
-                                         $eid, $uid);
-    return $telepaid;
-}
-// }}}
-
 // {{{ function get_event_detail()
 
 function get_event_detail($eid, $item_id = false, $asso_id = null)
@@ -203,7 +96,7 @@ function get_event_detail($eid, $item_id = false, $asso_id = null)
     $evt['paid'] += $montant;
     $evt['organizer'] = User::getSilent($evt['uid']);
 
-    $evt['date'] = make_event_date($evt['debut'], $evt['fin']);
+    make_event_date($evt);
 
     $evt['show_participants'] = ($evt['show_participants'] && $GLOBALS['IS_XNET_SITE'] && (is_member() || may_update()));
 
@@ -431,14 +324,13 @@ function event_change_shortname($page, $eid, $old, $new)
 // }}}
 
 //  {{{ function make_event_date()
-function make_event_date($debut, $fin)
+function make_event_date(&$e)
 {
-    $start     = strtotime($debut);
-    $end       = strtotime($fin);
-//    $first_day = $e['first_day'];
-//    $last_day  = $e['last_day'];
-    $first_day = strftime("%d %B %Y", $start);
-    $last_day = strftime("%d %B %Y", $end);
+    $start     = strtotime($e['debut']);
+    $end       = strtotime($e['fin']);
+    $first_day = $e['first_day'];
+    $last_day  = $e['last_day'];
+
     $date = "";
     if ($start && $end != $start) {
         if ($first_day == $last_day) {
@@ -451,7 +343,7 @@ function make_event_date($debut, $fin)
     } else {
         $date .= "le " . strftime("%d %B %Y à %H:%M", $start);
     }
-    return $date;
+    $e['date'] = $date;
 }
 // }}}
 
index 962fdaa..833db76 100644 (file)
@@ -47,7 +47,7 @@
   {if $archive}Archives {else}[<a href="{$platal->ns}events/archive">Archives</a>] {/if}
 </h1>
 
-{if t($updated) && $updated}
+{if $updated}
 <p class='error'>
   La modification de l'inscription a été prise en compte&nbsp;!
   {if $updated.topay > $updated.paid}
 {/if}
 {/if}
 
-{foreach from=$evenements key=eid item=e}
+{foreach from=$evenements item=e}
+
 <table class="bicol" cellspacing="0" cellpadding="0">
   <colgroup>
     <col width='25%' />
   </colgroup>
   <tr>
     <th colspan="2"{if !$e.inscr_open} class="grayed"{/if}>
-      <a href="{$platal->ns}events/ical/{$eid}/{$eid}.ics" style="display: block; float: left;">
+      <a href="{$platal->ns}events/ical/{$e.short_name|default:$e.eid}/{$e.short_name|default:$e.eid}.ics" style="display: block; float: left;">
         {icon name=calendar_view_day title="Événement iCal"}
       </a>
       {$e.intitule}
       {/if}
       {if $is_admin}
       <br />
-      [<a href="{$platal->ns}events/edit/{$eid}">
+      [<a href="{$platal->ns}events/edit/{$e.short_name|default:$e.eid}">
         modifier
         {icon name=date_edit title="Édition de l'événement"}</a>]
       &nbsp;
-      [<a href="javascript:$.dynPost('{$platal->pl_self()}?token={xsrf_token}',{if !$archive}'archive'{else}'unarchive'{/if},{$eid})">
+      [<a href="javascript:$.dynPost('{$platal->pl_self()}?token={xsrf_token}',{if !$archive}'archive'{else}'unarchive'{/if},{$e.eid})">
         {if !$archive}
           archiver
           {icon name=package_add title="Archivage"}</a>]
           {icon name=package_delete title="Désarchivage"}</a>]
         {/if}
       &nbsp;
-      [<a href="javascript:$.dynPost('{$platal->ns}events?token={xsrf_token}','del',{$eid})"
+      [<a href="javascript:$.dynPost('{$platal->ns}events?token={xsrf_token}','del',{$e.eid})"
         onclick="return confirm('Supprimer l\'événement effacera la liste des inscrits et des paiements.\n Es-tu sûr de vouloir supprimer l\'événement&nbsp;?')">
         supprimer
       {icon name=delete title='Suppression'}</a>]
     <td class="titre">Informations&nbsp;:</td>
     <td class='actions'>
       {if $is_admin || $e.show_participants}
-      <a href="{$platal->ns}events/admin/{$eid}">
+      <a href="{$platal->ns}events/admin/{$e.short_name|default:$e.eid}">
         consulter la liste des participants
         {icon name=group title="Liste des participants"}
       </a><br />
     <td class="titre">
       État inscription&nbsp;:
       {if $e.inscr_open}
-        <input type="hidden" name="evt_{counter}" value="{$eid}" />
+        <input type="hidden" name="evt_{counter}" value="{$e.eid}" />
       {/if}
     </td>
     <td>
       {if !$e.inscrit}
       <span class='error'>Non inscrit</span><br />
       {else}
-        {foreach from=$e.items key=item_id item=m}
-        {if !t($e.sub.$item_id) || !$e.sub.$item_id.nb}
+        {foreach from=$e.moments item=m}
+        {if !$m.nb}
         Tu ne viendras pas
         {else}
-        Tu as inscrit {$e.sub.$item_id.nb} personne{if $e.sub.$item_id.nb > 1}s{/if}
+        Tu as inscrit {$m.nb} personne{if $m.nb > 1}s{/if}
         {/if} à <em>{$m.titre}</em>.<br />
         {/foreach}
       {/if}
         {else}
         Tu as déjà payé les {$e.paid|replace:'.':','}&nbsp;&euro; de ton inscription.
         {/if}
-        {if t($e.paiement_id) &&  $e.paid < $e.topay}
+        {if $e.paiement_id &&  $e.paid < $e.topay}
         [<a href="{$platal->ns}payment/{$e.paiement_id}?montant={math equation="a-b" a=$e.topay b=$e.paid}">
         Payer en ligne</a>]
         {/if}
   <tr>
     <td colspan='2' class='center'>
       <strong>
-      <a href='{$platal->ns}events/sub/{$eid}'>
+      <a href='{$platal->ns}events/sub/{$e.short_name|default:$e.eid}'>
         Gérer mon inscription et voir les détails de l'événement.
       </a>
       </strong>