Fix SUID
[platal.git] / modules / carnet.php
index 194d866..78b0b69 100644 (file)
@@ -85,7 +85,7 @@ class CarnetModule extends PLModule
         if(preg_match('!^ *(\d{4}) *$!', $arg, $matches)) {
             $p = intval($matches[1]);
             if($p<1900 || $p>2100) {
-                $page->trig("la promo entrée est invalide");
+                $page->trigError("la promo entrée est invalide");
             } else {
                 if ($action == 'add_promo') {
                     $watch->_promos->add($p);
@@ -97,9 +97,9 @@ class CarnetModule extends PLModule
             $p1 = intval($matches[1]);
             $p2 = intval($matches[2]);
             if($p1<1900 || $p1>2100) {
-                $page->trig('la première promo de la plage entrée est invalide');
+                $page->trigError('la première promo de la plage entrée est invalide');
             } elseif($p2<1900 || $p2>2100) {
-                $page->trig('la seconde promo de la plage entrée est invalide');
+                $page->trigError('la seconde promo de la plage entrée est invalide');
             } else {
                 if ($action == 'add_promo') {
                     $watch->_promos->addRange($p1, $p2);
@@ -108,7 +108,7 @@ class CarnetModule extends PLModule
                 }
             }
         } else {
-            $page->trig("La promo (ou la plage de promo) entrée est dans un format incorrect.");
+            $page->trigError("La promo (ou la plage de promo) entrée est dans un format incorrect.");
         }
     }
 
@@ -127,9 +127,8 @@ class CarnetModule extends PLModule
         $promo_sortie = $res->fetchOneCell();
         $page->assign('promo_sortie', $promo_sortie);
 
-        if ($action && !S::has_xsrf_token()) {
-            $page->trig("La mise à jour des notifications a échouée, merci de réessayer.");
-            $action = false;
+        if ($action) {
+            S::assert_xsrf_token();
         }
         switch ($action) {
           case 'add_promo':
@@ -146,24 +145,21 @@ class CarnetModule extends PLModule
             break;
         }
 
-        if (Env::has('subs') && S::has_xsrf_token()) {
+        if (Env::has('subs')) {
+            S::assert_xsrf_token();
             $watch->_subs->update('sub');
-        } elseif (Env::has('subs')) {
-            $page->trig("La mise à jour des notifications a échouée, merci de réessayer.");
         }
 
-        if (Env::has('flags_contacts') && S::has_xsrf_token()) {
+        if (Env::has('flags_contacts')) {
+            S::assert_xsrf_token();
             $watch->watch_contacts = Env::b('contacts');
             $watch->saveFlags();
-        } elseif (Env::has('flags_contacts')) {
-            $page->trig("La mise à jour des notifications a échouée, merci de réessayer.");
         }
 
-        if (Env::has('flags_mail') && S::has_xsrf_token()) {
+        if (Env::has('flags_mail')) {
+            S::assert_xsrf_token();
             $watch->watch_mail = Env::b('mail');
             $watch->saveFlags();
-        } elseif (Env::has('flags_mail')) {
-            $page->trig("La mise à jour des notifications a échouée, merci de réessayer.");
         }
 
         $page->assign_by_ref('watch', $watch);
@@ -200,7 +196,7 @@ class CarnetModule extends PLModule
 
     function searchErrorHandler($explain) {
         global $page;
-        $page->trig($explain);
+        $page->trigError($explain);
         $this->handler_contacts($page);
     }
 
@@ -214,15 +210,17 @@ class CarnetModule extends PLModule
 
         // For XSRF protection, checks both the normal xsrf token, and the special RSS token.
         // It allows direct linking to contact adding in the RSS feed.
-        if (Env::v('action') && (S::has_xsrf_token() || Env::v('token') === S::v('core_rss_hash'))) {
-            switch (Env::v('action')) {
-              case 'retirer':
+        if (Env::v('action') && Env::v('token') !== S::v('core_rss_hash')) {
+            S::assert_xsrf_token();
+        }
+        switch (Env::v('action')) {
+            case 'retirer':
                 if (is_numeric($user)) {
                     if (XDB::execute('DELETE FROM contacts
                                        WHERE uid = {?} AND contact = {?}',
                                      $uid, $user))
                     {
-                        $page->trig("Contact retiré !");
+                        $page->trigSuccess("Contact retiré !");
                     }
                 } else {
                     if (XDB::execute(
@@ -231,12 +229,12 @@ class CarnetModule extends PLModule
                                   INNER JOIN  aliases  AS a ON (c.contact=a.id and a.type!="homonyme")
                                        WHERE  c.uid = {?} AND a.alias={?}', $uid, $user))
                     {
-                        $page->trig("Contact retiré !");
+                        $page->trigSuccess("Contact retiré !");
                     }
                 }
                 break;
 
-              case 'ajouter':
+            case 'ajouter':
                 require_once('user.func.inc.php');
                 if (($login = get_user_login($user)) !== false) {
                     if (XDB::execute(
@@ -245,14 +243,11 @@ class CarnetModule extends PLModule
                                          FROM  aliases
                                         WHERE  alias = {?}', $uid, $login))
                     {
-                        $page->trig('Contact ajouté !');
+                        $page->trigSuccess('Contact ajouté !');
                     } else {
-                        $page->trig('Contact déjà dans la liste !');
+                        $page->trigWarning('Contact déjà dans la liste !');
                     }
                 }
-            }
-        } elseif (Env::v('action')) {
-            $page->trig("La modification du contact a échouée, merci de réessayer.");
         }
 
         $search = false;
@@ -286,7 +281,7 @@ class CarnetModule extends PLModule
         require_once dirname(__FILE__).'/carnet/contacts.pdf.inc.php';
         require_once 'user.func.inc.php';
 
-        session_write_close();
+        Platal::session()->close();
 
         $sql = "SELECT  a.alias
                   FROM  aliases       AS a