From c4e7e4f8221f7eb229c1186729424e9ce6ccee16 Mon Sep 17 00:00:00 2001 From: thomascube Date: Wed, 2 Aug 2006 22:05:42 +0000 Subject: Message sorting: added patch by Eric; fixed check-for-recent confusion --- program/include/rcube_imap.inc | 39 ++++++++++++++----------------------- program/steps/mail/check_recent.inc | 6 +++++- 2 files changed, 20 insertions(+), 25 deletions(-) diff --git a/program/include/rcube_imap.inc b/program/include/rcube_imap.inc index 630d2fb8b..b37425769 100644 --- a/program/include/rcube_imap.inc +++ b/program/include/rcube_imap.inc @@ -516,32 +516,33 @@ class rcube_imap $a_msg_headers = $this->get_message_cache($cache_key, $start_msg, $start_msg+$this->page_size, $this->sort_field, $this->sort_order); $headers_sorted = TRUE; } + // cache is dirty, sync it + else if ($this->caching_enabled && $cache_status==-1 && !$recursive) + { + $this->sync_header_index($mailbox); + return $this->_list_headers($mailbox, $page, $this->sort_field, $this->sort_order, TRUE); + } else { - $sorter = new rcube_header_sorter(); - // retrieve headers from IMAP if ($this->get_capability('sort') && ($msg_index = iil_C_Sort($this->conn, $mailbox, $this->sort_field, $this->skip_deleted ? 'UNDELETED' : ''))) - { - $sorter->set_sequence_numbers($msg_index); - + { $msgs = $msg_index[$begin]; for ($i=$begin+1; $i < $end; $i++) $msgs = $msgs.','.$msg_index[$i]; } else { - $msgs = sprintf("%d:%d", $begin+1, $end); - } - + $msgs = sprintf("%d:%d", $begin+1, $end); - // cache is dirty, sync it - if ($this->caching_enabled && $cache_status==-1 && !$recursive) - { - $this->sync_header_index($mailbox); - return $this->_list_headers($mailbox, $page, $this->sort_field, $this->sort_order, TRUE); - } + $i = 0; + for ($msg_seqnum = $begin; $msg_seqnum <= $end; $msg_seqnum++) + $msg_index[$i++] = $msg_seqnum; + } + // use this class for message sorting + $sorter = new rcube_header_sorter(); + $sorter->set_sequence_numbers($msg_index); // fetch reuested headers from server $a_msg_headers = array(); @@ -576,16 +577,6 @@ class rcube_imap - - -function gethdrids($hdr) -{ - return $hdr->uid . ',' . $hdr->id; -} - - - - /** * Public method for listing a specific set of headers * convert mailbox name with root dir first diff --git a/program/steps/mail/check_recent.inc b/program/steps/mail/check_recent.inc index f949eb232..5846699e7 100644 --- a/program/steps/mail/check_recent.inc +++ b/program/steps/mail/check_recent.inc @@ -40,7 +40,11 @@ foreach ($a_mailboxes as $mbox_name) // add new message headers to list $a_headers = array(); for ($i=$recent_count, $id=$count-$recent_count+1; $i>0; $i--, $id++) - $a_headers[] = $IMAP->get_headers($id, NULL, FALSE); + { + $header = $IMAP->get_headers($id, NULL, FALSE); + if ($header->recent) + $a_headers[] = $header; + } $commands .= rcmail_js_message_list($a_headers, TRUE); } -- cgit v1.2.3