Changeset 4044


Ignore:
Timestamp:
04/15/11 14:31:34 (13 years ago)
Author:
rafaelraymundo
Message:

Ticket #1726 - Corrigido problema na lentidao da abertura das mailboxes, r4038 r4039

File:
1 edited

Legend:

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

    r4025 r4044  
    100100        function get_range_msgs2($params) 
    101101        {  
    102                 $folder = $params['folder']; 
    103                 $msg_range_begin = $params['msg_range_begin']; 
    104                 $msg_range_end = $params['msg_range_end']; 
    105                 $sort_box_type = $params['sort_box_type']; 
    106                 $sort_box_reverse = $params['sort_box_reverse']; 
    107                 $search_box_type = $params['search_box_type'] != "ALL" && $params['search_box_type'] != "" ? $params['search_box_type'] : false; 
    108  
    109                 if(!$this->mbox || !is_resource($this->mbox)) 
     102                // Free others requests 
     103                session_write_close(); 
     104 
     105                $folder                         = $params['folder']; 
     106                $msg_range_begin        = $params['msg_range_begin']; 
     107                $msg_range_end          = $params['msg_range_end']; 
     108                $sort_box_type          = $params['sort_box_type']; 
     109                $sort_box_reverse       = $params['sort_box_reverse']; 
     110                $search_box_type        = $params['search_box_type'] != "ALL" && $params['search_box_type'] != "" ? $params['search_box_type'] : false; 
     111 
     112                if( !$this->mbox || !is_resource( $this->mbox ) ) 
    110113                        $this->mbox = $this->open_mbox($folder); 
    111                  
    112                 $return = array(); 
    113                  
    114                  if(!$search_box_type || $search_box_type=="UNSEEN" || $search_box_type=="SEEN") { 
    115                         $msgs_info = imap_mailboxmsginfo($this->mbox); 
    116  
    117                         $return['tot_unseen'] = $search_box_type == "SEEN" ? 0 : $msgs_info->Unread; 
    118  
    119                         $sort_array_msg = $this-> get_msgs($folder, $sort_box_type, $search_box_type, $sort_box_reverse,$msg_range_begin,$msg_range_end); 
    120  
    121                         $num_msgs = ($search_box_type=="UNSEEN") ? $msgs_info->Unread : (($search_box_type=="SEEN") ? ($msgs_info->Nmsgs - $msgs_info->Unread) : $msgs_info->Nmsgs); 
    122  
     114 
     115                // Correção para caixas acentuadas; 
     116                $name_folder = mb_convert_encoding($folder, "UTF7-IMAP","ISO_8859-1"); 
     117 
     118        $return = array(); 
     119        //Para enviar o offset entre o timezone definido pelo usuário e GMT 
     120        $return['offsetToGMT'] = $this->functions->CalculateDateOffset(); 
     121 
     122        $msgs_info   = imap_status( $this->mbox,"{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$name_folder ,SA_ALL ); 
     123        $num_msgs    = $msgs_info->messages; //imap_num_msg($this->mbox); 
     124 
     125        $sort_array_msg    = $this->get_msgs( $folder, $sort_box_type, $search_box_type, $sort_box_reverse, $msg_range_begin, $msg_range_end ); 
     126 
     127                // Total Msg Unseen 
     128        $return['tot_unseen']   = $msgs_info->unseen; 
     129 
     130                // Total Msg 
     131        $return['num_msgs']             = $msgs_info->messages; 
     132 
     133        if( is_array($sort_array_msg) ) 
     134        { 
    123135                        $i = 0; 
    124                         if(is_array($sort_array_msg)){ 
    125                                 foreach($sort_array_msg as $msg_number => $value) 
    126                                 { 
    127                                         $temp = $this->get_info_head_msg($msg_number); 
    128                                         if(!$temp) 
    129                                                 return false; 
    130  
    131                                         $return[$i] = $temp; 
    132                                         $i++; 
    133                                 } 
    134                         } 
    135                         $return['num_msgs'] =  $num_msgs; 
    136                 } 
    137                 else { 
    138                         $num_msgs = imap_num_msg($this->mbox); 
    139                         $sort_array_msg = $this-> get_msgs($folder, $sort_box_type, $search_box_type, $sort_box_reverse,$msg_range_begin,$num_msgs); 
    140  
    141  
    142                         $return['tot_unseen'] = 0; 
    143                         $i = 0; 
    144  
    145                         if(is_array($sort_array_msg)){ 
    146                                 foreach($sort_array_msg as $msg_number => $value) 
    147                                 { 
    148                                         $temp = $this->get_info_head_msg($msg_number); 
    149                                         if(!$temp) 
    150                                                 return false; 
    151  
    152                                         if($temp['Unseen'] == 'U' || $temp['Recent'] == 'N'){ 
    153                                                 $return['tot_unseen']++; 
    154                                         } 
    155                                  
    156                                         if($i <= ($msg_range_end-$msg_range_begin)) 
    157                                                 $return[$i] = $temp; 
    158                                         $i++; 
    159                                 } 
    160                         } 
    161                         $return['num_msgs'] = count($sort_array_msg)+($msg_range_begin-1); 
    162                 } 
    163                         return $return; 
    164         } 
    165  
    166         function get_info_head_msg($msg_number) { 
     136 
     137            foreach($sort_array_msg as $msg_number => $value) 
     138            { 
     139                $temp = $this->get_info_head_msg($msg_number); 
     140 
     141                if(!$temp) 
     142                    return false; 
     143 
     144                if($i <= ($msg_range_end-$msg_range_begin)) 
     145                    $return[$i] = $temp; 
     146 
     147                $i++; 
     148            } 
     149        } 
     150 
     151        return $return; 
     152    } 
     153 
     154        function get_info_head_msg($msg_number) 
     155        { 
    167156                $head_array = array(); 
    168157                include_once("class.imap_attachment.inc.php"); 
Note: See TracChangeset for help on using the changeset viewer.