X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fxnetevents.php;h=f3bef60558beb4ff17b25829769bbb070575a0d5;hb=cfceef1ef8148bef4f7d1319ceabe43096110332;hp=f4c04ecfe5bcf721fe7145e119fd98a666efc63f;hpb=51f1911c449a5feecf0b2b03415834731357bd34;p=platal.git diff --git a/modules/xnetevents.php b/modules/xnetevents.php index f4c04ec..f3bef60 100644 --- a/modules/xnetevents.php +++ b/modules/xnetevents.php @@ -124,7 +124,7 @@ class XnetEventsModule extends PLModule 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', + ORDER BY inscr_open DESC, debut', S::i('uid'), $globals->asso('id'), $archive ? 1 : 0); $evts = array(); @@ -237,18 +237,20 @@ class XnetEventsModule extends PLModule } // update actual inscriptions - $updated = false; - $total = 0; - $paid = $evt['paid'] ? $evt['paid'] : 0; - $telepaid= $evt['telepaid'] ? $evt['telepaid'] : 0; + $updated = false; + $total = 0; + $paid = $evt['paid'] ? $evt['paid'] : 0; + $telepaid = $evt['telepaid'] ? $evt['telepaid'] : 0; + $paid_inserted = false; foreach ($subs as $j => $nb) { if ($nb >= 0) { XDB::execute('INSERT INTO group_event_participants (eid, uid, item_id, nb, flags, paid) VALUES ({?}, {?}, {?}, {?}, {?}, {?}) ON DUPLICATE KEY UPDATE nb = VALUES(nb), flags = VALUES(flags), paid = VALUES(paid)', $eid, S::v('uid'), $j, $nb, (Env::has('notify_payment') ? 'notify_payment' : ''), - ($j == 1 ? $paid - $telepaid : 0)); + ((!$paid_inserted) ? $paid - $telepaid : 0)); $updated = $eid; + $paid_inserted = true; } else { XDB::execute( "DELETE FROM group_event_participants @@ -603,20 +605,27 @@ class XnetEventsModule extends PLModule // change the number of personns coming with a participant if (Env::v('adm') == 'nbs' && $member) { - $res = XDB::query("SELECT paid + $res = XDB::query("SELECT SUM(paid) FROM group_event_participants WHERE uid = {?} AND eid = {?}", $member->uid, $evt['eid']); - $paid = intval($res->fetchOneCell()); + $paid = $res->fetchOneCell(); $nbs = Post::v('nb', array()); + $paid_inserted = false; foreach ($nbs as $id => $nb) { $nb = max(intval($nb), 0); + if (!$paid_inserted && $nb > 0) { + $item_paid = $paid; + $paid_inserted = true; + } else { + $item_paid = 0; + } XDB::execute('INSERT INTO group_event_participants (eid, uid, item_id, nb, flags, paid) VALUES ({?}, {?}, {?}, {?}, {?}, {?}) ON DUPLICATE KEY UPDATE nb = VALUES(nb), flags = VALUES(flags), paid = VALUES(paid)', - $evt['eid'], $member->uid, $id, $nb, '', ($id == 1 ? $paid : 0)); + $evt['eid'], $member->uid, $id, $nb, '', $item_paid); } $res = XDB::query('SELECT COUNT(uid) AS cnt, SUM(nb) AS nb @@ -625,7 +634,7 @@ class XnetEventsModule extends PLModule GROUP BY uid', $member->uid, $evt['eid']); $u = $res->fetchOneAssoc(); - if ($u['cnt'] == 1 && $paid == 0 && Post::v('cancel')) { + if ($paid == 0 && Post::v('cancel')) { XDB::execute("DELETE FROM group_event_participants WHERE uid = {?} AND eid = {?}", $member->uid, $evt['eid']);