correction de bugs events
authorPascal Corpet <pascal.corpet@m4x.org>
Mon, 6 Jun 2005 08:22:35 +0000 (08:22 +0000)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Thu, 26 Jun 2008 21:29:08 +0000 (23:29 +0200)
git-archimport-id: opensource@polytechnique.org--2005/platal--mainline--0.9--patch-684

htdocs.net/groupe/evt-admin.php
htdocs.net/groupe/evt-detail.php
templates/xnet/groupe/evt-admin.tpl
templates/xnet/groupe/evt-detail.tpl

index 446f670..31d0cdd 100644 (file)
@@ -45,7 +45,6 @@ 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) {
@@ -102,13 +101,13 @@ 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))
+            '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)
                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  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 = ep.uid )
               WHERE  ep.eid = {?} '.$whereitemid.'
-           GROUP BY  UPPER(SUBSTRING(IF(m.origine="X",u.nom,m.nom), 1, 1))', $eid);
+           GROUP BY  UPPER(SUBSTRING(IF(u.nom IS NULL,m.nom,u.nom), 1, 1))', $eid);
 
 $alphabet = array();
 $nb_tot = 0;
@@ -119,10 +118,11 @@ while (list($char, $nb) = $res->next()) {
         $tot = $nb;
     }
 }
+ksort($alphabet);
 $page->assign('alphabet', $alphabet);
 
 $ofs   = Env::getInt('offset');
-$tot   = Env::get('initiale') ? $tot-1 : $nb_tot-1;
+$tot   = Env::get('initiale') ? $tot : $nb_tot;
 $nbp   = intval(($tot-1)/NB_PER_PAGE);
 $links = array();
 if ($ofs) {
@@ -138,53 +138,57 @@ if (count($links)>1) {
     $page->assign('links', $links);
 }
 
-$ini = Env::has('initiale') ? 'AND IF(m.origine="X",IF(u.nom_usage<>"", u.nom_usage, u.nom),m.nom) LIKE "'.addslashes(Env::get('initiale')).'%"' : '';
+$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')).'%"' : '';
 $ann = $globals->xdb->iterator(
-          "SELECT  IF(m.origine='X',IF(u.nom_usage<>'', u.nom_usage, u.nom) ,m.nom) AS nom,
-                   IF(m.origine='X',u.prenom,m.prenom) AS prenom,
-                   IF(m.origine='X',u.promo,'extérieur') AS promo,
-                   IF(m.origine='X',a.alias,m.email) AS email,
-                   IF(m.origine='X',FIND_IN_SET('femme', u.flags),0) AS femme,
+          "SELECT  IF(u.nom IS NULL,m.nom,IF(u.nom_usage<>'', u.nom_usage, u.nom)) AS nom,
+                   IF(u.nom IS NULL,m.prenom,u.prenom) AS prenom,
+                   IF(u.nom IS NULL,'extérieur',u.promo) AS promo,
+                   IF(u.nom IS NULL,m.email,a.alias) AS email,
+                   IF(u.nom IS NULL,0,FIND_IN_SET('femme', u.flags)) AS femme,
                    m.perms='admin' AS admin,
-                   m.origine='X' AS x,
-                  m.uid, 
-                  ep.nb, ep.item_id, ep.paid
+                   NOT(u.nom IS NULL) AS x,
+                  ep.uid, ep.paid, SUM(nb) AS nb 
                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' )
+         LEFT 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 = ep.uid )
+          LEFT JOIN  aliases         AS a ON ( a.id = ep.uid AND a.type='a_vie' )
               WHERE  ep.eid = {?} $whereitemid $ini
+          GROUP BY  ep.uid
           ORDER BY  $tri
              LIMIT {?}, {?}",
           $eid,
            $ofs*NB_PER_PAGE, NB_PER_PAGE);
-
+$globals->xdb->execute("SELECT 1");
 $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(
+while ($u = $ann->next()) {
+       $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);
-                       }
+                       $evt['paiement_id'], $u['uid']);
+               $montants = $res->fetchColumn();
+               foreach ($montants as $m) {
+                       $p = strtr(substr($m, 0, strpos($m, "EUR")), ",", ".");
+                       $u['paid'] += trim($p);
+               }
+       }
+       if (!Env::has('item_id')) {
+               $res = $globals->xdb->iterator(
+               "SELECT nb, item_id
+                  FROM groupex.evenements_participants AS ep
+                 WHERE eid = {?} $whereitemid AND uid = {?}",
+               Env::get('eid'), $u['uid']);
+               while ($i = $res->next()) {
+                       $u[$i['item_id']] = $i['nb'];
+                       $u['montant'] += $moments[$i['item_id']]['montant']*$i['nb'];
                }
        }
-       $u[$a['item_id']] = $a['nb'];
-       $u['montant'] += $moments[$a['item_id']]['montant']*$a['nb'];
+       $tab[] = $u;
 }
