backports
[platal.git] / modules / events.php
index 8fa4f28..7c96566 100644 (file)
@@ -43,7 +43,7 @@ class EventsModule extends PLModule
         subscribe_nl($uid);
     }
 
-    function handler_ev(&$page)
+    function handler_ev(&$page, $action = 'list', $eid = null, $pound = null)
     {
         $page->changeTpl('login.tpl');
 
@@ -78,26 +78,27 @@ class EventsModule extends PLModule
         $page->assign('geoloc_incitation', count($res));
 
         // affichage de la boîte avec quelques liens
-        require_once 'login.conf.php';
-        $pub_nbElem = $pub_nbLig * $pub_nbCol ;
-        if (count($pub_tjs) <= $pub_nbElem) {
-            $publicite = array_slice($pub_tjs, 0, $pub_nbElem);
-        } else {
-            $publicite = $pub_tjs ;
+        /* Bandeau de publicité sur la page de login */
+        $publicite = array(
+            'password'   => 'Changer mon mot de passe' ,
+            'Docs/Dons'  => 'Faire un don à l\'association Polytechnique.org'
+            ) ;
+
+        // Liens apparaissant de façon aléatoire
+        $pub_rnd = array(
+            'nl/show'                      => 'Afficher la dernière newsletter' ,
+            'http://www.polytechnique.net' => 'Vers les autres sites polytechniciens' ,
+            "trombi/{$_SESSION["promo"]}"  => "Voir le trombi de ma promo" ,
+            'banana'                       => 'Un petit tour du côté des forums !!'
+            ) ;
+
+        $choix = array_rand($pub_rnd, 2);
+        foreach ($choix as $url) {
+            $publicite[$url] = $pub_rnd[$url] ;
         }
-
-        $nbAlea = $pub_nbElem - count($publicite) ;
-        if ($nbAlea > 0) {
-            $choix = array_rand($pub_rnd,$nbAlea) ;
-            foreach ($choix as $url) {
-                $publicite[$url] = $pub_rnd[$url] ;
-            }
-        }
-        $publicite = array_chunk( $publicite , $pub_nbLig , true ) ;
-        $page->assign_by_ref('publicite', $publicite);
+        $page->assign('publicite', array_chunk($publicite, 2, true));
 
         // ajout du lien RSS
-
         if (S::has('core_rss_hash')) {
             $page->assign('xorg_rss',
                           array('title' => 'Polytechnique.org :: News',
@@ -107,18 +108,21 @@ class EventsModule extends PLModule
         }
 
         // cache les evenements lus et raffiche les evenements a relire
-        if (Env::has('lu')){
-            XDB::execute('DELETE FROM evenements_vus AS ev 
-                                     INNER JOIN evenements AS e ON e.id = ev.evt_id
-                                          WHERE peremption < NOW)');
+        if ($action == 'read' && $eid) {
+            XDB::execute('DELETE evenements_vus.*
+                            FROM evenements_vus AS ev 
+                      INNER JOIN evenements AS e ON e.id = ev.evt_id
+                           WHERE peremption < NOW()');
             XDB::execute('REPLACE INTO evenements_vus VALUES({?},{?})',
-                                   Env::v('lu'), S::v('uid'));
+                $eid, S::v('uid'));
+            pl_redirect('events#'.$pound);
         }
 
-        if (Env::has('nonlu')){
+        if ($action == 'unread' && $eid) {
             XDB::execute('DELETE FROM evenements_vus
-                                          WHERE evt_id = {?} AND user_id = {?}',
-                                   Env::v('nonlu'), S::v('uid'));
+                           WHERE evt_id = {?} AND user_id = {?}',
+                                   $eid, S::v('uid'));
+            pl_redirect('events#newsid'.$eid);
         }
 
         // affichage des evenements
@@ -174,10 +178,10 @@ class EventsModule extends PLModule
         $page->assign('action', strtolower($action));
 
         if ($action == 'Confirmer') {
-            $texte = preg_replace('/((http|ftp)+(s)?:\/\/[^<>\s]+)/i',
-                                  '<a href=\"\\0\">\\0</a>', $texte);
-            $texte = preg_replace('/([^,\s]+@[^,\s]+)/i',
-                                  '<a href=\"mailto:\\0\">\\0</a>', $texte);
+            $texte = preg_replace('/((?:https?|ftp):\/\/(?:\.*,*[a-z@0-9~%$£µ&i#\-+=_\/\?])*)/i',
+                                  '<a href="\\0">\\0</a>', $texte);
+            $texte = preg_replace('/(?:mailto:)?([a-z0-9.\-+_]+@([\-.+_]?[a-z0-9])+)/i',
+                                  '<a href="mailto:\\0">\\0</a>', $texte);
             require_once 'validations.inc.php';
             $evtreq = new EvtReq($titre, $texte, $promo_min, $promo_max,
                                  $peremption, $valid_mesg, S::v('uid'));
@@ -262,12 +266,12 @@ class EventsModule extends PLModule
         $arch = $action == 'archives';
         $page->assign('action', $action);
  
-        if (Post::v('action') == "Proposer") {
+        if (Post::v('action') == "Proposer" && $eid) {
             XDB::execute('UPDATE evenements
                              SET titre={?}, texte={?}, peremption={?}, promo_min={?}, promo_max={?}
                            WHERE id = {?}', 
                           Post::v('titre'), Post::v('texte'), Post::v('peremption'),
-                          Post::v('promo_min'), Post::v('promo_max'), Post::i('evt_id'));
+                          Post::v('promo_min'), Post::v('promo_max'), $eid);
         }
 
         if ($action == 'edit') {