+ $page->assign('undisplayed_events', $undisplayed_events);
+ }
+
+ function handler_sub(&$page, $eid = null)
+ {
+ require_once dirname(__FILE__).'/xnetevents/xnetevents.inc.php';
+ $page->changeTpl('xnetevents/subscribe.tpl');
+
+ $evt = get_event_detail($eid);
+ if (!$evt) {
+ return PL_NOT_FOUND;
+ }
+
+ if (!$evt['inscr_open']) {
+ $page->kill('Les inscriptions pour cet événement sont closes');
+ }
+ if (!$evt['accept_nonmembre'] && !is_member() && !may_update()) {
+ $page->kill('Cet événement est fermé aux non-membres du groupe');
+ }
+
+ global $globals;
+ $res = XDB::query("SELECT stamp FROM requests
+ WHERE type = 'paiements' AND data LIKE {?}",
+ PayReq::same_event($evt['eid'], $globals->asso('id')));
+ $page->assign('validation', $res->numRows());
+ $page->assign('event', $evt);
+
+ if (!Post::has('submit')) {
+ return;
+ }
+
+ $moments = Post::v('moment', array());
+ $pers = Post::v('personnes', array());
+ $subs = array();
+
+ foreach ($moments as $j => $v) {
+ $subs[$j] = intval($v);
+
+ // retreive ohter field when more than one person
+ if ($subs[$j] == 2) {
+ if (!isset($pers[$j]) || !is_numeric($pers[$j])
+ || $pers[$j] < 0)
+ {
+ $page->trigError('Tu dois choisir un nombre d\'invités correct !');
+ return;
+ }
+ $subs[$j] = 1 + $pers[$j];
+ }
+ }
+
+ // impossible to unsubscribe if you already paid sthing
+ if (!array_sum($subs) && $evt['paid'] != 0) {
+ $page->trigError("Impossible de te désinscrire complètement ".
+ "parce que tu as fait un paiement par ".
+ "chèque ou par liquide. Contacte un ".
+ "administrateur du groupe si tu es sûr de ".
+ "ne pas venir");
+ return;
+ }
+
+ // update actual inscriptions
+ $updated = false;
+ $total = 0;
+ $paid = $evt['paid'] ? $evt['paid'] : 0;
+ $telepaid= $evt['telepaid'] ? $evt['telepaid'] : 0;
+ foreach ($subs as $j => $nb) {
+ if ($nb >= 0) {
+ XDB::execute(
+ "REPLACE INTO groupex.evenements_participants
+ VALUES ({?}, {?}, {?}, {?}, {?}, {?})",
+ $eid, S::v('uid'), $j, $nb, Env::has('notify_payment') ? 'notify_payment' : '',
+ $j == 1 ? $paid - $telepaid : 0);
+ $updated = $eid;
+ } else {
+ XDB::execute(
+ "DELETE FROM groupex.evenements_participants
+ WHERE eid = {?} AND uid = {?} AND item_id = {?}",
+ $eid, S::v("uid"), $j);
+ $updated = $eid;
+ }
+ $total += $nb;
+ }
+ if ($updated !== false) {
+ subscribe_lists_event($total, S::i('uid'), $evt);
+ }
+ $page->assign('event', get_event_detail($eid));