-if ($user) $tab[] = $u;
 
 $page->assign('ann', $tab);
 
index b46f634..306ca90 100644 (file)
@@ -11,14 +11,17 @@ $may_participate = !$members_only || is_member() || may_update();
 $page->assign('may_participate', $may_participate);
 
 for ($i=1; Env::has('item_id'.$i); $i++) {
+       $res = $globals->xdb->query("SELECT paid FROM groupex.evenements_participants WHERE eid = {?} AND uid = {?}", Env::get("eid"), Session::get("uid"));
+       $paid = $res->fetchOneCell();
+       if (!$paid) $paid = 0;
        $j = Env::get('item_id'.$i);
        $nb = Env::get('item_'.$j);
        if ($nb == '+') $nb = Env::get('itemnb_'.$j)+1;
        if ($nb > 0)
                $globals->xdb->execute(
        "REPLACE INTO groupex.evenements_participants
-              VALUES ({?}, {?}, {?}, {?})",
-              Env::get("eid"), Session::get("uid"), $j, $nb);
+              VALUES ({?}, {?}, {?}, {?}, {?})",
+              Env::get("eid"), Session::get("uid"), $j, $nb, $paid);
        else
                $globals->xdb->execute(
        "DELETE FROM groupex.evenements_participants
@@ -32,7 +35,7 @@ if (Env::has("ins"))
 
 $res = $globals->xdb->query(
         "SELECT  e.eid, a.nom, a.prenom, a.promo, intitule, descriptif, debut AS deb,
-                fin, membres_only
+                fin, membres_only, paiement_id
           FROM  groupex.evenements AS e
          INNER  JOIN x4dat.auth_user_md5 AS a ON a.user_id = e.organisateur_uid
          WHERE  e.eid = {?}", Env::get("eid"));
@@ -50,6 +53,24 @@ $moments = $globals->xdb->iterator(
 
 $page->assign('moments', $moments);
 
+if (!$paid) {
+       $res = $globals->xdb->query("SELECT paid FROM groupex.evenements_participants WHERE eid = {?} AND uid = {?}", Env::get("eid"), Session::get("uid"));
+       $paid = $res->fetchOneCell();
+}
+if ($evt['paiement_id']) {
+       $res = $globals->xdb->query(
+               "SELECT montant
+                  FROM {$globals->money->mpay_tprefix}transactions AS t
+                 WHERE ref = {?} AND uid = {?}",
+                       $evt['paiement_id'], Session::getInt('uid', -1));
+       $montants = $res->fetchColumn();
+       foreach ($montants as $m) {
+               $p = strtr(substr($m, 0, strpos($m, "EUR")), ",", ".");
+               $paid += trim($p);
+       }
+}
+$page->assign('paid', $paid);
+
 $page->run();
 
 ?>
index 040b4e2..3747880 100644 (file)
@@ -91,7 +91,7 @@ L'
 
 <p class="descr">
 {foreach from=$links item=ofs key=txt}
-<a href="?offset={$ofs}&amp;initiale={$smarty.request.initiale}"{if $smarty.request.offset eq $ofs} class="erreur"{/if}>{$txt}</a>
+<a href="{$url_page}&offset={$ofs}&amp;initiale={$smarty.request.initiale}"{if $smarty.request.offset eq $ofs} class="erreur"{/if}>{$txt}</a>
 {/foreach}
 </p>
 
index 6215d09..1637737 100644 (file)
 
 <br /><br />
 
+{assign var="montant" value=0}
+
 <table border=1 width='100%'>
        <input type="hidden" name="eid" value="{$evt.eid}" />
        <tr><td></td><td>Participation</td></tr>
        {iterate from=$moments item=m}
+               {assign var="montant" value=$montant+$m.montant*$m.nb}
                <input type="hidden" name="item_id{counter}" value="{$m.item_id}" />
-       {if $m.titre | $m.montant}
+       {if $m.titre || $m.montant}
                <tr><td colspan='2'><b>{$m.titre} - {if $m.montant > 0}{$m.montant}{else}gratuit{/if}</b></td></tr>
        {/if}
                <tr><td>{$m.details}</td><td>
        {/iterate}
 </table>
 <br />
+{if $montant > 0 || $paid > 0}
+<p class="descr">
+       Pour cet événement tu dois payer {$montant|replace:'.':','} &#8364;{if $paid > 0}, et tu as déjà payé {$paid|replace:'.':','} &#8364;{/if}.<br />
+       {if $evt.paiement_id}[<a href="https://www.polytechnique.org/paiement/?ref={$evt.paiement_id}">Effectuer le paiement</a>]{/if}
+</p>
+{/if}
 <center><input type='submit' name='ins' value='valider ma participation'>
 <input type='reset' value='annuler'></center>
 </form>