diff options
author | alecpl <alec@alec.pl> | 2010-10-18 18:01:10 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2010-10-18 18:01:10 +0000 |
commit | f13baaf67cd67651f3fb5de29d62618d8522a702 (patch) | |
tree | 3e8f3a74e689820d8b58f6d140acfd30796119d7 /program/include | |
parent | 98f2c93209dfb6277502ec0f29d5128e139cf0ff (diff) |
- Fix regression in rcube_imap::_threadcount() which was the reason
why mailbox_status() returned always "1" for folders with enabled threading
Diffstat (limited to 'program/include')
-rw-r--r-- | program/include/rcube_imap.php | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php index b78639229..cd0ac200d 100644 --- a/program/include/rcube_imap.php +++ b/program/include/rcube_imap.php @@ -585,18 +585,22 @@ class rcube_imap */ private function _threadcount($mailbox, &$msg_count) { - if (!empty($this->icache['threads'])) + if (!empty($this->icache['threads'])) { + $msg_count = count($this->icache['threads']['depth']); return count($this->icache['threads']['tree']); + } - if (is_array($result = $this->_fetch_threads($mailbox))) + if (is_array($result = $this->_fetch_threads($mailbox))) { $thread_tree = array_shift($result); + $msg_count = count($result[0]); + } // list ($thread_tree, $msg_depth, $has_children) = $result; // $this->update_thread_cache($mailbox, $thread_tree, $msg_depth, $has_children); return count($thread_tree); } - + /** * Public method for listing headers * convert mailbox name with root dir first @@ -615,7 +619,7 @@ class rcube_imap return $this->_list_headers($mailbox, $page, $sort_field, $sort_order, false, $slice); } - + /** * Private method for listing message headers * @@ -745,7 +749,7 @@ class rcube_imap return array_values($a_msg_headers); } - + /** * Private method for listing message headers using threads * @@ -1150,7 +1154,7 @@ class rcube_imap $for_create[] = $headers->uid; } - + if ($for_remove) $this->remove_message_cache($cache_key, $for_remove); |