Hum, should avoid spool corruption when a message is canceled.
[banana.git] / banana / spool.inc.php
index b6355b8..86719f5 100644 (file)
@@ -344,7 +344,7 @@ class BananaSpool
      */
     public function &getTree($id)
     {
-        return BananaTree::build($id)->data;
+        return BananaTree::build($id)->show();
     }
 
     /** Mark the given id as read
@@ -352,12 +352,13 @@ class BananaSpool
      */
     public function markAsRead($id)
     {
-        if (!$this->overview[$id]->isread) {
-            $this->overview[$id]->isread = true;
+        $overview =& $this->overview[$id];
+        if (!$overview->isread) {
+            $overview->isread = true;
             $this->unreadnb--;
-            while (isset($id)) {
-                $this->overview[$id]->descunread--;
-                $id = $this->overview[$id]->parent;
+            while (!is_null($overview)) {
+                $overview->descunread--;
+                $overview =& $overview->parent;
             }
         }
     }
@@ -429,6 +430,7 @@ class BananaSpool
 
         // Remove from the message tree
         if (!is_null($parent)) {
+            $time = time();
             foreach ($parent->children as $key=>&$child) {
                 if ($child === $overview) {
                     unset($parent->children[$key]);
@@ -436,12 +438,12 @@ class BananaSpool
                 }
             }
             if (sizeof($overview->children)) {
-                $parent->children = array_merge($parent->children, $overview->children);
                 foreach ($overview->children as &$child) {
+                    $parent->children[] =& $child;
+                    $child->time   = $time;
                     $child->parent =& $parent;
                 }
             }
-            $time = time();
             while (!is_null($parent)) {
                 $parent->desc--;
                 $parent->time = $time;
@@ -499,7 +501,7 @@ class BananaSpool
         if (empty($subject)) {
             $subject = _b_('(pas de sujet)');
         }
-        if ($head->id != Banana::$artid) {
+        if ($head->id !== Banana::$artid) {
             $subject = Banana::$page->makeLink(Array('group' => $this->group, 'artid' => $head->id,
                                                      'text'  => $subject, 'popup' => $popup));
         }
@@ -526,37 +528,6 @@ class BananaSpool
         return Banana::$first ? Banana::$spool_tmax : Banana::$spool_tcontext;
     }
 
-
-    /** computes linear post index
-     * @param $_id INTEGER MSGNUM of post
-     * @return INTEGER linear index of post
-     */
-    public function getNdX($_id)
-    {
-        $ndx    = 1;
-        $id_cur = $_id;
-        while (true) {
-            $id_parent = $this->overview[$id_cur]->parent;
-            if (is_null($id_parent)) break;
-            $pos = array_search($id_cur, $this->overview[$id_parent]->children);
-
-            for ($i = 0; $i < $pos ; $i++) {
-                $ndx += $this->overview[$this->overview[$id_parent]->children[$i]]->desc;
-            }
-            $ndx++; //noeud père
-
-            $id_cur = $id_parent;
-        }
-
-        foreach ($this->roots as $i) {
-            if ($i==$id_cur) {
-                break;
-            }
-            $ndx += $this->overview[$i]->desc;
-        }
-        return $ndx;
-    }
-
     /** Return root message of the given thread
      * @param id INTEGER id of a message
      */