Add a 'markAsRead' hook.
[banana.git] / banana / banana.inc.php.in
index 2c223bf..3f01181 100644 (file)
@@ -37,6 +37,10 @@ class Banana
     static public $spool_tmax    = 10;
     static public $spool_boxlist = true;
 
+### Tree options ###
+    static public $tree_read  = 'dg';
+    static public $tree_unread = 'b';
+
 ### Message processing ###
     static public $msgparse_headers = array('content-disposition', 'content-transfer-encoding',
                                        'content-type', 'content-id', 'date', 'followup-to',
@@ -476,6 +480,9 @@ class Banana
             $groups    = Banana::$protocole->getBoxList(Banana::BOXES_SUB, Banana::$profile['lastnews'], true);
             Banana::$page->assign('groups', $groups);
         }
+        if (function_exists('hook_markAsRead')) {
+            hook_markAsRead($group, $artid, $msg);
+        }
         Banana::$page->assign_by_ref('message', $msg);
         Banana::$page->assign('extimages', Banana::$msgshow_hasextimages);
         Banana::$page->assign('headers', Banana::$msgshow_headers);
@@ -505,7 +512,7 @@ class Banana
                     $hdr_values[$header] = utf8_encode($hdr_values[$header]);
                 }
             }
-            $values = split('[,; ]', $hdr_values[$hdrs['dest']]);
+            $values = preg_split('/[,; ]/', $hdr_values[$hdrs['dest']]);
             $hdr_values[$hdrs['dest']] = preg_replace('/,+/', ',', implode(',', $values));
             if (!is_null($artid)) {
                 $old =& $this->loadMessage($group, $artid);
@@ -574,16 +581,12 @@ class Banana
         }
         if (isset($_POST['cancel'])) {
             $this->loadSpool($group);
-            $ndx = Banana::$spool->getNdX($id) - 1;
             if (!Banana::$protocole->cancel($msg)) {
                 return _b_('Une erreur s\'est produite lors de l\'annulation du message :') . '<br />'
                        . Banana::$protocole->lastError();
             }
-            if ($ndx < 50) {
-                 $ndx = 0;
-            }
             $this->removeMessage($group, $artid);
-            Banana::$page->redirect(Array('group' => $group, 'first' => $ndx));
+            Banana::$page->redirect(Array('group' => $group));
         }
 
         Banana::$page->assign_by_ref('message', $msg);
@@ -677,25 +680,7 @@ class Banana
     {
         Banana::load('spool');
         if (!Banana::$spool || Banana::$spool->group != $group) {
-            $clean = false;
-            if (php_sapi_name() != 'cli') {
-                if ($group == @$_SESSION['banana_group'] && isset($_SESSION['banana_spool'])) {
-                    Banana::$spool =& $_SESSION['banana_spool'];
-                    $clean = @(Banana::$profile['lastnews'] != $_SESSION['banana_lastnews']);
-                } else {
-                    unset($_SESSION['banana_message']);
-                    unset($_SESSION['banana_artid']);
-                    unset($_SESSION['banana_showhdr']);
-                }
-            }
-            BananaSpool::getSpool($group, Banana::$profile['lastnews'], Banana::$profile['autoup'] || $clean);
-            if (php_sapi_name() != 'cli') {
-                $_SESSION['banana_group'] = $group;
-                if (!Banana::$profile['display']) {
-                    $_SESSION['banana_spool'] =& Banana::$spool;
-                    $_SESSION['banana_lastnews'] = Banana::$profile['lastnews'];
-                }
-            }
+            BananaSpool::getSpool($group, Banana::$profile['lastnews'], Banana::$profile['autoup']);
             Banana::$spool->setMode(Banana::$profile['display'] ? Banana::SPOOL_UNREAD : Banana::SPOOL_ALL);
         }
         return true;
@@ -706,13 +691,13 @@ class Banana
         Banana::load('message');
         if ($group == @$_SESSION['banana_group'] && $artid == @$_SESSION['banana_artid']
             && isset($_SESSION['banana_message'])) {
-            $message =& $_SESSION['banana_message'];
+            $message = unserialize($_SESSION['banana_message']);
             Banana::$msgshow_headers = $_SESSION['banana_showhdr'];
         }  else {
             $message = Banana::$protocole->getMessage($artid);
             $_SESSION['banana_group'] = $group;
             $_SESSION['banana_artid'] = $artid;
-            $_SESSION['banana_message'] =& $message;
+            $_SESSION['banana_message'] = serialize($message);
             $_SESSION['banana_showhdr'] = Banana::$msgshow_headers;
         }
         Banana::$message =& $message;
@@ -724,7 +709,7 @@ class Banana
         Banana::$spool->delId($artid);
         if ($group == $_SESSION['banana_group']) {
             if (!Banana::$profile['display']) {
-                $_SESSION['banana_spool'] =& Banana::$spool;
+                $_SESSION['banana_spool'] = serialize(Banana::$spool);
             }
             if ($artid == $_SESSION['banana_artid']) {
                 unset($_SESSION['banana_message']);