Revert "Rewrites xnetevents index page."
[platal.git] / modules / xnetevents.php
index a12c669..a9d4d1c 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2011 Polytechnique.org                              *
+ *  Copyright (C) 2003-2014 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -79,6 +79,17 @@ class XnetEventsModule extends PLModule
                 }
             }
 
+            // archive le paiement associé si il existe
+            $pay_id = XDB::fetchOneCell("SELECT paiement_id
+                                           FROM group_events
+                                          WHERE eid = {?} AND asso_id = {?}",
+                                        $eid, $globals->asso('id')); 
+            if (!$pay_id=='') {
+                XDB::execute("UPDATE payments
+                                 SET flags = 'old'
+                               WHERE id = {?}",
+                             $pay_id);
+            }
             // deletes the event items
             XDB::execute('DELETE FROM  group_event_items
                                 WHERE  eid = {?}', $eid);
@@ -100,13 +111,32 @@ class XnetEventsModule extends PLModule
         }
 
         if ($action == 'archive') {
+            $pay_id = XDB::fetchOneCell("SELECT paiement_id 
+                                           FROM group_events
+                                          WHERE eid = {?} AND asso_id = {?}",
+                                        $eid, $globals->asso('id'));
+            if (!$pay_id=='') {
+                XDB::execute("UPDATE payments
+                                 SET flags = 'old'
+                               WHERE id = {?}",
+                               $pay_id);
+            }
             XDB::execute("UPDATE group_events
                              SET archive = 1
                            WHERE eid = {?} AND asso_id = {?}",
-                         $eid, $globals->asso('id'));
+                           $eid, $globals->asso('id'));
         }
 
         if ($action == 'unarchive') {
+            $pay_id = XDB::fetchOneCell("SELECT paiement_id FROM group_events
+                                     WHERE eid = {?} AND asso_id = {?}",
+                                   $eid, $globals->asso('id'));
+            if (!$pay_id=='') {
+                XDB::execute("UPDATE payments
+                                 SET flags = ''
+                               WHERE id = {?}",
+                               $pay_id);
+            }
             XDB::execute("UPDATE group_events
                              SET archive = 0
                            WHERE eid = {?} AND asso_id = {?}",
@@ -114,18 +144,46 @@ class XnetEventsModule extends PLModule
         }
 
         $page->assign('archive', $archive);
-        $evenements = XDB::iterator('SELECT  e.*, LEFT(10, e.debut) AS first_day, LEFT(10, e.fin) AS last_day,
-                                             IF(e.deadline_inscription,
-                                                     e.deadline_inscription >= LEFT(NOW(), 10),
-                                                     1) AS inscr_open,
-                                             e.deadline_inscription,
-                                             MAX(ep.nb) IS NOT NULL AS inscrit, MAX(ep.paid) AS paid
-                                       FROM  group_events              AS e
-                                  LEFT JOIN  group_event_participants AS ep ON (ep.eid = e.eid AND ep.uid = {?})
-                                      WHERE  asso_id = {?} AND  archive = {?}
-                                   GROUP BY  e.eid
-                                   ORDER BY  inscr_open DESC, debut DESC',
-                                     S::i('uid'), $globals->asso('id'), $archive ? 1 : 0);
+
+        if (Post::has('order')) {
+            $order = Post::v('order');
+            XDB::execute("UPDATE groups
+                             SET event_order = {?}
+                           WHERE id = {?}",
+                          $order, $globals->asso('id'));
+        } else {
+            $order = XDB::fetchOneCell("SELECT event_order FROM groups
+                                         WHERE id = {?}",
+                                        $globals->asso('id'));
+        }
+        if ($order == 'desc') {
+            $evenements = XDB::iterator('SELECT  e.*, LEFT(e.debut, 10) AS first_day, LEFT(e.fin, 10) AS last_day,
+                                                 IF(e.deadline_inscription,
+                                                         e.deadline_inscription >= LEFT(NOW(), 10),
+                                                         1) AS inscr_open,
+                                                 e.deadline_inscription,
+                                                 MAX(ep.nb) IS NOT NULL AS inscrit, MAX(ep.paid) AS paid
+                                           FROM  group_events              AS e
+                                      LEFT JOIN  group_event_participants AS ep ON (ep.eid = e.eid AND ep.uid = {?})
+                                          WHERE  asso_id = {?} AND  archive = {?}
+                                       GROUP BY  e.eid
+                                       ORDER BY  inscr_open DESC, debut DESC',
+                                         S::i('uid'), $globals->asso('id'), $archive ? 1 : 0);
+        } else {
+            $evenements = XDB::iterator('SELECT  e.*, LEFT(e.debut, 10) AS first_day, LEFT(e.fin, 10) AS last_day,
+                                                 IF(e.deadline_inscription,
+                                                         e.deadline_inscription >= LEFT(NOW(), 10),
+                                                         1) AS inscr_open,
+                                                 e.deadline_inscription,
+                                                 MAX(ep.nb) IS NOT NULL AS inscrit, MAX(ep.paid) AS paid
+                                           FROM  group_events              AS e
+                                      LEFT JOIN  group_event_participants AS ep ON (ep.eid = e.eid AND ep.uid = {?})
+                                          WHERE  asso_id = {?} AND  archive = {?}
+                                       GROUP BY  e.eid
+                                       ORDER BY  inscr_open DESC, debut ASC',
+                                         S::i('uid'), $globals->asso('id'), $archive ? 1 : 0);
+        }
+        $page->assign('order', $order);
 
         $evts = array();
         $undisplayed_events = 0;
@@ -146,9 +204,10 @@ class XnetEventsModule extends PLModule
                                                 S::i('uid'), $e['eid']);
 
             $e['topay'] = 0;
