alecpl
2009-07-11 34ebe0ba2c726bc679778dfb9faf92b30f303494
- speed up adding of messages to the list after message move/delete


3 files modified
28 ■■■■ changed files
program/include/rcube_imap.php 13 ●●●● patch | view | raw | blame | history
program/steps/mail/mark.inc 7 ●●●● patch | view | raw | blame | history
program/steps/mail/move_del.inc 8 ●●●●● patch | view | raw | blame | history
program/include/rcube_imap.php
@@ -537,13 +537,14 @@
   * @param   int      Current page to list
   * @param   string   Header field to sort by
   * @param   string   Sort order [ASC|DESC]
   * @param   boolean  Number of slice items to extract from result array
   * @return  array    Indexed array with message header objects
   * @access  public   
   */
  function list_headers($mbox_name='', $page=NULL, $sort_field=NULL, $sort_order=NULL)
  function list_headers($mbox_name='', $page=NULL, $sort_field=NULL, $sort_order=NULL, $slice=0)
    {
    $mailbox = $mbox_name ? $this->mod_mailbox($mbox_name) : $this->mailbox;
    return $this->_list_headers($mailbox, $page, $sort_field, $sort_order);
    return $this->_list_headers($mailbox, $page, $sort_field, $sort_order, false, $slice);
    }
@@ -553,7 +554,7 @@
   * @access  private
   * @see     rcube_imap::list_headers
   */
  private function _list_headers($mailbox='', $page=NULL, $sort_field=NULL, $sort_order=NULL, $recursive=FALSE)
  private function _list_headers($mailbox='', $page=NULL, $sort_field=NULL, $sort_order=NULL, $recursive=FALSE, $slice=0)
    {
    if (!strlen($mailbox))
      return array();
@@ -591,6 +592,9 @@
      $max = max($msg_index);
      $msg_index = array_slice($msg_index, $begin, $end-$begin);
      if ($slice)
        $msg_index = array_slice($msg_index, ($this->sort_order == 'DESC' ? 0 : -$slice), $slice);
      // fetch reqested headers from server
      $this->_fetch_headers($mailbox, join(',', $msg_index), $a_msg_headers, $cache_key);
      }
@@ -607,6 +611,9 @@
      list($begin, $end) = $this->_get_message_range(count($msg_index), $page);
      $msg_index = array_slice($msg_index, $begin, $end-$begin);
      if ($slice)
        $msg_index = array_slice($msg_index, ($this->sort_order == 'DESC' ? 0 : -$slice), $slice);
      // fetch reqested headers from server
      $this->_fetch_headers($mailbox, join(",", $msg_index), $a_msg_headers, $cache_key);
      }
program/steps/mail/mark.inc
@@ -100,12 +100,9 @@
    $sort_col   = isset($_SESSION['sort_col'])   ? $_SESSION['sort_col']   : $CONFIG['message_sort_col'];
    $sort_order = isset($_SESSION['sort_order']) ? $_SESSION['sort_order'] : $CONFIG['message_sort_order'];
  
    $a_headers = $IMAP->list_headers($mbox, NULL, $sort_col, $sort_order);
    if (!$jump_back) {
          $a_headers = array_slice($a_headers, -$count, $count);
        }
    $a_headers = $IMAP->list_headers($mbox, NULL, $sort_col, $sort_order, $count);
      
      rcmail_js_message_list($a_headers, false, false);
        rcmail_js_message_list($a_headers, false, false);
      }
    }
  }
program/steps/mail/move_del.inc
@@ -115,11 +115,9 @@
  if ($addrows && ($jump_back || $nextpage_count > 0)) {
    $sort_col   = isset($_SESSION['sort_col'])   ? $_SESSION['sort_col']   : $CONFIG['message_sort_col'];
    $sort_order = isset($_SESSION['sort_order']) ? $_SESSION['sort_order'] : $CONFIG['message_sort_order'];
    $a_headers = $IMAP->list_headers($mbox, NULL, $sort_col, $sort_order);
    if (!$jump_back) {
        $a_headers = array_slice($a_headers, -$count, $count);
    }
    $a_headers = $IMAP->list_headers($mbox, NULL, $sort_col, $sort_order, $count);
    rcmail_js_message_list($a_headers, false, false);
  }
}