Allows sorting on payment lists in X.net.
authorStéphane Jacob <sj@m4x.org>
Wed, 17 Nov 2010 10:54:51 +0000 (11:54 +0100)
committerStéphane Jacob <sj@m4x.org>
Wed, 17 Nov 2010 10:54:51 +0000 (11:54 +0100)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
modules/payment.php
templates/payment/xnet.tpl

index d01be39..014bf70 100644 (file)
@@ -503,19 +503,44 @@ class PaymentModule extends PLModule
                   WHERE  asso_id = {?} AND NOT FIND_IN_SET('old', flags)
                ORDER BY  id DESC", $globals->asso('id'));
         $tit = $res->fetchAllAssoc();
-        $page->assign('titres', $tit);
+        $page->assign('titles', $tit);
 
-
-        // TODO: replug sort.
-        $page->assign('order', false);
         $trans = array();
         $event = array();
+        if (may_update()) {
+            static $orders = array('timestamp' => 'p', 'directory_name' => 'a', 'promo' => 'pd', 'comment' => 'p', 'amount' => 'p');
+
+            if (Get::has('order_id') && Get::has('order') && array_key_exists(Get::v('order'), $orders)) {
+                $order_id = Get::i('order_id');
+                $order = Get::v('order');
+                $ordering = ' ORDER BY ' . $orders[$order] . '.' . $order;
+                if (Get::has('order_inv') && Get::i('order_inv') == 1) {
+                    $ordering .= ' DESC';
+                    $page->assign('order_inv', 0);
+                } else {
+                    $page->assign('order_inv', 1);
+                }
+                $page->assign('order_id', $order_id);
+                $page->assign('order', $order);
+            } else {
+                $order_id = false;
+                $ordering = '';
+                $page->assign('order', false);
+            }
+        } else {
+            $ordering = '';
+            $page->assign('order', false);
+        }
         foreach($tit as $foo) {
             $pid = $foo['id'];
             if (may_update()) {
-                $res = XDB::query('SELECT  uid, IF(timestamp = \'0000-00-00\', 0, timestamp) AS date, comment, amount
-                                     FROM  payment_transactions
-                                    WHERE  ref = {?}', $pid);
+                $res = XDB::query('SELECT  p.uid, IF(p.timestamp = \'0000-00-00\', 0, p.timestamp) AS date, p.comment, p.amount
+                                     FROM  payment_transactions AS p
+                               INNER JOIN  accounts             AS a  ON (a.uid = p.uid)
+                                LEFT JOIN  account_profiles     AS ap ON (ap.uid = p.uid AND FIND_IN_SET(\'owner\', ap.perms))
+                                LEFT JOIN  profile_display      AS pd ON (ap.pid = pd.pid)
+                                    WHERE  p.ref = {?}' . (($order_id == $pid) ? $ordering : ''),
+                                  $pid);
                 $trans[$pid] = User::getBulkUsersWithUIDs($res->fetchAllAssoc(), 'uid', 'user');
                 $sum = 0;
                 foreach ($trans[$pid] as $i => $t) {
index d6d3a0d..0d82b54 100644 (file)
@@ -26,7 +26,7 @@
 Voici la liste des paiements en ligne possible pour le groupe {$asso->nom}&nbsp;:
 </p>
 
-{foreach from=$titres item=p}
+{foreach from=$titles item=p}
 
 <fieldset>
 <legend><a href="{$platal->ns}payment/{$p.id}">{icon name=money title="Télépaiement"}{$p.text}</a></legend>
@@ -68,43 +68,43 @@ Voici la liste des paiements en ligne possible pour le groupe {$asso->nom}&nbsp;
 <table cellpadding="0" cellspacing="0" id="list_{$p.id}" class='bicol'>
   <tr>
     <th>
-      {if $order eq 'timestamp'}
-        <a href='{$platal->ns}payment?order={$order}&order_inv={$order_inv}'>
+      {if $order eq 'timestamp' && $order_id eq $p.id}
+        <a href='{$platal->ns}payment?order={$order}&order_inv={$order_inv}&order_id={$p.id}'>
           <img src="{$platal->baseurl}images/{if !$order_inv}dn{else}up{/if}.png" alt="" title="Tri {if $order_inv}dé{/if}croissant" />
       {else}
-        <a href='{$platal->ns}payment?order=timestamp'>
+        <a href='{$platal->ns}payment?order=timestamp&order_id={$p.id}'>
       {/if}Date</a>
     </th>
     <th colspan="2">
-      {if $order eq 'nom'}
-        <a href='{$platal->ns}payment?order={$order}&order_inv={$order_inv}'>
+      {if $order eq 'directory_name' && $order_id eq $p.id}
+        <a href='{$platal->ns}payment?order={$order}&order_inv={$order_inv}&order_id={$p.id}'>
           <img src="{$platal->baseurl}images/{if $order_inv}dn{else}up{/if}.png" alt="" title="Tri {if !$order_inv}dé{/if}croissant" />
       {else}
-        <a href='{$platal->ns}payment?order=nom'>{/if}
+        <a href='{$platal->ns}payment?order=directory_name&order_id={$p.id}'>{/if}
       NOM Prénom</a>
     </th>
     <th>
-      {if $order eq 'promo'}
-        <a href='{$platal->ns}payment?order={$order}&order_inv={$order_inv}'>
+      {if $order eq 'promo' && $order_id eq $p.id}
+        <a href='{$platal->ns}payment?order={$order}&order_inv={$order_inv}&order_id={$p.id}'>
           <img src="{$platal->baseurl}images/{if $order_inv}dn{else}up{/if}.png" alt="" title="Tri {if !$order_inv}dé{/if}croissant" />
       {else}
-        <a href='{$platal->ns}payment?order=promo'>
+        <a href='{$platal->ns}payment?order=promo&order_id={$p.id}'>
       {/if}Promo</a>
     </th>
     <th>
-      {if $order eq 'comment'}
-        <a href='{$platal->ns}payment?order=comment&order_inv={$order_inv}'>
+      {if $order eq 'comment' && $order_id eq $p.id}
+        <a href='{$platal->ns}payment?order=comment&order_inv={$order_inv}&order_id={$p.id}'>
           <img src="{$platal->baseurl}images/{if $order_inv}dn{else}up{/if}.png" alt="" title="Tri {if !$order_inv}dé{/if}   siant" />
       {else}
-        <a href='{$platal->ns}payment?order=comment'>
+        <a href='{$platal->ns}payment?order=comment&order_id={$p.id}'>
       {/if}Commentaire</a>
     </th>
     <th>
-      {if $order eq 'amount'}
-        <a href='{$platal->ns}payment?order={$order}&order_inv={$order_inv}'>
+      {if $order eq 'amount' && $order_id eq $p.id}
+        <a href='{$platal->ns}payment?order={$order}&order_inv={$order_inv}&order_id={$p.id}'>
           <img src="{$platal->baseurl}images/{if $order_inv}dn{else}up{/if}.png" alt="" title="Tri {if !$order_inv}dé{/if}croissant" />
       {else}
-        <a href='{$platal->ns}payment?order=montant'>
+        <a href='{$platal->ns}payment?order=amount&order_id={$p.id}'>
       {/if}Montant</a>
     </th>
   </tr>