#553 fix send a bug link when right clicking
[platal.git] / modules / xnetevents.php
CommitLineData
4f10a058 1<?php
2/***************************************************************************
3 * Copyright (C) 2003-2006 Polytechnique.org *
4 * http://opensource.polytechnique.org/ *
5 * *
6 * This program is free software; you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation; either version 2 of the License, or *
9 * (at your option) any later version. *
10 * *
11 * This program is distributed in the hope that it will be useful, *
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14 * GNU General Public License for more details. *
15 * *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program; if not, write to the Free Software *
18 * Foundation, Inc., *
19 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
20 ***************************************************************************/
21
ed21e24a 22define('NB_PER_PAGE', 25);
23
4f10a058 24class XnetEventsModule extends PLModule
25{
26 function handlers()
27 {
28 return array(
d1ebc57a 29 '%grp/events' => $this->make_hook('events', AUTH_MDP),
30 '%grp/events/sub' => $this->make_hook('sub', AUTH_MDP),
31 '%grp/events/csv' => $this->make_hook('csv', AUTH_MDP),
11d8a183 32 '%grp/events/ical' => $this->make_hook('ical', AUTH_MDP),
d1ebc57a 33 '%grp/events/edit' => $this->make_hook('edit', AUTH_MDP),
34 '%grp/events/admin' => $this->make_hook('admin', AUTH_MDP),
4f10a058 35 );
36 }
37
f02eefd4 38 function handler_events(&$page, $archive = null)
4f10a058 39 {
40 global $globals;
41
f02eefd4 42 if ($archive == 'archive') {
43 $archive = true;
44 new_groupadmin_page('xnetevents/index.tpl');
45 } else {
46 $archive = false;
47 new_group_open_page('xnetevents/index.tpl');
48 }
4f10a058 49
f02eefd4 50 $action = null;
2b9e5fd3 51 if (Post::has('del')) {
f02eefd4 52 $action = 'del';
53 $eid = Post::v('del');
54 } elseif (Post::has('archive')) {
55 $action = 'archive';
56 $eid = Post::v('archive');
57 } elseif (Post::has('unarchive')) {
58 $action = 'unarchive';
59 $eid = Post::v('unarchive');
60 }
61
62 if (!is_null($action)) {
2b9e5fd3 63 if (!may_update()) {
64 return PL_NOT_ALLOWED;
65 }
66
08cce2ff 67 $res = XDB::query("SELECT asso_id, short_name FROM groupex.evenements
3cabafae 68 WHERE eid = {?} AND asso_id = {?}",
69 $eid, $globals->asso('id'));
2b9e5fd3 70
71 $tmp = $res->fetchOneRow();
72 if (!$tmp) {
73 return PL_NOT_ALLOWED;
74 }
f02eefd4 75 }
2b9e5fd3 76
f02eefd4 77 if ($action == 'del') {
2b9e5fd3 78 // deletes the event mailing aliases
79 if ($tmp[1]) {
08cce2ff 80 XDB::execute(
5070a22d 81 "DELETE FROM virtual WHERE type = 'evt' AND alias LIKE {?}",
82 $tmp[1].'-absents@%');
08cce2ff 83 XDB::execute(
5070a22d 84 "DELETE FROM virtual WHERE type = 'evt' AND alias LIKE {?}",
85 $tmp[1].'-participants@%');
2b9e5fd3 86 }
87
88 // deletes the event items
08cce2ff 89 XDB::execute("DELETE FROM groupex.evenements_items WHERE eid = {?}", $eid);
2b9e5fd3 90
91 // deletes the event participants
08cce2ff 92 XDB::execute("DELETE FROM groupex.evenements_participants
2b9e5fd3 93 WHERE eid = {?}", $eid);
94
95 // deletes the event
08cce2ff 96 XDB::execute("DELETE FROM groupex.evenements
2b9e5fd3 97 WHERE eid = {?} AND asso_id = {?}",
98 $eid, $globals->asso('id'));
99
100 // delete the requests for payments
101 require_once 'validations.inc.php';
08cce2ff 102 XDB::execute("DELETE FROM requests
2b9e5fd3 103 WHERE type = 'paiements' AND data LIKE {?}",
104 PayReq::same_event($eid, $globals->asso('id')));
105 }
106
f02eefd4 107 if ($action == 'archive') {
108 XDB::execute("UPDATE groupex.evenements
109 SET archive = 1
110 WHERE eid = {?} AND asso_id = {?}",
111 $eid, $globals->asso('id'));
112 }
113
114 if ($action == 'unarchive') {
115 XDB::execute("UPDATE groupex.evenements
116 SET archive = 0
117 WHERE eid = {?} AND asso_id = {?}",
118 $eid, $globals->asso('id'));
119 }
1f5b0b59 120
f02eefd4 121 $page->assign('archive', $archive);
4f10a058 122 $page->assign('admin', may_update());
123
08cce2ff 124 $evenements = XDB::iterator(
d6d580ec 125 "SELECT e.*, LEFT(10, e.debut) AS debut_day, LEFT(10, e.fin) AS fin_day,
bd46a8e4 126 IF(e.deadline_inscription, e.deadline_inscription >= LEFT(NOW(), 10),
d6d580ec 127 1) AS inscr_open, e.deadline_inscription,
128 u.nom, u.prenom, u.promo, a.alias,
129 MAX(ep.nb) AS inscrit, MAX(ep.paid) AS paid
130 FROM groupex.evenements AS e
4f10a058 131 INNER JOIN x4dat.auth_user_md5 AS u ON u.user_id = e.organisateur_uid
d6d580ec 132 INNER JOIN x4dat.aliases AS a ON (a.type = 'a_vie' AND a.id = u.user_id)
4f10a058 133 LEFT JOIN groupex.evenements_participants AS ep ON (ep.eid = e.eid AND ep.uid = {?})
f02eefd4 134 WHERE asso_id = {?}
135 AND archive = " . ($archive ? "1 " : "0 ")
3cabafae 136 . (is_member() || may_update() ? "" : " AND accept_nonmembre != 0 ")
137 . "GROUP BY e.eid
cb24457f 138 ORDER BY inscr_open DESC, debut DESC", S::v('uid'), $globals->asso('id'));
4f10a058 139
140 $evts = array();
d6d580ec 141
4f10a058 142 while ($e = $evenements->next()) {
3cabafae 143 $e['show_participants'] = ($e['show_participants'] && (is_member() || may_update()));
08cce2ff 144 $res = XDB::query(
4f10a058 145 "SELECT titre, details, montant, ei.item_id, nb
146 FROM groupex.evenements_items AS ei
147 LEFT JOIN groupex.evenements_participants AS ep
148 ON (ep.eid = ei.eid AND ep.item_id = ei.item_id AND uid = {?})
149 WHERE ei.eid = {?}",
cab08090 150 S::v('uid'), $e['eid']);
d6d580ec 151 $e['moments'] = $res->fetchAllAssoc();
152
153 $e['topay'] = 0;
154 foreach ($e['moments'] as $m) {
155 $e['topay'] += $m['nb'] * $m['montant'];
156 }
157
08cce2ff 158 $query = XDB::query(
4f10a058 159 "SELECT montant
160 FROM {$globals->money->mpay_tprefix}transactions AS t
cab08090 161 WHERE ref = {?} AND uid = {?}", $e['paiement_id'], S::v('uid'));
4f10a058 162 $montants = $query->fetchColumn();
d6d580ec 163
4f10a058 164 foreach ($montants as $m) {
d6d580ec 165 $p = strtr(substr($m, 0, strpos($m, 'EUR')), ',', '.');
4f10a058 166 $e['paid'] += trim($p);
167 }
d6d580ec 168
1f5b0b59 169 if (Env::has('updated') && $e['eid'] == Env::i('updated')) {
170 $page->assign('updated', $e);
171 }
4f10a058 172 $evts[] = $e;
173 }
1f5b0b59 174
4f10a058 175 $page->assign('evenements', $evts);
176 $page->assign('is_member', is_member());
177 }
178
d6d580ec 179 function handler_sub(&$page, $eid = null)
180 {
352fb101 181 require_once dirname(__FILE__).'/xnetevents/xnetevents.inc.php';
d6d580ec 182
3cabafae 183 new_group_open_page('xnetevents/subscribe.tpl');
d6d580ec 184
185 $evt = get_event_detail($eid);
186 if (!$evt) {
187 return PL_NOT_FOUND;
188 }
189
190 if (!$evt['inscr_open']) {
191 $page->kill('Les inscriptions pour cet événement sont closes');
192 }
3cabafae 193 if (!$evt['accept_nonmembre'] && !is_member() && !may_update()) {
194 $page->kill('Cet événement est fermé aux non-membres du groupe');
195 }
d6d580ec 196
197 $page->assign('event', $evt);
198
199 if (!Post::has('submit')) {
200 return;
201 }
202
5e2307dc 203 $moments = Post::v('moment', array());
204 $pers = Post::v('personnes', array());
d6d580ec 205 $subs = array();
206
207 foreach ($moments as $j => $v) {
208 $subs[$j] = intval($v);
209
210 // retreive ohter field when more than one person
211 if ($subs[$j] == 2) {
212 if (!isset($pers[$j]) || !is_numeric($pers[$j])
213 || $pers[$j] < 0)
214 {
215 $page->trig('Tu dois choisir un nombre d\'invités correct !');
216 return;
217 }
218 $subs[$j] = 1 + $pers[$j];
219 }
220 }
221
222 // impossible to unsubscribe if you already paid sthing
223 if (array_sum($subs) && $evt['paid'] != 0) {
224 $page->trig("Impossible de te désinscrire complčtement ".
225 "parce que tu as fait un paiement par ".
226 "chčque ou par liquide. Contacte un ".
227 "administrateur du groupe si tu es sűr de ".
228 "ne pas venir");
229 return;
230 }
231
232 // update actual inscriptions
1f5b0b59 233 $updated = false;
d6d580ec 234 foreach ($subs as $j => $nb) {
235 if ($nb > 0) {
08cce2ff 236 XDB::execute(
d6d580ec 237 "REPLACE INTO groupex.evenements_participants
238 VALUES ({?}, {?}, {?}, {?}, {?})",
cab08090 239 $eid, S::v('uid'), $j, $nb, $evt['paid']);
1f5b0b59 240 $updated = $eid;
d6d580ec 241 } else {
08cce2ff 242 XDB::execute(
d6d580ec 243 "DELETE FROM groupex.evenements_participants
244 WHERE eid = {?} AND uid = {?} AND item_id = {?}",
cab08090 245 $eid, S::v("uid"), $j);
1f5b0b59 246 $updated = $eid;
d6d580ec 247 }
248 }
1f5b0b59 249 if ($updated !== false) {
250 pl_redirect('events?updated='.$updated);
251 }
d6d580ec 252 $page->assign('event', get_event_detail($eid));
253 }
254
4f10a058 255 function handler_csv(&$page, $eid = null, $item_id = null)
256 {
352fb101 257 require_once dirname(__FILE__).'/xnetevents/xnetevents.inc.php';
4f10a058 258
bd46a8e4 259 if (!is_numeric($item_id)) {
260 $item_id = null;
261 }
262
4f10a058 263 $evt = get_event_detail($eid, $item_id);
264 if (!$evt) {
265 return PL_NOT_FOUND;
266 }
267
dba106f6 268 header('Content-type: text/x-csv; encoding=iso-8859-1');
4f10a058 269 header('Pragma: ');
270 header('Cache-Control: ');
271
801fcad8 272 $page->changeTpl('xnetevents/csv.tpl', NO_SKIN);
4f10a058 273
274 $admin = may_update();
275
5e2307dc 276 $tri = (Env::v('order') == 'alpha' ? 'promo, nom, prenom' : 'nom, prenom, promo');
4f10a058 277
ed21e24a 278 $page->assign('participants',
279 get_event_participants($evt, $item_id, $tri));
4f10a058 280
4f10a058 281 $page->assign('admin', $admin);
282 $page->assign('moments', $evt['moments']);
283 $page->assign('money', $evt['money']);
5e2307dc 284 $page->assign('tout', !Env::v('item_id', false));
4f10a058 285 }
bd46a8e4 286
11d8a183 287 function handler_ical(&$page, $eid = null)
288 {
289 global $globals;
290
291 require_once dirname(__FILE__).'/xnetevents/xnetevents.inc.php';
292 $evt = get_event_detail($eid);
293 if (!$evt) {
294 return PL_NOT_FOUND;
295 }
296 $evt['debut'] = preg_replace('/(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)/', "\\1\\2\\3T\\4\\5\\6", $evt['debut']);
297 $evt['fin'] = preg_replace('/(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)/', "\\1\\2\\3T\\4\\5\\6", $evt['fin']);
298
99544d53 299 foreach ($evt['moments'] as $m) {
300 $evt['descriptif'] .= "\n\n** " . $m['titre'] . " **\n" . $m['details'];
301 }
302
11d8a183 303 $page->changeTpl('xnetevents/calendar.tpl', NO_SKIN);
304
99544d53 305 require_once('ical.inc.php');
11d8a183 306 $page->assign('asso', $globals->asso());
307 $page->assign('timestamp', time());
99544d53 308 $page->assign('admin', may_update());
309
310 if (may_update()) {
311 $page->assign('participants', get_event_participants($evt, null, 'promo, nom, prenom'));
312 }
11d8a183 313 $page->register_function('display_ical', 'display_ical');
314 $page->assign_by_ref('e', $evt);
315
316 header('Content-Type: text/calendar; charset=utf-8');
317 }
318
bd46a8e4 319 function handler_edit(&$page, $eid = null)
320 {
321 global $globals;
322
5cbb1fad 323 // get eid if the the given one is a short name
324 if (!is_null($eid) && !is_numeric($eid)) {
325 $res = XDB::query("SELECT eid
326 FROM groupex.evenements
327 WHERE asso_id = {?} AND short_name = {?}",
328 $globals->asso('id'), $eid);
329 if ($res->numRows()) {
330 $eid = (int)$res->fetchOneCell();
331 }
332 }
333
5070a22d 334 // check the event is in our group
bd46a8e4 335 if (!is_null($eid)) {
08cce2ff 336 $res = XDB::query("SELECT short_name, asso_id
5cbb1fad 337 FROM groupex.evenements
338 WHERE eid = {?}", $eid);
bd46a8e4 339 $infos = $res->fetchOneAssoc();
340 if ($infos['asso_id'] != $globals->asso('id')) {
341 return PL_NOT_ALLOWED;
342 }
343 }
344
5070a22d 345 new_groupadmin_page('xnetevents/edit.tpl');
bd46a8e4 346
5070a22d 347 $moments = range(1, 4);
348 $page->assign('moments', $moments);
bd46a8e4 349
5e2307dc 350 if (Post::v('intitule')) {
5070a22d 351 require_once dirname(__FILE__).'/xnetevents/xnetevents.inc.php';
352 $short_name = event_change_shortname($page, $infos['short_name'],
5e2307dc 353 Env::v('short_name', ''));
5070a22d 354
355 $evt = array(
356 'eid' => $eid,
357 'asso_id' => $globals->asso('id'),
5e2307dc 358 'paiement_id' => Post::v('paiement_id') > 0 ? Post::v('paiement_id') : null,
359 'debut' => Post::v('deb_Year').'-'.Post::v('deb_Month')
360 .'-'.Post::v('deb_Day').' '.Post::v('deb_Hour')
361 .':'.Post::v('deb_Minute').':00',
362 'fin' => Post::v('fin_Year').'-'.Post::v('fin_Month')
363 .'-'.Post::v('fin_Day').' '.Post::v('fin_Hour')
364 .':'.Post::v('fin_Minute').':00',
5070a22d 365 'short_name' => $short_name,
366 );
367
368 $trivial = array('intitule', 'descriptif', 'noinvite',
25412aa4 369 'show_participants', 'accept_nonmembre', 'organisateur_uid');
5070a22d 370 foreach ($trivial as $k) {
5e2307dc 371 $evt[$k] = Post::v($k);
bd46a8e4 372 }
25412aa4 373 if (!$eid) {
374 $evt['organisateur_uid'] = S::v('uid');
375 }
bd46a8e4 376
5e2307dc 377 if (Post::v('deadline')) {
378 $evt['deadline_inscription'] = Post::v('inscr_Year').'-'
379 . Post::v('inscr_Month').'-'
380 . Post::v('inscr_Day');
5070a22d 381 } else {
382 $evt['deadline_inscription'] = null;
9ece1588 383 }
bd46a8e4 384
385 // Store the modifications in the database
08cce2ff 386 XDB::execute('REPLACE INTO groupex.evenements
bd46a8e4 387 SET eid={?}, asso_id={?}, organisateur_uid={?}, intitule={?},
5070a22d 388 paiement_id = {?}, descriptif = {?}, debut = {?},
389 fin = {?}, show_participants = {?}, short_name = {?},
3cabafae 390 deadline_inscription = {?}, noinvite = {?},
391 accept_nonmembre = {?}',
5070a22d 392 $evt['eid'], $evt['asso_id'], $evt['organisateur_uid'],
393 $evt['intitule'], $evt['paiement_id'], $evt['descriptif'],
394 $evt['debut'], $evt['fin'], $evt['show_participants'],
395 $evt['short_name'], $evt['deadline_inscription'],
3cabafae 396 $evt['noinvite'], $evt['accept_nonmembre']);
bd46a8e4 397
398 // if new event, get its id
399 if (!$eid) {
5070a22d 400 $eid = mysql_insert_id();
bd46a8e4 401 }
402
5070a22d 403 $nb_moments = 0;
bd46a8e4 404 $money_defaut = 0;
405
406 foreach ($moments as $i) {
5e2307dc 407 if (Post::v('titre'.$i)) {
bd46a8e4 408 $nb_moments++;
5070a22d 409
5e2307dc 410 $montant = strtr(Post::v('montant'.$i), ',', '.');
5070a22d 411 $money_defaut += (float)$montant;
08cce2ff 412 XDB::execute("
bd46a8e4 413 REPLACE INTO groupex.evenements_items
414 VALUES ({?}, {?}, {?}, {?}, {?})",
5e2307dc 415 $eid, $i, Post::v('titre'.$i),
416 Post::v('details'.$i), $montant);
bd46a8e4 417 } else {
08cce2ff 418 XDB::execute("DELETE FROM groupex.evenements_items
bd46a8e4 419 WHERE eid = {?} AND item_id = {?}", $eid, $i);
420 }
421 }
422
423 // request for a new payment
5e2307dc 424 if (Post::v('paiement_id') == -1 && $money_defaut >= 0) {
bd46a8e4 425 require_once 'validations.inc.php';
cab08090 426 $p = new PayReq(S::v('uid'),
5e2307dc 427 Post::v('intitule')." - ".$globals->asso('nom'),
428 Post::v('site'), $money_defaut,
429 Post::v('confirmation'), 0, 999,
bd46a8e4 430 $globals->asso('id'), $eid);
431 $p->submit();
432 }
433
434 // events with no sub-event: add a sub-event with no name
435 if ($nb_moments == 0) {
08cce2ff 436 XDB::execute("INSERT INTO groupex.evenements_items
bd46a8e4 437 VALUES ({?}, {?}, '', '', 0)", $eid, 1);
438 }
bd46a8e4 439
14224ff0 440 pl_redirect('events');
bd46a8e4 441 }
442
443 // get a list of all the payment for this asso
08cce2ff 444 $res = XDB::iterator("SELECT id, text
5cbb1fad 445 FROM {$globals->money->mpay_tprefix}paiements
446 WHERE asso_id = {?}", $globals->asso('id'));
bd46a8e4 447 $paiements = array();
448 while ($a = $res->next()) $paiements[$a['id']] = $a['text']; {
449 $page->assign('paiements', $paiements);
450 }
451
452 // when modifying an old event retreive the old datas
453 if ($eid) {
08cce2ff 454 $res = XDB::query(
25412aa4 455 "SELECT eid, intitule, descriptif, debut, fin, organisateur_uid,
456 show_participants, paiement_id, short_name,
457 deadline_inscription, noinvite, accept_nonmembre
bd46a8e4 458 FROM groupex.evenements
459 WHERE eid = {?}", $eid);
460 $evt = $res->fetchOneAssoc();
461 // find out if there is already a request for a payment for this event
462 require_once 'validations.inc.php';
08cce2ff 463 $res = XDB::query("SELECT stamp FROM requests
5cbb1fad 464 WHERE type = 'paiements' AND data LIKE {?}",
465 PayReq::same_event($eid, $globals->asso('id')));
bd46a8e4 466 $stamp = $res->fetchOneCell();
467 if ($stamp) {
468 $evt['paiement_id'] = -2;
469 $evt['paiement_req'] = $stamp;
470 }
471 $page->assign('evt', $evt);
472 // get all the different moments infos
08cce2ff 473 $res = XDB::iterator(
bd46a8e4 474 "SELECT item_id, titre, details, montant
475 FROM groupex.evenements_items AS ei
476 INNER JOIN groupex.evenements AS e ON(e.eid = ei.eid)
477 WHERE e.eid = {?}
478 ORDER BY item_id", $eid);
479 $items = array();
480 while ($item = $res->next()) {
481 $items[$item['item_id']] = $item;
482 }
483 $page->assign('items', $items);
484 }
5cbb1fad 485 $page->assign('url_ref', $eid);
bd46a8e4 486 }
487
488 function handler_admin(&$page, $eid = null, $item_id = null)
489 {
490 global $globals;
491
352fb101 492 require_once dirname(__FILE__).'/xnetevents/xnetevents.inc.php';
bd46a8e4 493
494 $evt = get_event_detail($eid, $item_id);
bd46a8e4 495 if (!$evt) {
496 return PL_NOT_FOUND;
497 }
498
499 if ($evt['show_participants']) {
ed21e24a 500 new_group_page('xnetevents/admin.tpl');
bd46a8e4 501 } else {
ed21e24a 502 new_groupadmin_page('xnetevents/admin.tpl');
bd46a8e4 503 }
504
5e2307dc 505 if (may_update() && Post::v('adm')) {
506 $member = get_infos(Post::v('mail'));
ed21e24a 507 if (!$member) {
508 $page->trig("Membre introuvable");
bd46a8e4 509 }
bd46a8e4 510
ed21e24a 511 // change the price paid by a participant
5e2307dc 512 if (Env::v('adm') == 'prix' && $member) {
08cce2ff 513 XDB::execute("UPDATE groupex.evenements_participants
dc2073c3 514 SET paid = IF(paid + {?} > 0, paid + {?}, 0)
515 WHERE uid = {?} AND eid = {?}",
5e2307dc 516 strtr(Env::v('montant'), ',', '.'),
517 strtr(Env::v('montant'), ',', '.'),
dc2073c3 518 $member['uid'], $evt['eid']);
ed21e24a 519 }
bd46a8e4 520
ed21e24a 521 // change the number of personns coming with a participant
5e2307dc 522 if (Env::v('adm') == 'nbs' && $member) {
08cce2ff 523 $res = XDB::query("SELECT paid
dc2073c3 524 FROM groupex.evenements_participants
525 WHERE uid = {?} AND eid = {?}",
526 $member['uid'], $evt['eid']);
ed21e24a 527
528 $paid = intval($res->fetchOneCell());
5e2307dc 529 $nbs = Post::v('nb', array());
ed21e24a 530
531 foreach ($nbs as $id => $nb) {
5070a22d 532 $nb = max(intval($nb), 0);
ed21e24a 533
534 if ($nb) {
08cce2ff 535 XDB::execute("REPLACE INTO groupex.evenements_participants
dc2073c3 536 VALUES ({?}, {?}, {?}, {?}, {?})",
537 $evt['eid'], $member['uid'], $id, $nb, $paid);
ed21e24a 538 } else {
08cce2ff 539 XDB::execute("DELETE FROM groupex.evenements_participants
dc2073c3 540 WHERE uid = {?} AND eid = {?} AND item_id = {?}",
541 $member['uid'], $evt['eid'], $id);
ed21e24a 542 }
bd46a8e4 543 }
ed21e24a 544
dc2073c3 545 $res = XDB::query("SELECT uid
546 FROM groupex.evenements_participants
547 WHERE uid = {?} AND eid = {?}",
548 $member['uid'], $evt['eid']);
bd46a8e4 549 $u = $res->fetchOneCell();
ed21e24a 550 subscribe_lists_event($u, $member['uid'], $evt);
bd46a8e4 551 }
ed21e24a 552
bd46a8e4 553 $evt = get_event_detail($eid, $item_id);
554 }
555
ed21e24a 556 $page->assign('admin', may_update());
bd46a8e4 557 $page->assign('evt', $evt);
1f3362a3 558 $page->assign('tout', is_null($item_id));
bd46a8e4 559
ed21e24a 560 if (count($evt['moments'])) {
561 $page->assign('moments', $evt['moments']);
562 }
bd46a8e4 563
5e2307dc 564 $tri = (Env::v('order') == 'alpha' ? 'promo, nom, prenom' : 'nom, prenom, promo');
1f3362a3 565 $whereitemid = is_null($item_id) ? '' : "AND ep.item_id = $item_id";
08cce2ff 566 $res = XDB::iterRow(
ed21e24a 567 'SELECT UPPER(SUBSTRING(IF(u.nom IS NULL, m.nom,
568 IF(u.nom_usage<>"", u.nom_usage, u.nom)), 1, 1)),
569 COUNT(DISTINCT ep.uid)
bd46a8e4 570 FROM groupex.evenements_participants AS ep
571 INNER JOIN groupex.evenements AS e ON (ep.eid = e.eid)
572 LEFT JOIN groupex.membres AS m ON ( ep.uid = m.uid AND e.asso_id = m.asso_id)
573 LEFT JOIN auth_user_md5 AS u ON ( u.user_id = ep.uid )
574 WHERE ep.eid = {?} '.$whereitemid.'
dc2073c3 575 GROUP BY UPPER(SUBSTRING(IF(u.nom IS NULL,m.nom,u.nom), 1, 1))', $evt['eid']);
bd46a8e4 576
577 $alphabet = array();
578 $nb_tot = 0;
579 while (list($char, $nb) = $res->next()) {
580 $alphabet[ord($char)] = $char;
581 $nb_tot += $nb;
5e2307dc 582 if (Env::has('initiale') && $char == strtoupper(Env::v('initiale'))) {
bd46a8e4 583 $tot = $nb;
584 }
585 }
586 ksort($alphabet);
587 $page->assign('alphabet', $alphabet);
588
5e2307dc 589 $ofs = Env::i('offset');
590 $tot = Env::v('initiale') ? $tot : $nb_tot;
bd46a8e4 591 $nbp = intval(($tot-1)/NB_PER_PAGE);
592 $links = array();
593 if ($ofs) {
594 $links['précédent'] = $ofs-1;
595 }
596 for ($i = 0; $i <= $nbp; $i++) {
597 $links[(string)($i+1)] = $i;
598 }
599 if ($ofs < $nbp) {
600 $links['suivant'] = $ofs+1;
601 }
602 if (count($links)>1) {
603 $page->assign('links', $links);
604 }
605
bd46a8e4 606 if ($evt['paiement_id']) {
08cce2ff 607 $res = XDB::iterator(
bd46a8e4 608 "SELECT IF(u.nom_usage<>'', u.nom_usage, u.nom) AS nom, u.prenom,
609 u.promo, a.alias AS email, t.montant
610 FROM {$globals->money->mpay_tprefix}transactions AS t
dc2073c3 611 INNER JOIN auth_user_md5 AS u ON(t.uid = u.user_id)
612 INNER JOIN aliases AS a ON (a.id = t.uid AND a.type='a_vie' )
613 LEFT JOIN groupex.evenements_participants AS ep ON(ep.uid = t.uid AND ep.eid = {?})
bd46a8e4 614 WHERE t.ref = {?} AND ep.uid IS NULL",
615 $evt['eid'], $evt['paiement_id']);
ed21e24a 616 $page->assign('oublis', $res->total());
617 $page->assign('oubliinscription', $res);
bd46a8e4 618 }
619
ed21e24a 620 $page->assign('participants',
621 get_event_participants($evt, $item_id, $tri,
622 "LIMIT ".($ofs*NB_PER_PAGE).", ".NB_PER_PAGE));
bd46a8e4 623 }
4f10a058 624}
625
626?>