Fixes group payments.
authorStéphane Jacob <sj@m4x.org>
Sat, 17 Sep 2011 23:23:41 +0000 (01:23 +0200)
committerStéphane Jacob <sj@m4x.org>
Sat, 17 Sep 2011 23:23:41 +0000 (01:23 +0200)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
modules/payment.php
templates/payment/payment.tpl [moved from templates/payment/donation.tpl with 88% similarity]
templates/skin/common.footer.tpl

index 863ce41..03d9119 100644 (file)
@@ -105,9 +105,9 @@ class PaymentModule extends PLModule
     function handlers()
     {
         return array(
-            'donation'                     => $this->make_hook('donation',         AUTH_COOKIE, 'user'),
-            'donation/cyber2_return'       => $this->make_hook('cyber2_return',    AUTH_PUBLIC, 'user', NO_HTTPS),
-            'donation/paypal_return'       => $this->make_hook('paypal_return',    AUTH_PUBLIC, 'user', NO_HTTPS),
+            'payment'                      => $this->make_hook('payment',          AUTH_COOKIE, 'user'),
+            'payment/cyber2_return'        => $this->make_hook('cyber2_return',    AUTH_PUBLIC, 'user', NO_HTTPS),
+            'payment/paypal_return'        => $this->make_hook('paypal_return',    AUTH_PUBLIC, 'user', NO_HTTPS),
             '%grp/paiement'                => $this->make_hook('xnet_payment',     AUTH_PASSWD, 'user'),
             '%grp/payment'                 => $this->make_hook('xnet_payment',     AUTH_PASSWD, 'user'),
             '%grp/payment/csv'             => $this->make_hook('payment_csv',      AUTH_PASSWD, 'groupadmin'),
@@ -123,17 +123,19 @@ class PaymentModule extends PLModule
         );
     }
 
-    function handler_donation($page)
+    function handler_payment($page, $ref = -1)
     {
-        global $globals;
-
         $this->load('money.inc.php');
 
-        $page->changeTpl('payment/donation.tpl');
-        $page->setTitle("Don à l'association Polytechnique.org");
+        $page->changeTpl('payment/payment.tpl');
+        $page->setTitle('Télépaiement');
 
         $meth = new PayMethod(Env::i('methode', -1));
-        $pay  = new Payment();
+        $pay  = new Payment($ref);
+
+        if($pay->flags->hasflag('old')){
+            $page->kill('La transaction selectionnée est périmée.');
+        }
 
         $val = (Post::v('amount') != 0) ? Post::v('amount') : $pay->amount_def;
 
@@ -155,32 +157,36 @@ class PaymentModule extends PLModule
                 $page->assign('transactions', $res);
             }
 
