From 50208d22da6644f4413ad007dfd0d1fc8f5b7000 Mon Sep 17 00:00:00 2001 From: =?utf8?q?St=C3=A9phane=20Jacob?= Date: Thu, 15 Jul 2010 16:05:28 +0200 Subject: [PATCH] Fixes event related ML. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Jacob --- modules/payment.php | 6 ++-- modules/xnetevents.php | 27 +++++++------- modules/xnetevents/xnetevents.inc.php | 68 +++++++++++++++++++++++------------ 3 files changed, 63 insertions(+), 38 deletions(-) diff --git a/modules/payment.php b/modules/payment.php index e2f57b4..737d9c2 100644 --- a/modules/payment.php +++ b/modules/payment.php @@ -226,7 +226,7 @@ class PaymentModule extends PLModule if ($eid = $res->fetchOneCell()) { require_once dirname(__FILE__) . '/xnetevents/xnetevents.inc.php'; $evt = get_event_detail($eid); - subscribe_lists_event(0, $uid, $evt, $montant, true); + subscribe_lists_event($uid, $evt, 1, $montant, true); } /* on genere le mail de confirmation */ @@ -319,7 +319,7 @@ class PaymentModule extends PLModule if ($eid = $res->fetchOneCell()) { require_once dirname(__FILE__) . '/xnetevents/xnetevents.inc.php'; $evt = get_event_detail($eid); - subscribe_lists_event(0, $user->id(), $evt, $montant, true); + subscribe_lists_event($user->id(), $evt, 1, $montant, true); } /* on genere le mail de confirmation */ @@ -414,7 +414,7 @@ class PaymentModule extends PLModule if ($eid = $res->fetchOneCell()) { require_once dirname(__FILE__) . '/xnetevents/xnetevents.inc.php'; $evt = get_event_detail($eid); - subscribe_lists_event(0, $uid, $evt, $montant, true); + subscribe_lists_event($user->id(), $evt, 1, $montant, true); } /* on genere le mail de confirmation */ diff --git a/modules/xnetevents.php b/modules/xnetevents.php index 0523d5e..972bd4b 100644 --- a/modules/xnetevents.php +++ b/modules/xnetevents.php @@ -269,7 +269,7 @@ class XnetEventsModule extends PLModule } if ($updated !== false) { $page->trigSuccess('Ton inscription à l\'événement a été mise à jour avec succès.'); - subscribe_lists_event($total, S::i('uid'), $evt, $paid); + subscribe_lists_event(S::i('uid'), $evt, ($total > 0 ? 1 : 0), 0); } $page->assign('event', get_event_detail($eid)); } @@ -547,11 +547,12 @@ class XnetEventsModule extends PLModule // change the price paid by a participant if (Env::v('adm') == 'prix' && $member) { + $amount = strtr(Env::v('montant'), ',', '.'); XDB::execute("UPDATE group_event_participants SET paid = paid + {?} WHERE uid = {?} AND eid = {?} AND item_id = 1", - strtr(Env::v('montant'), ',', '.'), - $member->uid, $evt['eid']); + $amount, $member->uid, $evt['eid']); + subscribe_lists_event($member->uid, $evt, 1, $amount); } // change the number of personns coming with a participant @@ -566,26 +567,28 @@ class XnetEventsModule extends PLModule foreach ($nbs as $id => $nb) { $nb = max(intval($nb), 0); - XDB::execute("REPLACE INTO group_event_participants - VALUES ({?}, {?}, {?}, {?}, {?}, {?})", - $evt['eid'], $member->uid, $id, $nb, '', $id == 1 ? $paid : 0); + XDB::execute('REPLACE INTO group_event_participants + VALUES ({?}, {?}, {?}, {?}, {?}, {?})', + $evt['eid'], $member->uid, $id, $nb, '', $id == 1 ? $paid : 0); } - $res = XDB::query("SELECT COUNT(uid) AS cnt, SUM(nb) AS nb - FROM group_event_participants - WHERE uid = {?} AND eid = {?} - GROUP BY uid", - $member->uid, $evt['eid']); + $res = XDB::query('SELECT COUNT(uid) AS cnt, SUM(nb) AS nb + FROM group_event_participants + WHERE uid = {?} AND eid = {?} + GROUP BY uid', + $member->uid, $evt['eid']); $u = $res->fetchOneAssoc(); if ($u['cnt'] == 1 && $paid == 0 && Post::v('cancel')) { XDB::execute("DELETE FROM group_event_participants WHERE uid = {?} AND eid = {?}", $member->uid, $evt['eid']); $u = 0; + subscribe_lists_event($member->uid, $evt, -1, $paid); } else { + var_dump($u); $u = $u['cnt'] ? $u['nb'] : null; + subscribe_lists_event($member->uid, $evt, ($u > 0 ? 1 : 0), $paid); } - subscribe_lists_event($u, $member->uid, $evt, $paid); } $evt = get_event_detail($eid, $item_id); diff --git a/modules/xnetevents/xnetevents.inc.php b/modules/xnetevents/xnetevents.inc.php index 93f011c..bd68285 100644 --- a/modules/xnetevents/xnetevents.inc.php +++ b/modules/xnetevents/xnetevents.inc.php @@ -173,11 +173,19 @@ function get_event_participants(&$evt, $item_id, array $tri = array(), $count = // }}} // {{{ function subscribe_lists_event() -function subscribe_lists_event($participate, $uid, $evt, $paid, $payment = null) +/** Subscribes user to various event related mailing lists. + * + * @param $uid: user's id. + * @param evt: events data, in particular ids of the lists at stake. + * @param participate: indicates if the user takes part at the event or not; + * -1 means he did not answer, 0 means no, and 1 means yes. + * @param paid: has the user already payed anything? + * 0 means no, a positive amount means yes. + * @param payment: is this function called from a payment page? + * If true, only payment related lists should be updated. + */ +function subscribe_lists_event($uid, $evt, $participate, $paid, $payment = false) { - global $globals; - $page =& Platal::page(); - $participant_list = $evt['participant_list']; $absent_list = $evt['absent_list']; $unpayed_list = $evt['booked_unpayed_list']; @@ -189,8 +197,8 @@ function subscribe_lists_event($participate, $uid, $evt, $paid, $payment = null) function subscribe($list, $email) { if ($list && $email) { - XDB::execute("REPLACE INTO virtual_redirect - VALUES ({?},{?})", + XDB::execute('REPLACE INTO virtual_redirect + VALUES ({?}, {?})', $list, $email); } } @@ -198,31 +206,45 @@ function subscribe_lists_event($participate, $uid, $evt, $paid, $payment = null) function unsubscribe($list, $email) { if ($list && $email) { - XDB::execute("DELETE FROM virtual_redirect - WHERE vid = {?} AND redirect = {?}", + XDB::execute('DELETE FROM virtual_redirect + WHERE vid = {?} AND redirect = {?}', $list, $email); } } - if (is_null($payment)) { - if (is_null($participate)) { + /** If $payment is not null, we do not retrieve the value of $participate, + * thus we do not alter participant and absent lists. + */ + if ($payment === true) { + if ($paid > 0) { + unsubscribe($unpayed_list, $email); + subscribe($payed_list, $email); + } + } else { + switch ($participate) { + case -1: unsubscribe($participant_list, $email); + unsubscribe($unpayed_list, $email); + unsubscribe($payed_list, $email); subscribe($absent_list, $email); - } elseif ($participate) { - subscribe($participant_list, $email); - unsubscribe($absent_list, $email); - } else { + break; + case 0: unsubscribe($participant_list, $email); unsubscribe($absent_list, $email); - } - } - if ($paid > 0) { - unsubscribe($unpayed_list, $email); - subscribe($payed_list, $email); - } else { - unsubscribe($payed_list, $email); - if (!is_null($participate)) { - subscribe($unpayed_list, $email); + unsubscribe($unpayed_list, $email); + unsubscribe($payed_list, $email); + break; + case 1: + subscribe($participant_list, $email); + unsubscribe($absent_list, $email); + if ($paid > 0) { + unsubscribe($unpayed_list, $email); + subscribe($payed_list, $email); + } else { + subscribe($unpayed_list, $email); + unsubscribe($payed_list, $email); + } + break; } } } -- 2.1.4