Revert "Rewrites xnetevents subscription page."
[platal.git] / modules / xnetevents.php
index a12c669..38e4a28 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   *
@@ -40,6 +40,8 @@ class XnetEventsModule extends PLModule
         global $globals;
 
         $page->changeTpl('xnetevents/index.tpl');
+        $this->load('xnetevents.inc.php');
+
         $action = null;
         $archive = ($archive == 'archive' && may_update());
 
@@ -79,6 +81,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 +113,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,55 +146,56 @@ 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);
-
-        $evts = array();
-        $undisplayed_events = 0;
-        $this->load('xnetevents.inc.php');
 
-        while ($e = $evenements->next()) {
+        if (Post::has('order')) {
+            $order = Post::v('order');
+            XDB::execute("UPDATE groups
+                             SET event_order = {?}
+                           WHERE id = {?}",
+                          $order, $globals->asso('id'));
+        }
+        $order = get_event_order($globals->asso('id'));
+        $evts = get_events($globals->asso('id'), $order);
+        $page->assign('order', $order);
+
+        $undisplayed_events = 0;
+        foreach ($evts as $eid => &$e) {
             if (!is_member() && !may_update() && !$e['accept_nonmembre']) {
                 $undisplayed_events ++;
                 continue;
             }
 
             $e['show_participants'] = ($e['show_participants'] && (is_member() || may_update()));
-            $e['moments'] = XDB::fetchAllAssoc('SELECT  titre, details, montant, ei.item_id, nb, ep.paid
-                                                  FROM  group_event_items AS ei
-                                             LEFT JOIN  group_event_participants AS ep
-                                                           ON (ep.eid = ei.eid AND ep.item_id = ei.item_id AND ep.uid = {?})
-                                                 WHERE ei.eid = {?}',
-                                                S::i('uid'), $e['eid']);
-
+            $e['items'] = get_event_items($eid);
             $e['topay'] = 0;
-            $e['paid']  = $e['moments'][0]['paid'];
-            foreach ($e['moments'] as $m) {
-                $e['topay'] += $m['nb'] * $m['montant'];
+            $e['paid']  = 0;
+            $sub = get_event_subscription($eid, S::i('uid'));
+            if (empty($sub)) {
+                $e['inscrit'] = false;
+            } else {
+                $e['inscrit'] = true;
+                foreach ($e['items'] as $item_id => $m) {
+                    if (isset($sub[$item_id])) {
+                        $e['topay'] += $sub[$item_id]['nb'] * $m['montant'];
+                        $e['paid'] += $sub[$item_id]['paid'];
+                    }
+                }
             }
+            $e['sub'] = $sub;
 
-            $montant = XDB::fetchOneCell(
-                "SELECT SUM(amount) as sum_amount
-                   FROM payment_transactions AS t
-                 WHERE ref = {?} AND uid = {?}", $e['paiement_id'], S::v('uid'));
-            $e['paid'] += $montant;
+            $telepaid = get_event_telepaid($eid, S::i('uid'));
+            $e['paid'] += $telepaid;
 
-            make_event_date($e);
+            $e['date'] = make_event_date($e['debut'], $e['fin']);
+            if ($e['deadline_inscription'] == null || strtotime($e['deadline_inscription']) >= time()) {
+                $e['inscr_open'] = true;
+            } else {
+                $e['inscr_open'] = false;
+            }
 
             if (Env::has('updated') && $e['eid'] == Env::i('updated')) {
                 $page->assign('updated', $e);
             }
-            $evts[] = $e;
         }
 
         $page->assign('evenements', $evts);
@@ -216,13 +249,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 +294,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 +345,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 +362,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 +541,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 +556,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 +657,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 +729,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 +748,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:
 ?>