-            $biggest_donations = XDB::fetchAllAssoc('SELECT  IF(p.display,
-                                                                IF(ap.pid IS NOT NULL, CONCAT(a.full_name, \' (\', pd.promo, \')\'), a.full_name),
-                                                                \'XXXX\') AS name, p.amount, p.ts_confirmed
-                                                       FROM  payment_transactions AS p
-                                                 INNER JOIN  accounts             AS a  ON (a.uid = p.uid)
-                                                  LEFT JOIN  account_profiles     AS ap ON (a.uid = ap.uid AND FIND_IN_SET(\'owner\', ap.perms))
-                                                  LEFT JOIN  profile_display      AS pd ON (ap.pid = pd.pid)
-                                                      WHERE  p.ref = {?}
-                                                   ORDER BY  LENGTH(p.amount) DESC, p.amount DESC, name
-                                                      LIMIT  10',
-                                                    $pay->id);
-
-            $donations = XDB::fetchAllAssoc('(SELECT  SUM(amount) AS amount, YEAR(ts_confirmed) AS year, MONTH(ts_confirmed) AS month, ts_confirmed
-                                                FROM  payment_transactions
-                                               WHERE  ref = {?} AND YEAR(ts_confirmed) = YEAR(CURDATE())
-                                            GROUP BY  month)
-                                             UNION
-                                             (SELECT  SUM(amount) AS amount, YEAR(ts_confirmed) AS year, 0 AS month, ts_confirmed
-                                                FROM  payment_transactions
-                                               WHERE  ref = {?} AND YEAR(ts_confirmed) < YEAR(CURDATE())
-                                            GROUP BY  year)
-                                            ORDER BY  year DESC, month DESC',
-                                            $pay->id, $pay->id);
-
-            $page->assign('biggest_donations', $biggest_donations);
-            $page->assign('donations', $donations);
+            // Only if $id = -1, meaning only for donation the site's association
+            if ($ref == -1) {
+                $biggest_donations = XDB::fetchAllAssoc('SELECT  IF(p.display,
+                                                                    IF(ap.pid IS NOT NULL, CONCAT(a.full_name, \' (\', pd.promo, \')\'), a.full_name),
+                                                                    \'XXXX\') AS name, p.amount, p.ts_confirmed
+                                                           FROM  payment_transactions AS p
+                                                     INNER JOIN  accounts             AS a  ON (a.uid = p.uid)
+                                                      LEFT JOIN  account_profiles     AS ap ON (a.uid = ap.uid AND FIND_IN_SET(\'owner\', ap.perms))
+                                                      LEFT JOIN  profile_display      AS pd ON (ap.pid = pd.pid)
+                                                          WHERE  p.ref = {?}
+                                                       ORDER BY  LENGTH(p.amount) DESC, p.amount DESC, name
+                                                          LIMIT  10',
+                                                        $pay->id);
+
+                $donations = XDB::fetchAllAssoc('(SELECT  SUM(amount) AS amount, YEAR(ts_confirmed) AS year, MONTH(ts_confirmed) AS month, ts_confirmed
+                                                    FROM  payment_transactions
+                                                   WHERE  ref = {?} AND YEAR(ts_confirmed) = YEAR(CURDATE())
+                                                GROUP BY  month)
+                                                 UNION
+                                                 (SELECT  SUM(amount) AS amount, YEAR(ts_confirmed) AS year, 0 AS month, ts_confirmed
+                                                    FROM  payment_transactions
+                                                   WHERE  ref = {?} AND YEAR(ts_confirmed) < YEAR(CURDATE())
+                                                GROUP BY  year)
+                                                ORDER BY  year DESC, month DESC',
+                                                $pay->id, $pay->id);
+
+                $page->assign('biggest_donations', $biggest_donations);
+                $page->assign('donations', $donations);
+                $page->assign('donation', true);
+            }
         }
 
         $val = floor($val * 100) / 100;
@@ -189,6 +195,7 @@ class PaymentModule extends PLModule
 
         $page->assign('meth', $meth);
         $page->assign('pay', $pay);
+        $page->assign('evtlink', $pay->event());
         $page->assign('sex', S::user()->isFemale());
     }
 
similarity index 88%
rename from templates/payment/donation.tpl
rename to templates/payment/payment.tpl
index 30ce85e..cface37 100644 (file)
@@ -22,7 +22,7 @@
 
 {if $smarty.request.op eq "submit" and !$pl_errors}
 
-<h1>Don à l'association Polytechnique.org</h1>
+<h1>Télépaiements</h1>
 
 <table class="bicol">
   <tr>
@@ -80,15 +80,32 @@ recevras une confirmation par email.
 {$pay->api->text}
 </p>
 {/if}
+{if $evtlink}
+<p class="erreur">
+Si tu n'es pas encore inscrit à cet événement, n'oublie pas d'aller t'<a href='http://www.polytechnique.net/{$evtlink.diminutif}/events/sub/{$evtlink.eid}'>inscrire</a>.
+</p>
+{/if}
 
 {else}
 
+{if t($donation)}
 {include wiki=Docs.Dons}
+{/if}
 
 <form method="post" action="{$platal->pl_self()}">
   <table class="bicol">
     <tr>
-      <th colspan="2">Effectuer le don</th>
+      <th colspan="2">Effectuer un télépaiement</th>
+    </tr>
+    <tr>
+      <td>Transaction</td>
+      <td>
+        <strong>{$pay->text}</strong><input type="hidden" name="ref" value="{$pay->id}" />
+        {if $pay->url}
+        <br />
+        <a href="{$pay->url}">plus d'informations</a>
+        {/if}
+      </td>
     </tr>
     <tr>
       <td>Méthode</td>
@@ -106,6 +123,7 @@ recevras une confirmation par email.
       <td>Commentaire</td>
       <td><textarea name="comment" rows="5" cols="30"></textarea></td>
     </tr>
+    {if t($donation)}
     <tr>
       <td>Afficher ton nom dans la liste des donateurs</td>
       <td>
@@ -114,6 +132,7 @@ recevras une confirmation par email.
         <label><input type="radio" name="display" value="0" />Non</label>
       </td>
     </tr>
+    {/if}
     <tr>
       <td>&nbsp;</td>
       <td>
@@ -125,7 +144,7 @@ recevras une confirmation par email.
 </form>
 
 {if t($transactions)}
-<p class="descr">Tu as déjà effectué les dons suivants&nbsp;:</p>
+<p class="descr">Tu as déjà effectué des paiements pour cette transaction&nbsp;:</p>
 <table class="bicol">
 <tr><th>Date</th><th>Montant</th></tr>
 {iterate from=$transactions item=t}
@@ -137,6 +156,7 @@ recevras une confirmation par email.
 </table>
 {/if}
 
+{if t($donation)}
 <p class="descr">Les 10 plus gros dons sont les suivants&nbsp;:</p>
 <table class="bicol">
   <tr>
@@ -166,6 +186,7 @@ recevras une confirmation par email.
   </tr>
   {/foreach}
 </table>
+{/if}
 
 {/if}
 
index 8590893..88d920b 100644 (file)
@@ -28,7 +28,7 @@
   <a href="Equipe/APropos">À propos de ce site et ses équipes</a>
   {if hasPerm('payment')}
   &nbsp;-&nbsp;
-  <a href="donation">Faire un don</a>
+  <a href="payment">Faire un don</a>
   {/if}
 <br />
   <a href="Docs/Ethique">Services et éthique</a>