From: Stéphane Jacob Date: Tue, 13 Sep 2011 15:38:24 +0000 (+0200) Subject: Replaces payments page on main site by a donation page (Closes #1537). X-Git-Tag: xorg/1.1.4~168 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=75d4576e39af9175f9912cc4635524f5a73e1872;p=platal.git Replaces payments page on main site by a donation page (Closes #1537). Signed-off-by: Stéphane Jacob --- diff --git a/ChangeLog b/ChangeLog index 61e1ab5..99763d5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,9 @@ Bug/Wish: * Core: - #1523: Rename AUTH_MDP to AUTH_PASSWD -JAC + * Payments: + - #1537: Replaces payments page on main site by a donation page -JAC + ================================================================================ VERSION 1.1.3 10 09 2011 diff --git a/include/validations/paiements.inc.php b/include/validations/paiements.inc.php index 2509806..448167e 100644 --- a/include/validations/paiements.inc.php +++ b/include/validations/paiements.inc.php @@ -37,7 +37,6 @@ class PayReq extends Validate public $asso; public $evt; public $evt_intitule; - public $donation; public $rules = "Vérifier que les balises <salutation>, <prenom>, <nom>, <montant> et <comment> n'ont pas été modifiées. Vérifier que le demandeur n'a pas laissé les crochets []. @@ -47,7 +46,7 @@ Si le télépaiement n'est pas lié à un groupe ou supérieur à 51 euros, lais public function __construct(User $_user, $_intitule, $_site, $_montant, $_msg, $_montantmin=0, $_montantmax=999, $_asso_id = 0, - $_evt = 0, $_donation = false, $_stamp=0) + $_evt = 0, $_stamp=0) { parent::__construct($_user, false, 'paiements', $_stamp); @@ -56,7 +55,6 @@ Si le télépaiement n'est pas lié à un groupe ou supérieur à 51 euros, lais $this->msg_reponse = $_msg; $this->asso_id = (string)$_asso_id; $this->evt = (string)$_evt; - $this->donation = $_donation; $this->montant = $_montant; $this->montant_min = $_montantmin; $this->montant_max = $_montantmax; @@ -169,10 +167,9 @@ Si le télépaiement n'est pas lié à un groupe ou supérieur à 51 euros, lais { $res = XDB::query("SELECT MAX(id) FROM payments"); $id = $res->fetchOneCell()+1; - $flags = ($this->donation ? 'donation' : ''); - $ret = XDB::execute('INSERT INTO payments (id, text, url, flags, amount_def, amount_min, amount_max, mail, confirmation, asso_id) - VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})', - $id, $this->titre, $this->site, $flags, $this->montant, $this->montant_min, + $ret = XDB::execute('INSERT INTO payments (id, text, url, amount_def, amount_min, amount_max, mail, confirmation, asso_id) + VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})', + $id, $this->titre, $this->site, $this->montant, $this->montant_min, $this->montant_max, $this->user->bestEmail(), $this->msg_reponse, $this->asso_id); if ($this->asso_id && $this->evt) { XDB::execute("UPDATE group_events diff --git a/modules/payment.php b/modules/payment.php index 2641b42..863ce41 100644 --- a/modules/payment.php +++ b/modules/payment.php @@ -105,9 +105,9 @@ class PaymentModule extends PLModule function handlers() { return array( - 'payment' => $this->make_hook('payment', AUTH_PASSWD, 'payment'), - '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), + '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), '%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,43 +123,25 @@ class PaymentModule extends PLModule ); } - function handler_payment($page, $ref = -1) + function handler_donation($page) { global $globals; $this->load('money.inc.php'); - if (!empty($GLOBALS['IS_XNET_SITE'])) { - if (!$globals->asso('id')) { - return PL_NOT_FOUND; - } - $res = XDB::query('SELECT asso_id - FROM payments - WHERE asso_id = {?} AND id = {?}', - $globals->asso('id'), $ref); - if (!$res->numRows()) { - return PL_FORBIDDEN; - } - } - $page->changeTpl('payment/index.tpl'); - $page->setTitle('Télépaiements'); + $page->changeTpl('payment/donation.tpl'); + $page->setTitle("Don à l'association Polytechnique.org"); - // initialisation - $op = Env::v('op', 'select'); $meth = new PayMethod(Env::i('methode', -1)); - $pay = new Payment($ref); + $pay = new Payment(); - if($pay->flags->hasflag('old')){ - $page->trigError("La transaction selectionnée est périmée."); - $pay = new Payment(); - } - $val = Env::v('montant') != 0 ? Env::v('montant') : $pay->amount_def; + $val = (Post::v('amount') != 0) ? Post::v('amount') : $pay->amount_def; - if (($e = $pay->check($val)) !== true) { - $page->trigError($e); + if (($error = $pay->check($val)) !== true) { + $page->trigError($error); } - if ($op == 'submit') { + if (Post::has('op') && Post::v('op', 'select') == 'submit') { $pay->init($val, $meth); $pay->prepareform($pay); } else { @@ -167,42 +149,47 @@ class PaymentModule extends PLModule FROM payment_transactions WHERE uid = {?} AND ref = {?} ORDER BY ts_confirmed DESC', - S::v('uid', -1), $ref); + S::v('uid', -1), $pay->id); if ($res->total()) { $page->assign('transactions', $res); } - if ($pay->flags->hasflag('donation')) { - $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 - 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', - $ref); - $sum = 0; - foreach ($donations as $d) { - $sum += $d['amount']; - } - - $page->assign('donations', $donations); - $page->assign('sum', strtr($sum, '.', ',')); - } - } - - $val = floor($val*100)/100; - $page->assign('montant', $val); + $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); + } + + $val = floor($val * 100) / 100; + $page->assign('amount', $val); $page->assign('comment', Env::v('comment')); $page->assign('meth', $meth); $page->assign('pay', $pay); - $page->assign('evtlink', $pay->event()); $page->assign('sex', S::user()->isFemale()); - $page->assign('donation', $pay->flags->hasflag('donation')); } function handler_cyber2_return($page, $uid = null) @@ -925,7 +912,7 @@ class PaymentLogsImporter extends CSVImporter { // convert date $a['date'] = preg_replace('/([0-9]{2})\/([0-9]{2})\/([0-9]{4}).*/', '\3-\2-\1', $a['date']); $a['date'] = preg_replace('/T.*/','', $a['date']); - + // convert money $a['amount'] = str_replace(',', '.', $a['amount']); $a['commission'] = str_replace(',', '.', $a['commission']); diff --git a/modules/xnetevents.php b/modules/xnetevents.php index ba0a815..e2c4027 100644 --- a/modules/xnetevents.php +++ b/modules/xnetevents.php @@ -463,7 +463,7 @@ class XnetEventsModule extends PLModule Post::v('intitule')." - ".$globals->asso('nom'), Post::v('site'), $money_defaut, Post::v('confirmation'), 0, 999, - $globals->asso('id'), $eid, Post::b('donation')); + $globals->asso('id'), $eid); if ($p->accept()) { $p->submit(); } else { diff --git a/templates/payment/index.tpl b/templates/payment/donation.tpl similarity index 71% rename from templates/payment/index.tpl rename to templates/payment/donation.tpl index 69b0bc7..30ce85e 100644 --- a/templates/payment/index.tpl +++ b/templates/payment/donation.tpl @@ -20,11 +20,10 @@ {* *} {**************************************************************************} - -

Télépaiements

- {if $smarty.request.op eq "submit" and !$pl_errors} +

Don à l'association Polytechnique.org

+ @@ -35,7 +34,7 @@ - + {if $comment} @@ -73,7 +72,7 @@
Paiement via {$meth->text}
Montant{$montant} €{$amount} €

En cliquant sur "Valider", tu seras redirigé{if $sex}e{/if} vers le site de {$pay->api->nomsite}, où il te -sera demandé de saisir ton numéro de carte bancaire. Lorsque le paiement aura été effectué, tu +sera demandé de saisir ton numéro de carte bancaire. Lorsque le paiement aura été effectué, tu recevras une confirmation par email.

{if $pay->api->text} @@ -81,48 +80,15 @@ recevras une confirmation par email. {$pay->api->text}

{/if} -{if $evtlink} -

-Si tu n'es pas encore inscrit à cet événement, n'oublie pas d'aller t'inscrire. -

-{/if} {else} - +{include wiki=Docs.Dons}
- - - - - + @@ -134,26 +100,23 @@ function payment_submit(form) - + - {if t($donation)} - + - {/if} @@ -162,7 +125,7 @@ function payment_submit(form) {if t($transactions)} -

Tu as déjà effectué des paiements pour cette transaction :

+

Tu as déjà effectué les dons suivants :

Effectuer un télépaiement
Transaction - {if t($asso)} - {$pay->text} - {else} - - {/if} - {if $pay->url} -
- plus d'informations - {/if} -
Effectuer le don
Méthode
Montant
Commentaire
Afficher ton nom dans la liste des donateurs sur {#globals.core.sitename#}Afficher ton nom dans la liste des donateurs  - 
  - {if !t($donation)}{/if}
{iterate from=$transactions item=t} @@ -174,27 +137,36 @@ function payment_submit(form)
DateMontant
{/if} -{if t($donation)} -{if !t($donations)} -

Aucun don n'a encore été recueilli.

-{else} -

Les dons suivants ont déjà été recueillis (pour un total de {$sum} €) :

+

Les 10 plus gros dons sont les suivants :

+ - {foreach from=$donations item=d} + {foreach from=$biggest_donations item=d} + {/foreach}
Nom MontantDate
{$d.name} {$d.amount|replace:'.':','} €{$d.ts_confirmed|date_format}
-{/if} -{/if} -{/if} +

Les dons par période :

+ + + + + + {foreach from=$donations item=d} + + + + + {/foreach} +
PériodeMontant
{if $d.month neq 0}{$d.ts_confirmed|date_format:"%B %Y"}{else}{$d.ts_confirmed|date_format:"%Y"}{/if}{$d.amount|replace:'.':','} €
+{/if} {* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/common.footer.tpl b/templates/skin/common.footer.tpl index 8b7eeba..8590893 100644 --- a/templates/skin/common.footer.tpl +++ b/templates/skin/common.footer.tpl @@ -26,6 +26,10 @@ Lien avec l'AX  -  À propos de ce site et ses équipes + {if hasPerm('payment')} +  -  + Faire un don + {/if}
Services et éthique | Charte diff --git a/templates/skin/common.menu.tpl b/templates/skin/common.menu.tpl index c883869..a50c9f4 100644 --- a/templates/skin/common.menu.tpl +++ b/templates/skin/common.menu.tpl @@ -71,9 +71,6 @@ {if hasPerm('user')} {/if} -{if hasPerm('payment')} - -{/if} {if hasPerm('mail')} {/if} diff --git a/templates/xnetevents/edit.tpl b/templates/xnetevents/edit.tpl index 09053af..99292bc 100644 --- a/templates/xnetevents/edit.tpl +++ b/templates/xnetevents/edit.tpl @@ -201,7 +201,6 @@ Ton inscription à [METS LE NOM DE L'ÉVÉNEMENT ICI] a bien été enregistrée {$profile->fullName("promo")}{/if}
{assign var='asso_url' value=$globals->baseurl|cat:'/'|cat:$platal->ns} Page internet de l'événement :
-
Le nouveau paiement sera activé automatiquement après validation par le trésorier de Polytechnique.org, ce qui sera fait sous peu.