Ignore:
Timestamp:
04/28/11 11:39:37 (13 years ago)
Author:
rafaelraymundo
Message:

Ticket #1726 - Contagem de msgs em pasta acentuada sem degradar a performance. r4150

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2.0.1/expressoMail1_2/inc/class.imap_functions.inc.php

    r4158 r4162  
    102102                // Free others requests 
    103103                session_write_close(); 
     104                $folder = $params['folder']; 
     105                $msg_range_begin = $params['msg_range_begin']; 
     106                $msg_range_end = $params['msg_range_end']; 
     107                $sort_box_type = $params['sort_box_type']; 
     108                $sort_box_reverse = $params['sort_box_reverse']; 
     109                $search_box_type = $params['search_box_type'] != "ALL" && $params['search_box_type'] != "" ? $params['search_box_type'] : false; 
    104110 
    105111                $folder                         = $params['folder']; 
     
    113119                        $this->mbox = $this->open_mbox($folder); 
    114120 
    115                 // Correção para caixas acentuadas; 
    116                 $name_folder = mb_convert_encoding($folder, "UTF7-IMAP","ISO_8859-1"); 
    117  
    118121        $return = array(); 
    119  
    120         $return['folder'] = $folder; 
    121122 
    122123        //Para enviar o offset entre o timezone definido pelo usuário e GMT 
    123124        $return['offsetToGMT'] = $this->functions->CalculateDateOffset(); 
    124125 
    125         $msgs_info   = imap_status( $this->mbox,"{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$name_folder ,SA_ALL ); 
    126         $num_msgs    = $msgs_info->messages; //imap_num_msg($this->mbox); 
    127  
    128         $sort_array_msg    = $this->get_msgs( $folder, $sort_box_type, $search_box_type, $sort_box_reverse, $msg_range_begin, $msg_range_end ); 
    129  
    130                 // Total Msg Unseen 
    131         $return['tot_unseen']   = $msgs_info->unseen; 
    132  
    133                 // Total Msg 
    134         $return['num_msgs']             = $msgs_info->messages; 
    135  
    136         if( is_array($sort_array_msg) ) 
    137         { 
     126        if(!$search_box_type || $search_box_type=="UNSEEN" || $search_box_type=="SEEN") { 
     127                        $msgs_info = imap_status($this->mbox,"{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".mb_convert_encoding( $folder, "UTF7-IMAP", "ISO_8859-1" ) ,SA_ALL); 
     128 
     129 
     130                        $return['tot_unseen'] = $search_box_type == "SEEN" ? 0 : $msgs_info->unseen; 
     131 
     132                        $sort_array_msg = $this-> get_msgs($folder, $sort_box_type, $search_box_type, $sort_box_reverse,$msg_range_begin,$msg_range_end); 
     133 
     134                        $num_msgs = ($search_box_type=="UNSEEN") ? $msgs_info->unseen : (($search_box_type=="SEEN") ? ($msgs_info->messages - $msgs_info->unseen) : $msgs_info->messages); 
     135 
    138136                        $i = 0; 
    139  
    140             foreach($sort_array_msg as $msg_number => $value) 
    141             { 
    142                 $temp = $this->get_info_head_msg($msg_number); 
    143                 $temp['msg_sample'] = $this->get_msg_sample($msg_number,$folder); 
    144                 if(!$temp) 
    145                     return false; 
    146  
    147                 if($i <= ($msg_range_end-$msg_range_begin)) 
    148                     $return[$i] = $temp; 
    149  
    150                 $i++; 
    151             } 
    152         } 
    153  
    154         return $return; 
     137                        if(is_array($sort_array_msg)){ 
     138                                foreach($sort_array_msg as $msg_number => $value) 
     139                                { 
     140                                        $temp = $this->get_info_head_msg($msg_number); 
     141                                        if(!$temp) 
     142                                                return false; 
     143 
     144                                        $return[$i] = $temp; 
     145                                        $i++; 
     146                                } 
     147                        } 
     148                        $return['num_msgs'] =  $num_msgs; 
     149                } 
     150                else { 
     151                        $num_msgs = imap_num_msg($this->mbox); 
     152                        $sort_array_msg = $this-> get_msgs($folder, $sort_box_type, $search_box_type, $sort_box_reverse,$msg_range_begin,$num_msgs); 
     153 
     154 
     155                        $return['tot_unseen'] = 0; 
     156                        $i = 0; 
     157 
     158                        if(is_array($sort_array_msg)){ 
     159 
     160                            foreach($sort_array_msg as $msg_number => $value) 
     161                            { 
     162                                $temp = $this->get_info_head_msg($msg_number); 
     163                                if(!$temp) 
     164                                    return false; 
     165 
     166                                if($temp['Unseen'] == 'U' || $temp['Recent'] == 'N'){ 
     167                                                $return['tot_unseen']++; 
     168                                        } 
     169 
     170                                if($i <= ($msg_range_end-$msg_range_begin)) 
     171                                    $return[$i] = $temp; 
     172                                $i++; 
     173                            } 
     174                        } 
     175                        $return['num_msgs'] = count($sort_array_msg)+($msg_range_begin-1); 
     176                } 
     177                return $return; 
    155178    } 
    156179 
Note: See TracChangeset for help on using the changeset viewer.