first reimport from platal
[platal.git] / htdocs.net / groupe / evenements.php
1 <?php
2 require 'xnet.inc.php';
3
4 new_group_page('xnet/groupe/evenements.tpl');
5
6 $page->assign('logged', logged());
7 $page->assign('admin', may_update());
8
9 $moments = range(1, 4);
10 $page->assign('moments', $moments);
11
12 $page->assign('eid', Env::get('eid'));
13
14 if ($eid = Env::get('eid')) {
15 $res = $globals->xdb->query("SELECT asso_id, short_name FROM groupex.evenements WHERE eid = {?}", $eid);
16 $infos = $res->fetchOneAssoc();
17 if ($infos['asso_id'] != $globals->asso('id')) {
18 unset($eid);
19 unset($infos);
20 }
21 }
22
23 if (may_update() && Post::get('intitule')) {
24 $short_name = Env::get('short_name');
25 //Quelques vérifications sur l'alias (caractères spéciaux)
26 if ($short_name && !preg_match( "/^[a-zA-Z0-9\-.]{3,20}$/", $short_name)) {
27 $page->trig("Le raccourci demandé n'est pas valide.
28 Vérifie qu'il comporte entre 3 et 20 caractères
29 et qu'il ne contient que des lettres non accentuées,
30 des chiffres ou les caractères - et .");
31 $short_name = $infos['short_name'];
32 $page->assign('get_form', true);
33 }
34 //vérifier que l'alias n'est pas déja pris
35 if ($short_name && $short_name != $infos['short_name']) {
36 $res = $globals->xdb->query('SELECT COUNT(*) FROM virtual WHERE alias LIKE {?}', $short_name."-%");
37 if ($res->fetchOneCell() > 0) {
38 $page->trig("Le raccourci demandé est déjà utilisé. Choisis en un autre.");
39 $short_name = $infos['short_name'];
40 $page->assign('get_form', true);
41 }
42 }
43 if ($short_name && $infos['short_name'] && $short_name != $infos['short_name']) {
44 $globals->xdb->execute("UPDATE virtual SET alias = REPLACE(alias, {?}, {?}) WHERE type = 'evt' AND alias LIKE {?}",
45 $infos['short_name'], $short_name, $infos['short_name']."-%");
46 } elseif ($short_name && !$infos['short_name']) {
47 $globals->xdb->execute("INSERT INTO virtual SET type = 'evt', alias = {?}", $short_name."-participants@".$globals->xnet->evts_domain);
48 $res = $globals->xdb->query("SELECT LAST_INSERT_ID()");
49 $globals->xdb->execute("INSERT INTO virtual_redirect (
50 SELECT {?} AS vid, IF(u.nom IS NULL, m.email, CONCAT(a.alias, {?})) AS redirect
51 FROM groupex.evenements_participants AS ep
52 LEFT JOIN groupex.membres AS m ON (ep.uid = m.uid)
53 LEFT JOIN auth_user_md5 AS u ON (u.user_id = ep.uid)
54 LEFT JOIN aliases AS a ON (a.id = ep.uid AND a.type = 'a_vie')
55 WHERE ep.eid = {?}
56 GROUP BY ep.uid)",
57 $res->fetchOneCell(), "@".$globals->mail->domain, $eid);
58
59 $globals->xdb->execute("INSERT INTO virtual SET type = 'evt', alias = {?}", $short_name."-absents@".$globals->xnet->evts_domain);
60 $res = $globals->xdb->query("SELECT LAST_INSERT_ID()");
61 $globals->xdb->execute("INSERT INTO virtual_redirect (
62 SELECT {?} AS vid, IF(u.nom IS NULL, m.email, CONCAT(a.alias, {?})) AS redirect
63 FROM groupex.membres AS m
64 LEFT JOIN groupex.evenements_participants AS ep ON (ep.uid = m.uid)
65 LEFT JOIN auth_user_md5 AS u ON (u.user_id = m.uid)
66 LEFT JOIN aliases AS a ON (a.id = m.uid AND a.type = 'a_vie')
67 WHERE m.asso_id = {?} AND ep.uid IS NULL
68 GROUP BY m.uid)",
69 $res->fetchOneCell(), "@".$globals->mail->domain, $globals->asso('id'));
70 } elseif (!$short_name && $infos['short_name']) {
71 $globals->xdb->execute("DELETE virtual, virtual_redirect FROM virtual LEFT JOIN virtual_redirect USING(vid) WHERE virtual.alias LIKE {?}",
72 $infos['short_name']."-%");
73 }
74
75 $globals->xdb->execute("REPLACE INTO groupex.evenements
76 SET eid={?}, asso_id={?}, organisateur_uid={?}, intitule={?},
77 paiement_id = {?}, descriptif = {?},
78 debut = {?}, fin = {?},
79 membres_only = {?}, advertise = {?}, show_participants = {?}, short_name = {?}",
80 $eid, $globals->asso('id'), Session::get('uid'), Post::get('intitule'),
81 (Post::get('paiement')>0)?Post::get('paiement'):NULL, Post::get('descriptif'),
82 Post::get('deb_Year')."-".Post::get('deb_Month')."-".Post::get('deb_Day')." ".Post::get('deb_Hour').":".Post::get('deb_Minute').":00",
83 Post::get('fin_Year')."-".Post::get('fin_Month')."-".Post::get('fin_Day')." ".Post::get('fin_Hour').":".Post::get('fin_Minute').":00",
84 Post::get('membres_only'), Post::get('advertise'), Post::get('show_participants'), $short_name, $eid);
85
86 if (!$eid) {
87 $res = $globals->xdb->query("SELECT LAST_INSERT_ID()");
88 $eid = $res->fetchOneCell();
89 }
90 $nb_moments = 0;
91 $money_defaut = 0;
92 foreach ($moments as $i) if (Post::get('titre'.$i)) {
93 $nb_moments++;
94 if (!($money_defaut > 0)) $money_defaut = strtr(Post::get('montant'.$i), ',', '.');
95 $globals->xdb->execute("
96 REPLACE INTO groupex.evenements_items VALUES (
97 {?}, {?},
98 {?}, {?}, {?})",
99 $eid, $i,
100 Post::get('titre'.$i), Post::get('details'.$i), strtr(Post::get('montant'.$i), ',', '.'));
101 } else {
102 $globals->xdb->execute("DELETE FROM groupex.evenements_items WHERE eid = {?} AND item_id = {?}", $eid, $i);
103 }
104
105 // request for a new payment
106 if (Post::get('paiement') == -1 && $money_defaut >= 0) {
107 require_once ('validations.inc.php');
108 $p = new PayReq(Session::get('uid'), Post::get('intitule')." - ".$globals->asso('nom'), Post::get('site'), $money_defaut, Post::get('confirmation'),0, 999, $globals->asso('id'), $eid);
109 $p->submit();
110 }
111
112 // events with no sub-event
113 if ($nb_moments == 0)
114 $globals->xdb->execute("INSERT INTO groupex.evenements_items VALUES ({?}, {?}, '', '', 0)", $eid, 1);
115 }
116
117 if (may_update() && Env::has('sup') && $eid) {
118 // deletes the event
119 $globals->xdb->execute("DELETE FROM groupex.evenements WHERE eid = {?} AND asso_id = {?}", $eid, $globals->asso('id'));
120 // deletes the event items
121 $globals->xdb->execute("DELETE FROM groupex.evenements_items WHERE eid = {?}", $eid);
122 // deletes the event participants
123 $globals->xdb->execute("DELETE FROM groupex.evenements_participants WHERE eid = {?}", $eid);
124 // deletes the event mailing aliases
125 if ($infos['short_name'])
126 $globals->xdb->execute("DELETE FROM virtual WHERE type = 'evt' AND alias LIKE {?}", $infos['short_name']."-%");
127 }
128
129 if (may_update() && (Env::has('add') || (Env::has('mod') && $eid))) {
130 $page->assign('get_form', true);
131 $res = $globals->xdb->iterator
132 ("SELECT id, text FROM {$globals->money->mpay_tprefix}paiements WHERE asso_id = {?}", $globals->asso('id'));
133 $paiements = array();
134 while ($a = $res->next()) $paiements[$a['id']] = $a['text'];
135 $page->assign('paiements', $paiements);
136 }
137
138 if ($eid) {
139 $res = $globals->xdb->query(
140 "SELECT eid, intitule, descriptif, debut, fin, membres_only, advertise, show_participants, paiement_id, short_name
141 FROM groupex.evenements
142 WHERE eid = {?}", $eid);
143 $evt = $res->fetchOneAssoc();
144 $page->assign('evt', $evt);
145 }
146
147 if (may_update() && Env::has('mod') && $eid) {
148 $res = $globals->xdb->iterator(
149 "SELECT item_id, titre, details, montant
150 FROM groupex.evenements_items AS ei
151 INNER JOIN groupex.evenements AS e ON(e.eid = ei.eid)
152 WHERE e.eid = {?}
153 ORDER BY item_id", $eid);
154 $items = array();
155 while ($item = $res->next()) $items[$item['item_id']] = $item;
156 $page->assign('items', $items);
157 } else {
158
159 $evenements = $globals->xdb->iterator(
160 "SELECT e.eid, e.intitule, e.descriptif, e.debut, e.fin, e.show_participants, u.nom, u.prenom, u.promo, a.alias, MAX(ep.nb)>=1 AS inscrit,
161 e.short_name
162 FROM groupex.evenements AS e
163 INNER JOIN x4dat.auth_user_md5 AS u ON u.user_id = e.organisateur_uid
164 LEFT JOIN x4dat.aliases AS a ON (a.type = 'a_vie' AND a.id = u.user_id)
165 LEFT JOIN groupex.evenements_participants AS ep ON (ep.eid = e.eid AND ep.uid = {?})
166 WHERE asso_id = {?}
167 GROUP BY e.eid
168 ORDER BY debut",Session::get('uid'),$globals->asso('id'));
169
170 $page->assign('evenements', $evenements);
171
172 $page->assign('nb_evt', $evenements->total());
173 }
174
175 $page->run();
176
177 ?>