Merge commit 'origin/master' into fusionax
[platal.git] / modules / xnetevents / xnetevents.inc.php
index c7503e8..fd17320 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2008 Polytechnique.org                              *
+ *  Copyright (C) 2003-2009 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -31,7 +31,7 @@ function get_event_detail($eid, $item_id = false, $asso_id = null)
         "SELECT SUM(nb) AS nb_tot, COUNT(DISTINCT ep.uid) AS nb, e.*,
                 IF(e.deadline_inscription, e.deadline_inscription >= LEFT(NOW(), 10),
                    1) AS inscr_open,
-                LEFT(10, e.debut) AS debut_day, LEFT(10, e.fin) AS fin_day,
+                LEFT(10, e.debut) AS first_day, LEFT(10, e.fin) AS last_day,
                 LEFT(NOW(), 10) AS now,
                 ei.titre,
                 al.vid AS absent_list, pl.vid AS participant_list,
@@ -51,9 +51,12 @@ function get_event_detail($eid, $item_id = false, $asso_id = null)
 
     $evt = $res->fetchOneAssoc();
 
-    if (!$evt || ($GLOBALS['IS_XNET_SITE'] && $evt['accept_nonmembre'] == 0 && !is_member() && !may_update())) {
+    if (!$evt) {
         return null;
     }
+    if ($GLOBALS['IS_XNET_SITE'] && $evt['accept_nonmembre'] == 0 && !is_member() && !may_update()) {
+        return false;
+    }
 
     // smart calculation of the total number
     if (!$item_id) {
@@ -104,6 +107,8 @@ function get_event_detail($eid, $item_id = false, $asso_id = null)
         $evt['telepaid'] += trim($p);
     }
 
+    make_event_date($evt);
+
     return $evt;
 }
 
@@ -249,6 +254,7 @@ function subscribe_lists_event($participate, $uid, $evt)
 }
 // }}}
 
+//  {{{ function event_change_shortname()
 function event_change_shortname(&$page, $eid, $old, $new)
 {
     global $globals;
@@ -263,6 +269,11 @@ function event_change_shortname(&$page, $eid, $old, $new)
                     et qu'il ne contient que des lettres non accentuées,
                     des chiffres ou les caractères - et .");
         return $old;
+    } elseif ($new && ctype_digit($new)) {
+        $page->trigError("Le raccourci demandé ne peut être accepté car il
+                         ne contient que des chiffres. Rajoute-lui par exemple
+                         une lettre.");
+        return $old;
     }
 
     //vérifier que l'alias n'est pas déja pris
@@ -314,8 +325,8 @@ function event_change_shortname(&$page, $eid, $old, $new)
                 $new.'-absents@'.$globals->xnet->evts_domain);
 
         $lastid = XDB::insertId();
-        XDB::execute("INSERT INTO virtual_redirect (
-            SELECT {?} AS vid, IF(u.nom IS NULL, m.email, CONCAT(a.alias, {?})) AS redirect
+        XDB::execute("INSERT IGNORE INTO virtual_redirect (
+            SELECT {?} AS vid, IF(a.alias IS NULL, m.email, CONCAT(a.alias, {?})) AS redirect
                   FROM groupex.membres AS m
              LEFT JOIN groupex.evenements_participants AS ep ON (ep.uid = m.uid AND ep.eid = {?})
              LEFT JOIN auth_user_md5   AS u ON (u.user_id = m.uid)
@@ -342,6 +353,32 @@ function event_change_shortname(&$page, $eid, $old, $new)
     // cannot happen
     return $old;
 }
+// }}}
+
+//  {{{ function make_event_date()
+function make_event_date(&$e)
+{
+    $start     = strtotime($e['debut']);
+    $end       = strtotime($e['fin']);
+    $first_day = strtotime($e['first_day']);
+    $last_day  = strtotime($e['last_day']);
+    unset($e['debut'], $e['fin'], $e['first_day'], $e['last_day']);
+
+    $date = "";
+    if ($start && $end != $start) {
+        if ($first_day == $last_day) {
+          $date .= "le " . strftime("%d %B %Y", $start) . " de "
+                . strftime("%H:%M", $start) . " à " . strftime("%H:%M", $end);
+        } else {
+          $date .= "du " . strftime("%d %B %Y à %H:%M", $start)
+                . "\nau " . strftime("%d %B %Y à %H:%M", $end);
+        }
+    } else {
+        $date .= "le " . strftime("%d %B %Y à %H:%M", $start);
+    }
+    $e['date'] = $date;
+}
+// }}}
 
 // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
 ?>