-            $e['paid']  = $e['moments'][0]['paid'];
+            $e['paid']  = 0;
             foreach ($e['moments'] as $m) {
                 $e['topay'] += $m['nb'] * $m['montant'];
+                $e['paid'] += $m['paid'];
             }
 
             $montant = XDB::fetchOneCell(
@@ -216,13 +275,13 @@ class XnetEventsModule extends PLModule
         foreach ($moments as $j => $v) {
             $subs[$j] = intval($v);
 
-            // retreive ohter field when more than one person
+            // retrieve other field when more than one person
             if ($subs[$j] == 2) {
                 if (!isset($pers[$j]) || !is_numeric($pers[$j]) || $pers[$j] < 0) {
                     $page->trigError("Tu dois choisir un nombre d'invités correct&nbsp;!");
                     return;
                 }
-                $subs[$j] = 1 + $pers[$j];
+                $subs[$j] = $pers[$j];
             }
         }
 
@@ -261,7 +320,12 @@ class XnetEventsModule extends PLModule
             $total += $nb;
         }
         if ($updated !== false) {
-            $page->trigSuccess('Ton inscription à l\'événement a été mise à jour avec succès.');
+            $evt = get_event_detail($eid);
+            if ($evt['topay'] > 0) {
+                $page->trigSuccess('Ton inscription à l\'événement a été mise à jour avec succès, tu peux payer ta participation en cliquant ci-dessous');
+            } else {
+                $page->trigSuccess('Ton inscription à l\'événement a été mise à jour avec succès.');
+            }
             subscribe_lists_event(S::i('uid'), $evt['short_name'], ($total > 0 ? 1 : 0), 0);
 
             if ($evt['subscription_notification'] != 'nobody') {
@@ -307,7 +371,10 @@ class XnetEventsModule extends PLModule
         $all = !Env::v('item_id', false);
 
         $participants = get_event_participants($evt, $item_id, $tri);
-        $title = 'Nom;Prénom;Promotion';
+        $title = 'Nom;Prénom;Promotion;Email';
+        if ($admin) {
+            $title .=';Société;Poste';
+        }
         if ($all) {
             foreach ($evt['moments'] as $moment) {
                 $title .= ';' . $moment['titre'];
@@ -321,13 +388,18 @@ class XnetEventsModule extends PLModule
             $title .= 'Payé';
         } else {
             $title .= ';Nombre';
-        }
+        } 
         echo utf8_decode($title) . "\n";
 
         if ($participants) {
             foreach ($participants as $participant) {
                 $user = $participant['user'];
-                $line = $user->lastName() . ';' . $user->firstName() . ';' . $user->promo();
+                $line = $user->lastName() . ';' . $user->firstName() . ';' . $user->promo() . ';' . $user->bestEmail();
+                if ($admin && $user->hasProfile()) {
+                    $line .= ';' . $user->profile()->getMainJob()->company->name . ';' . $user->profile()->getMainJob()->description;
+                } else  {
+                    $line .= ';;';
+                }
                 if ($all) {
                     foreach ($evt['moments'] as $moment) {
                         $line .= ';' . $participant[$moment['item_id']];
@@ -495,7 +567,7 @@ class XnetEventsModule extends PLModule
             // request for a new payment
             if (Post::v('paiement_id') == -1 && $money_defaut >= 0) {
                 $p = new PayReq(S::user(),
-                                Post::v('intitule')." - ".$globals->asso('nom'),
+                                $globals->asso('nom')." - ".Post::v('intitule'),
                                 Post::v('site'), $money_defaut,
                                 Post::v('confirmation'), 0, 999,
                                 $globals->asso('id'), $eid, Post::v('payment_public') == 'yes');
@@ -510,10 +582,10 @@ class XnetEventsModule extends PLModule
                 }
             }
 
-            // events with no sub-event: add a sub-event with no name
+            // events with no sub-event: add a sub-event with default name
             if ($nb_moments == 0) {
                 XDB::execute("INSERT INTO group_event_items
-                                   VALUES ({?}, {?}, '', '', 0)", $eid, 1);
+                                   VALUES ({?}, {?}, 'Événement', '', 0)", $eid, 1);
             }
 
             if (!$error) {
@@ -611,6 +683,12 @@ class XnetEventsModule extends PLModule
                                   $member->uid, $evt['eid']);
 
                 $paid = $res->fetchOneCell();
+
+                // Ensure we have an integer
+                if ($paid == null) {
+                    $paid = 0;
+                }
+
                 $nbs  = Post::v('nb', array());
 
                 $paid_inserted = false;
@@ -677,6 +755,9 @@ class XnetEventsModule extends PLModule
                                            GROUP BY  p.uid', $evt['eid']);
 
         $ofs = Env::i('offset');
+        $part = get_event_participants($evt, $item_id, UserFilter::sortByName(),
+                                       NB_PER_PAGE, $ofs * NB_PER_PAGE);
+
         $nbp = ceil($evt['user_count'] / NB_PER_PAGE);
         if ($nbp > 1) {
             $links = array();
@@ -693,11 +774,9 @@ class XnetEventsModule extends PLModule
         }
 
         $page->assign('absents', $absents);
-        $page->assign('participants',
-                      get_event_participants($evt, $item_id, UserFilter::sortByName(),
-                                             NB_PER_PAGE, $ofs * NB_PER_PAGE));
+        $page->assign('participants', $part);
     }
 }
 
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
 ?>