modifications et ameliorations des evenements
[platal.git] / htdocs.net / groupe / evt-admin.php
1 <?php
2 require 'xnet.inc.php';
3
4 define('NB_PER_PAGE', 25);
5
6 require_once('xnet/evenements.php');
7
8 $evt = get_event_detail(Env::get('eid'), Env::get('item_id'));
9
10 // the event doesn't exist or doesn't belong to this assoif (!$evt)
11 if (!$evt)
12 header("Location: evenements.php");
13
14 if ($evt['show_participants'])
15 new_group_page('xnet/groupe/evt-admin.tpl');
16 else
17 new_groupadmin_page('xnet/groupe/evt-admin.tpl');
18
19 $admin = may_update();
20
21 // select a member from his mail
22 if ($admin && Env::get('adm') && Env::get('mail')) {
23 if (strpos(Env::get('mail'), '@') === false)
24 $res = $globals->xdb->query(
25 "SELECT m.uid
26 FROM groupex.membres AS m
27 INNER JOIN aliases AS a ON (a.id = m.uid)
28 WHERE a.alias = {?}",
29 Env::get('mail'));
30 else
31 $res = $globals->xdb->query(
32 "SELECT m.uid
33 FROM groupex.membres AS m
34 WHERE m.email = {?} AND m.asso_id = {?}",
35 Env::get('mail'), $globals->asso('id'));
36 $member = $res->fetchOneCell();
37 if (!$member) $page->trig("Membre introuvable");
38 }
39
40 // change the price paid by a participant
41 if ($admin && Env::get('adm') == 'prix' && $member) {
42 $globals->xdb->execute("UPDATE groupex.evenements_participants SET paid = IF(paid + {?} > 0, paid + {?}, 0) WHERE uid = {?} AND eid = {?}",
43 strtr(Env::get('montant'), ',', '.'),
44 strtr(Env::get('montant'), ',', '.'),
45 $member, Env::get('eid'));
46 }
47
48 // change the number of personns coming with a participant
49 if ($admin && Env::get('adm') == 'nbs' && $member) {
50 $res = $globals->xdb->query("SELECT paid FROM groupex.evenements_participants WHERE uid = {?} AND eid = {?}", $member, Env::get('eid'));
51 $paid = $res->fetchOneCell();
52 $participate = false;
53 foreach ($evt['moments'] as $m) if (Env::has('nb'.$m['item_id'])) {
54 $nb = Env::getInt('nb'.$m['item_id'], 0);
55 if ($nb < 0) $nb = 0;
56 if ($nb) {
57 $participate = true;
58 if (!$paid) $paid = 0;
59 $globals->xdb->execute("REPLACE INTO groupex.evenements_participants VALUES ({?}, {?}, {?}, {?}, {?})",
60 Env::get('eid'), $member, $m['item_id'], $nb, $paid);
61 }
62 else
63 $globals->xdb->execute("DELETE FROM groupex.evenements_participants WHERE uid = {?} AND eid = {?} AND item_id = {?}", $member, Env::get('eid'), $m['item_id']);
64 }
65 if ($participate)
66 subscribe_lists_event(true, $member, $evt['participant_list'], $evt['absent_list']);
67 else {
68 $res = $globals->xdb->query("SELECT uid FROM groupex.evenements_participants WHERE uid = {?} AND eid = {?}", $member, Env::get('eid'));
69 $u = $res->fetchOneCell();
70 subscribe_lists_event($u, $member, $evt['participant_list'], $evt['absent_list']);
71 }
72 $evt = get_event_detail(Env::get('eid'), Env::get('item_id'));
73 }
74
75 $page->assign('admin', $admin);
76 $page->assign('evt', $evt);
77 $page->assign('url_page', Env::get('PHP_SELF')."?eid=".Env::get('eid').(Env::has('item_id')?("&item_id=".Env::getInt('item_id')):''));
78 $page->assign('tout', !Env::has('item_id'));
79
80 if (count($evt['moments']) > 1) $page->assign('moments', $evt['moments']);
81 $page->assign('money', $evt['money']);
82
83 $tri = (Env::get('order') == 'alpha' ? 'promo, nom, prenom' : 'nom, prenom, promo');
84 $whereitemid = Env::has('item_id')?('AND ep.item_id = '.Env::getInt('item_id', 1)):'';
85 $res = $globals->xdb->iterRow(
86 'SELECT UPPER(SUBSTRING(IF(u.nom IS NULL,m.nom,IF(u.nom_usage<>"", u.nom_usage, u.nom)), 1, 1)), COUNT(DISTINCT ep.uid)
87 FROM groupex.evenements_participants AS ep
88 INNER JOIN groupex.evenements AS e ON (ep.eid = e.eid)
89 LEFT JOIN groupex.membres AS m ON ( ep.uid = m.uid AND e.asso_id = m.asso_id)
90 LEFT JOIN auth_user_md5 AS u ON ( u.user_id = ep.uid )
91 WHERE ep.eid = {?} '.$whereitemid.'
92 GROUP BY UPPER(SUBSTRING(IF(u.nom IS NULL,m.nom,u.nom), 1, 1))', Env::get('eid'));
93
94 $alphabet = array();
95 $nb_tot = 0;
96 while (list($char, $nb) = $res->next()) {
97 $alphabet[ord($char)] = $char;
98 $nb_tot += $nb;
99 if (Env::has('initiale') && $char == strtoupper(Env::get('initiale'))) {
100 $tot = $nb;
101 }
102 }
103 ksort($alphabet);
104 $page->assign('alphabet', $alphabet);
105
106 $ofs = Env::getInt('offset');
107 $tot = Env::get('initiale') ? $tot : $nb_tot;
108 $nbp = intval(($tot-1)/NB_PER_PAGE);
109 $links = array();
110 if ($ofs) {
111 $links['précédent'] = $ofs-1;
112 }
113 for ($i = 0; $i <= $nbp; $i++) {
114 $links[(string)($i+1)] = $i;
115 }
116 if ($ofs < $nbp) {
117 $links['suivant'] = $ofs+1;
118 }
119 if (count($links)>1) {
120 $page->assign('links', $links);
121 }
122
123 $ini = Env::has('initiale') ? 'AND IF(u.nom IS NULL,m.nom,IF(u.nom_usage<>"", u.nom_usage, u.nom)) LIKE "'.addslashes(Env::get('initiale')).'%"' : '';
124
125 $participants = get_event_participants(Env::get('eid'), Env::get('item_id'), $ini, $tri, "LIMIT ".($ofs*NB_PER_PAGE).", ".NB_PER_PAGE, $evt['money'] && $admin, $evt['paiement_id']);
126
127 if ($evt['paiement_id']) {
128 $res = $globals->xdb->iterator(
129 "SELECT IF(u.nom_usage<>'', u.nom_usage, u.nom) AS nom, u.prenom,
130 u.promo, a.alias AS email, t.montant
131 FROM {$globals->money->mpay_tprefix}transactions AS t
132 INNER JOIN auth_user_md5 AS u ON(t.uid = u.user_id)
133 INNER JOIN aliases AS a ON (a.id = t.uid AND a.type='a_vie' )
134 LEFT JOIN groupex.evenements_participants AS ep ON(ep.uid = t.uid AND ep.eid = {?})
135 WHERE t.ref = {?} AND ep.uid IS NULL",
136 $evt['eid'], $evt['paiement_id']);
137 $page->assign('oublis', $res->total());
138 $page->assign('oubliinscription', $res);
139 }
140
141
142 $page->assign('participants', $participants);
143
144 $page->run();
145
146 ?>