Changeset 1431 in subversion


Ignore:
Timestamp:
May 27, 2008 4:08:30 AM (5 years ago)
Author:
thomasb
Message:

iil_C_FetchHeaders does not always return the headers in the correct order -> sort them manually; improved rcube_header_sorter performance

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/roundcubemail/program/include/rcube_imap.php

    r1430 r1431  
    576576      // retrieve headers from IMAP 
    577577      if ($this->get_capability('sort') && ($msg_index = iil_C_Sort($this->conn, $mailbox, $this->sort_field, $this->skip_deleted ? 'UNDELETED' : ''))) 
    578         {         
    579         $mymsgidx = array_slice ($msg_index, $begin, $end-$begin, true); 
     578        { 
     579        $mymsgidx = array_slice ($msg_index, $begin, $end-$begin); 
    580580        $msgs = join(",", $mymsgidx); 
    581         $headers_sorted = true; 
    582581        } 
    583582      else 
     
    27902789   function set_sequence_numbers($seqnums) 
    27912790   { 
    2792       $this->sequence_numbers = $seqnums; 
     2791      $this->sequence_numbers = array_flip($seqnums); 
    27932792   } 
    27942793  
     
    28112810  
    28122811   /** 
    2813     * Get the position of a message sequence number in my sequence_numbers array 
    2814     * 
    2815     * @param int Message sequence number contained in sequence_numbers 
    2816     * @return int Position, -1 if not found 
    2817     */ 
    2818    function position_of($seqnum) 
    2819    { 
    2820       $pos = array_search($seqnum, $this->sequence_numbers); 
    2821       if ($pos === false) return -1; 
    2822       return $pos; 
    2823    } 
    2824   
    2825    /** 
    28262812    * Sort method called by uasort() 
    28272813    */ 
     
    28332819       
    28342820      // then find each sequence number in my ordered list 
    2835       $posa = $this->position_of($seqa); 
    2836       $posb = $this->position_of($seqb); 
     2821      $posa = isset($this->sequence_numbers[$seqa]) ? intval($this->sequence_numbers[$seqa]) : -1; 
     2822      $posb = isset($this->sequence_numbers[$seqb]) ? intval($this->sequence_numbers[$seqb]) : -1; 
    28372823       
    28382824      // return the relative position as the comparison value 
    2839       $ret = $posa - $posb; 
    2840       return $ret; 
     2825      return $posa - $posb; 
    28412826   } 
    28422827} 
Note: See TracChangeset for help on using the changeset viewer.