thomascube
2006-08-02 c4e7e4f8221f7eb229c1186729424e9ce6ccee16
Message sorting: added patch by Eric; fixed check-for-recent confusion

2 files modified
45 ■■■■■ changed files
program/include/rcube_imap.inc 39 ●●●●● patch | view | raw | blame | history
program/steps/mail/check_recent.inc 6 ●●●● patch | view | raw | blame | history
program/include/rcube_imap.inc
@@ -516,32 +516,33 @@
      $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);
        $i = 0;
        for ($msg_seqnum = $begin; $msg_seqnum <= $end; $msg_seqnum++)
          $msg_index[$i++] = $msg_seqnum;
        }
      // 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);
        }
      // 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();
@@ -573,16 +574,6 @@
    return array_values($a_msg_headers);
    }
function gethdrids($hdr)
{
   return $hdr->uid . ',' . $hdr->id;
}
program/steps/mail/check_recent.inc
@@ -40,7 +40,11 @@
      // 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);
      }