diff options
Diffstat (limited to 'program')
-rw-r--r-- | program/include/rcube_imap.inc | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/program/include/rcube_imap.inc b/program/include/rcube_imap.inc index e927dc799..8bbd9a2c5 100644 --- a/program/include/rcube_imap.inc +++ b/program/include/rcube_imap.inc @@ -297,11 +297,9 @@ class rcube_imap function _list_headers($mailbox='', $page=NULL, $sort_field='date', $sort_order='DESC') { $max = $this->_messagecount($mailbox /*, 'ALL', TRUE*/); - $a_out = array(); if (!strlen($mailbox)) - return $a_out; - + return array(); // get cached headers $a_msg_headers = $this->get_cache($mailbox.'.msg'); @@ -314,7 +312,8 @@ class rcube_imap $a_header_index = iil_C_FetchHeaders($this->conn, $mailbox, "1:$max"); $a_msg_headers = array(); foreach ($a_header_index as $i => $headers) - $a_msg_headers[$headers->uid] = $headers; + if (!$headers->deleted) + $a_msg_headers[$headers->uid] = $headers; // print "/**** fetch headers ****/\n"; } @@ -323,22 +322,19 @@ class rcube_imap // sort headers by a specific col $a_headers = iil_SortHeaders($a_msg_headers, $sort_field, $sort_order); - + // free memory + unset($a_msg_headers); + // write headers list to cache if (!$headers_cached) - $this->update_cache($mailbox.'.msg', $a_msg_headers); - - if (is_array($a_headers)) - foreach ($a_headers as $header) - if (!$header->deleted) - $a_out[] = $header; + $this->update_cache($mailbox.'.msg', $a_headers); // return complete list of messages if (strtolower($page)=='all') - return $a_out; - + return $a_headers; + $start_msg = ($this->list_page-1) * $this->page_size; - return array_slice($a_out, $start_msg, $this->page_size); + return array_slice($a_headers, $start_msg, $this->page_size); } |