summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2006-08-02 22:05:42 +0000
committerthomascube <thomas@roundcube.net>2006-08-02 22:05:42 +0000
commitc4e7e4f8221f7eb229c1186729424e9ce6ccee16 (patch)
tree65312a4dbe776b851e5f6b570807815563b41901
parent06417b8491dfcc83cc506fb035ec026edddf95d0 (diff)
Message sorting: added patch by Eric; fixed check-for-recent confusion
-rw-r--r--program/include/rcube_imap.inc39
-rw-r--r--program/steps/mail/check_recent.inc6
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);
}