{?},
{?}, {?}, {?})",
$eid, $globals->asso('id'), Session::get('uid'), Post::get('intitule'),
- NULL, Post::get('descriptif'),
+ Post::get('paiement')?Post::get('paiement'):NULL, Post::get('descriptif'),
Post::get('deb_Year')."-".Post::get('deb_Month')."-".Post::get('deb_Day')." ".Post::get('deb_Hour').":".Post::get('deb_Minute').":00",
Post::get('fin_Year')."-".Post::get('fin_Month')."-".Post::get('fin_Day')." ".Post::get('fin_Hour').":".Post::get('fin_Minute').":00",
Post::get('membres_only'), Post::get('advertise'), Post::get('show_participants'));
$globals->xdb->execute("DELETE FROM groupex.evenements_participants WHERE eid = {?}", $eid);
}
-if (may_update() && Env::has('add'))
+if (may_update() && (Env::has('add') || (Env::has('mod') && $eid))) {
$page->assign('get_form', true);
+ $res = $globals->xdb->iterator
+ ("SELECT id, text FROM {$globals->money->mpay_tprefix}paiements WHERE asso_id = {?}", $globals->asso('id'));
+ $paiements = array();
+ while ($a = $res->next()) $paiements[$a['id']] = $a['text'];
+ $page->assign('paiements', $paiements);
+}
if (may_update() && Env::has('mod') && $eid) {
$res = $globals->xdb->query(
- "SELECT eid, intitule, descriptif, debut, fin, membres_only, advertise, show_participants
+ "SELECT eid, intitule, descriptif, debut, fin, membres_only, advertise, show_participants, paiement_id
FROM groupex.evenements
WHERE eid = {?}", $eid);
$evt = $res->fetchOneAssoc();
$items = array();
while ($item = $res->next()) $items[$item['item_id']] = $item;
$page->assign('items', $items);
-
- $page->assign('get_form', true);
} else {
$evenements = $globals->xdb->iterator(
define('NB_PER_PAGE', 25);
+// check this event is from this asso
+if (Env::get('eid')) {
+ $res = $globals->xdb->query("SELECT eid FROM groupex.evenements WHERE eid = {?} AND asso_id = {?}", Env::get('eid'), $globals->asso('id'));
+ $eid = $res->fetchOneCell();
+}
+
+$res = $globals->xdb->iterator(
+ "SELECT eid, item_id, titre, montant
+ FROM groupex.evenements_items
+ WHERE eid = {?}",
+ $eid);
+$moments = array();
+while ($m = $res->next()) $moments[$m['item_id']] = $m;
+
+if (may_update() && Env::get('adm') && Env::get('mail') && $eid) {
+ if (strpos(Env::get('mail'), '@') === false)
+ $res = $globals->xdb->query(
+ "SELECT m.uid
+ FROM groupex.membres AS m
+ INNER JOIN aliases AS a ON (a.id = m.uid)
+ WHERE a.alias = {?}",
+ Env::get('mail'));
+ else
+ $res = $globals->xdb->query(
+ "SELECT m.uid
+ FROM groupex.membres AS m
+ WHERE m.email = {?} AND m.asso_id = {?}",
+ Env::get('mail'), $globals->asso('id'));
+ $member = $res->fetchOneCell();
+}
+
+if (may_update() && Env::get('adm') == 'prix' && $member && $eid) {
+ $globals->xdb->execute("UPDATE groupex.evenements_participants SET paid = IF(paid + {?} > 0, paid + {?}, 0) WHERE uid = {?} AND eid = {?}",
+ strtr(Env::get('montant'), ',', '.'),
+ strtr(Env::get('montant'), ',', '.'),
+ $member, $eid);
+}
+
+if (may_update() && Env::get('adm') == 'nbs' && $member && $eid) {
+ $res = $globals->xdb->query("SELECT paid FROM groupex.evenements_participants WHERE uid = {?} AND eid = {?}", $member, $eid);
+ $paid = $res->fetchOneCell();
+ foreach ($moments as $m) if (Env::has('nb'.$m['item_id'])) {
+ print_r($m);
+ $nb = Env::getInt('nb'.$m['item_id'], 0);
+ if ($nb < 0) $nb = 0;
+ if ($nb) {
+ if (!$paid) $paid = 0;
+ $globals->xdb->execute("REPLACE INTO groupex.evenements_participants VALUES ({?}, {?}, {?}, {?}, {?})",
+ $eid, $member, $m['item_id'], $nb, $paid);
+ }
+ else
+ $globals->xdb->execute("DELETE FROM groupex.evenements_participants WHERE uid = {?} AND eid = {?} AND item_id = {?}", $member, $eid, $m['item_id']);
+ }
+}
+
$res = $globals->xdb->query(
- "SELECT SUM(nb) AS nb_tot, e.intitule, ei.titre, e.show_participants
+ "SELECT SUM(nb) AS nb_tot, e.intitule, ei.titre, e.show_participants, e.paiement_id
FROM groupex.evenements AS e
INNER JOIN groupex.evenements_items AS ei ON (e.eid = ei.eid)
LEFT JOIN groupex.evenements_participants AS ep ON(e.eid = ep.eid AND ei.item_id = ep.item_id)
- WHERE e.eid = {?} AND ei.item_id = {?} AND asso_id = {?}
- GROUP BY e.eid",
- Env::get('eid'), Env::getInt('item_id', 1), $globals->asso('id'));
+ WHERE e.eid = {?} AND ei.item_id = {?}
+ GROUP BY ei.item_id",
+ $eid, Env::getInt('item_id', 1));
$evt = $res->fetchOneAssoc();
+
+if (!Env::has('item_id')) {
+ $res = $globals->xdb->query("SELECT MAX(nb)
+ FROM groupex.evenements AS e
+ INNER JOIN groupex.evenements_items AS ei ON (e.eid = ei.eid)
+ LEFT JOIN groupex.evenements_participants AS ep ON(e.eid = ep.eid AND ei.item_id = ep.item_id)
+ WHERE e.eid = {?}
+ GROUP BY ep.uid",
+ $eid);
+ $evt['nb_tot'] = array_sum($res->fetchColumn());
+ $evt['titre'] = '';
+ $evt['item_id'] = 0;
+}
+
if (!$evt['intitule'])
header("Location: evenements.php");
else
new_groupadmin_page('xnet/groupe/evt-admin.tpl');
+$page->assign('admin', may_update());
$page->assign('evt', $evt);
-$page->assign('url_page', Env::get('PHP_SELF')."?eid=".Env::get('eid')."&item_id=".Env::getInt('item_id', 1));
+$page->assign('url_page', Env::get('PHP_SELF')."?eid=".$eid.(Env::has('item_id')?("&item_id=".Env::getInt('item_id')):''));
+$page->assign('tout', !Env::has('item_id'));
-$res = $globals->xdb->iterator(
- "SELECT eid, item_id, titre
- FROM groupex.evenements_items
- WHERE eid = {?}",
- Env::get('eid'));
-if ($res->total() > 1) $page->assign('moments', $res);
+if (count($moments) > 1) $page->assign('moments', $moments);
+foreach ($moments as $m) if ($m['montant'] > 0) $money = true;
+if ($money) $page->assign('money', true);
$tri = (Env::get('order') == 'alpha' ? 'promo, nom, prenom' : 'nom, prenom, promo');
+$whereitemid = Env::has('item_id')?('AND ep.item_id = '.Env::getInt('item_id', 1)):'';
$res = $globals->xdb->iterRow(
'SELECT UPPER(SUBSTRING(IF(m.origine="X",IF(u.nom_usage<>"", u.nom_usage, u.nom),m.nom), 1, 1)), COUNT(IF(m.origine="X",u.nom,m.nom))
FROM groupex.evenements_participants AS ep
INNER JOIN groupex.evenements AS e ON (ep.eid = e.eid)
INNER JOIN groupex.membres AS m ON ( ep.uid = m.uid AND e.asso_id = m.asso_id)
LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid )
- WHERE e.asso_id = {?} AND ep.eid = {?} AND ep.item_id = {?}
- GROUP BY UPPER(SUBSTRING(IF(m.origine="X",u.nom,m.nom), 1, 1))', $globals->asso('id'), Env::get('eid'), Env::getInt('moment', 1));
+ WHERE ep.eid = {?} '.$whereitemid.'
+ GROUP BY UPPER(SUBSTRING(IF(m.origine="X",u.nom,m.nom), 1, 1))', $eid);
$alphabet = array();
$nb_tot = 0;
IF(m.origine='X',FIND_IN_SET('femme', u.flags),0) AS femme,
m.perms='admin' AS admin,
m.origine='X' AS x,
- ep.nb
+ m.uid,
+ ep.nb, ep.item_id, ep.paid
FROM groupex.evenements_participants AS ep
INNER JOIN groupex.evenements AS e ON (ep.eid = e.eid)
INNER JOIN groupex.membres AS m ON ( ep.uid = m.uid AND e.asso_id = m.asso_id)
LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid )
LEFT JOIN aliases AS a ON ( a.id = m.uid AND a.type='a_vie' )
- WHERE e.asso_id = {?} AND ep.eid = {?} AND ep.item_id = {?} $ini
+ WHERE ep.eid = {?} $whereitemid $ini
ORDER BY $tri
LIMIT {?}, {?}",
- $globals->asso('id'), Env::get('eid'), Env::getInt('item_id', 1),
+ $eid,
$ofs*NB_PER_PAGE, NB_PER_PAGE);
+$tab = array();
+$user = 0;
+while ($a = $ann->next()) {
+ if ($user != $a['uid']) {
+ if ($user) $tab[] = $u;
+ $u = $a;
+ $user = $a['uid'];
+ $u['montant'] = 0;
+ if ($money && $evt['paiement_id'] && may_update() && !Env::has('item_id')) {
+ $res = $globals->xdb->query(
+ "SELECT montant
+ FROM {$globals->money->mpay_tprefix}transactions AS t
+ WHERE ref = {?} AND uid = {?}",
+ $evt['paiement_id'], $user);
+ $montants = $res->fetchColumn();
+ foreach ($montants as $m) {
+ $p = strtr(substr($m, 0, strpos($m, "EUR")), ",", ".");
+ $u['paid'] += trim($p);
+ }
+ }
+ }
+ $u[$a['item_id']] = $a['nb'];
+ $u['montant'] += $moments[$a['item_id']]['montant']*$a['nb'];
+}
+if ($user) $tab[] = $u;
-$page->assign('ann', $ann);
+$page->assign('ann', $tab);
$page->run();
{if $moments}
<p class="center">
-{iterate from=$moments item=m}
-[<a href="{$smarty.server.PHP_SELF}?eid={$m.eid}&item_id={$m.item_id}" {if $smarty.request.item_id eq $m.item_id || ($m.item_id eq 1 && !$smarty.request.item_id)}class="erreur"{/if}>{$m.titre}</a>]
-{/iterate}
+[<a href="{$smarty.server.PHP_SELF}?eid={$smarty.request.eid}"{if !$smarty.request.item_id}class="erreur"{/if}>tout</a>]
+{foreach from=$moments item=m}
+[<a href="{$smarty.server.PHP_SELF}?eid={$m.eid}&item_id={$m.item_id}" {if $smarty.request.item_id eq $m.item_id}class="erreur"{/if}>{$m.titre}</a>]
+{/foreach}
</p>
{/if}
{/foreach}
</p>
-<table summary="participants a l'evenement" class="tiny">
+<table summary="participants a l'evenement" class="{if $tout}large{else}tiny{/if}">
<tr>
<th>Prénom NOM</th>
<th>Promo</th>
<th>Info</th>
+ {if $tout}
+ {foreach from=$moments item=m}
+ <th>{$m.titre}</th>
+ {/foreach}
+ {if $admin && $money}
+ <th>Montant</th>
+ <th>Payé</th>
+ {/if}
+ {else}
<th>Nombre</th>
+ {/if}
</tr>
- {iterate from=$ann item=m}
+ {foreach from=$ann item=m}
<tr style="background:#d0c198;">
<td>{if $m.femme}•{/if}{$m.prenom} {$m.nom}</td>
<td>{$m.promo}</td>
<a href="mailto:{$m.email}"><img src="{rel}/images/mail.png" alt="mail"></a>
{/if}
</td>
+ {if $tout}
+ {foreach from=$moments item=i}
+ <td>{$m[$i.item_id]}</td>
+ {/foreach}
+ {if $admin && $money}
+ <td {if $m.montant > $m.paid}class="erreur"{/if}>{$m.montant}</td>
+ <td>{$m.paid}</td>
+ {/if}
+ {else}
<td>
{$m.nb}
</td>
+ {/if}
</tr>
- {/iterate}
+ {/foreach}
</table>
<p class="descr">
{/foreach}
</p>
+{if $admin}
+<hr />
+<p class="decr">
+En tant qu'administrateur, tu peux fixer la venue (accompagnée ou pas) d'un des membres du groupe. Donne ici son mail (complet pour les extérieurs, sans @polytechnique.org pour les X), ainsi que le nombre de participants.<br />
+<form action="{$smarty.server.PHP_SELF}" method="post">
+<input type="hidden" name="eid" value="{$smarty.request.eid}" />
+Mail: <input name="mail" size="20" />
+<input type="hidden" name="adm" value="nbs" />
+{if $smarty.request.item_id}
+ <input type="hidden" name="item_id" value="{$smarty.request.item_id}" />
+{$evt.titre}: <input name="nb{$smarty.request.item_id}" size="1" value="1" />
+{else}
+{foreach from=$moments item=m}
+ {$m.titre}: <input name="nb{$m.item_id}" size="1" value="1"/>
+{/foreach}
+{/if}
+<input type="submit" />
+</form>
+</p>
+
+<hr />
+<p class="decr">
+En tant qu'administrateur, tu peux entrer un paiement reçu par une autre source que le télépaiement du site X.org. Ce montant s'ajoutera aux montants déjà entrés. Si tu as fais une erreur, tu peux entrer un montant négatif.
+<form action="{$smarty.server.PHP_SELF}" method="post">
+<input type="hidden" name="eid" value="{$smarty.request.eid}" />
+<input type="hidden" name="adm" value="prix" />
+Mail: <input name="mail" size="20" />
+montant: <input name="montant" size="3" value="0,00" /> €
+<input type="submit" />
+</p>
+{/if}
+
{* vim:set et sw=2 sts=2 sws=2: *}