Fix deletion of message from spool
[banana.git] / banana / spool.inc.php
index 505c2c1..172e4aa 100644 (file)
@@ -209,6 +209,9 @@ class BananaSpool
             $this->ids[$message['message-id']] = $id;
         }
 
+        if (!is_array($this->overview)) {
+            $this->overview = array();
+        }
         foreach ($messages as $id=>&$message) {
             if (!isset($this->overview[$id])) {
                 $this->overview[$id] = new BananaSpoolHead($message);
@@ -303,6 +306,9 @@ class BananaSpool
         if (is_null($array)) {
             $array =& $this->roots;
         }
+        if (!is_array($this->roots)) {
+            return;
+        }
         foreach ($array as $id) {
             if (!$this->overview[$id]->isread) {
                 $this->markAsRead($id);
@@ -358,11 +364,16 @@ class BananaSpool
             }
             unset($this->overview[$_id]);
             $msgid = array_search($_id, $this->ids);
-            if ($msgid) {
+            if ($msgid !== false) {
                 unset($this->ids[$msgid]);
             }
+            $msgid = array_search($_id, $this->roots);
+            if ($msgid !== false) {
+                unset($this->roots[$msgid]);
+            }
             
             if ($write) {
+                $this->markAllAsRead();
                 $this->saveToFile();
             }
         }
@@ -430,7 +441,7 @@ class BananaSpool
             if (function_exists('hook_formatDisplayHeader')) {
                 list($subject, $link) = hook_formatDisplayHeader('subject', $subject, true);
             } else {
-                $subject = banana_catchFormats(stripslashes($subject));
+                $subject = banana_catchFormats(banana_htmlentities(stripslashes($subject)));
                 $link = null;
             }
             if (empty($subject)) {