Changeset 6171


Ignore:
Timestamp:
05/14/12 12:29:34 (12 years ago)
Author:
cristiano
Message:

Ticket #2314 - Reutilização da conexão IMAP

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/inc/class.imap_functions.inc.php

    r6134 r6171  
    2929        var $ldap; 
    3030        var $mbox; 
    31         var $mboxFolder; 
     31    var $mboxFolder; 
    3232        var $imap_port; 
    3333        var $has_cid; 
     
    3939        var $rawMessage; 
    4040        var $folders; 
    41         var $cache = false; 
    42         var $useCache = false; 
    43         var $expirationCache = false; 
     41        var $cache = false; 
     42        var $useCache = false; 
     43        var $expirationCache = false; 
     44 
    4445         
    4546        function imap_functions (){ 
     
    8485        // BEGIN of functions. 
    8586        function open_mbox( $folder = false, $force_die = true) 
    86         { 
    87             $this->mboxFolder =  mb_convert_encoding($folder, 'UTF7-IMAP','UTF-8, ISO-8859-1, UTF7-IMAP'); 
     87        {        
     88                        $newFolder = mb_convert_encoding($folder, 'UTF7-IMAP','UTF-8, ISO-8859-1, UTF7-IMAP'); 
     89                 
     90                        if($newFolder ===  $this->mboxFolder && is_resource( $this->mbox )) 
     91                                return $this->mbox; 
     92                         
     93            $this->mboxFolder =  $newFolder; 
    8894            $url = '{'.$this->imap_server.":".$this->imap_port.$this->imap_options.'}'.$this->mboxFolder; 
    8995             
     
    48924898                                $return['msgs'][$i]['from'] = ''; 
    48934899                                 
    4894                                 $from = $msg->from[0]->mailbox; 
    4895                                 if($msg->from[0]->personal != "") 
    4896                                         $from = $msg->from[0]->personal; 
    4897                                 $return['msgs'][$i]['from']     = mb_convert_encoding($this->decode_string($from), 'UTF-8');  
     4900                                if(isset($msg->from[0])) 
     4901                                { 
     4902                                        $from = self::formatMailObject( $msg->from[0] ); 
     4903                                        $return['msgs'][$i]['from']     = mb_convert_encoding($from['name'] ? $from['name'] : $from['email'], 'UTF-8'); 
     4904                                } 
     4905                                else 
     4906                                        $return['msgs'][$i]['from']     = '';  
    48984907                                 
    48994908                                $return['msgs'][$i]['subject'] = ' '; 
     
    49054914                                $filter = array('AND', array('=', 'folderName', $folder), array('=','messageNumber', $v)); 
    49064915                                $followupflagged = Controller::find( 
    4907                                         array('concept' => 'followupflagged'), 
     4916                                        array('concept' => 'followupflagged' , 'folder' => $folder ), 
    49084917                                        false,  
    49094918                                        array('filter' => $filter, 'criteria' => array('deepness' => '2')) 
     
    49224931                                        array('filter' => $filter, 'criteria' => array('deepness' => '2')) 
    49234932                                ); 
     4933                                if(is_array($labeleds)) 
    49244934                                foreach ($labeleds as $e){ 
    49254935                                        $labels = Controller::read( array( 'concept' => 'label', 'id' =>  $e['labelId']));      
  • trunk/prototype/modules/mail/interceptors/Helpers.php

    r6100 r6171  
    5757 
    5858                        $list = array(); 
     59                        if(is_array($labels)) 
    5960                        foreach ($labels as $label) 
    6061                                $list[] = $label['id']; 
     
    289290                 */ 
    290291                $merge_result = array (); 
     292                if(is_array($imap_result)) 
    291293                foreach ($imap_result as $j => $ir) { 
    292294                 
     
    342344                 * que o banco conheça 
    343345                 */ 
     346                 
     347                $folder = isset($uri['folder']) ? $uri['folder'] : 'INBOX'; 
     348 
    344349                if (self::in_arrayr('messageNumber', $criteria) || self::in_arrayr('folderName', $criteria)) { 
    345                         $result = Controller::find(array('concept' => 'message'), array('messageId'), array('filter' => $criteria['filter'])); 
     350                        $result = Controller::find(array('concept' => 'message' , 'folder' =>  $folder), array('messageId'), array('filter' => $criteria['filter'])); 
    346351                        $idList = array(); 
    347352                        foreach ($result as $message) 
  • trunk/prototype/services/ImapServiceAdapter.php

    r6132 r6171  
    6666        {  
    6767         
    68                 $context = $justthese['context']; 
    69                 $URI = $URI['concept']; 
    70  
    71                 switch( $URI ) 
     68                $context = isset($justthese['context']) ? $justthese['context'] : '' ; 
     69 
     70                switch( $URI['concept'] ) 
    7271                { 
    7372                        case 'folder': 
     
    9089                        { 
    9190                                //begin: for grid        
    92                                 $page  = $criteria['page']; //{1}    get the requested page 
    93                                 $limit = $criteria['rows']; //{10}   get how many rows we want to have into the grid 
    94                                 $sidx  = $criteria['sidx']; //{id}   get index row - i.e. user click to sort 
    95                                 $sord  = $criteria['sord']; //{desc} get the direction 
     91                                $page  = isset($criteria['page']) ? $criteria['page'] : 1 ; //{1}    get the requested page 
     92                                $limit = isset($criteria['rows']) ? $criteria['rows'] : 10 ; //{10}   get how many rows we want to have into the grid 
     93                                $sidx  = isset($criteria['sidx']) ? $criteria['sidx'] : 0; //{id}   get index row - i.e. user click to sort 
     94                                $sord  = isset($criteria['sord']) ? $criteria['sord'] : ''; //{desc} get the direction 
    9695 
    9796                                $filter = $criteria['filter']; 
     
    9998                                if( !$sidx ) $sidx = 1; 
    10099 
    101                                 $folder_name = str_replace( '.', $this->imap_delimiter, $context['folder'] ); 
    102                                  
     100                                $folder_name =  isset($URI['folder']) ?  $URI['folder'] : str_replace( '.', $this->imap_delimiter, $context ); 
     101                         
    103102                                $count = imap_num_msg( $this->open_mbox( $folder_name ) ); 
    104103 
     
    150149                                                        $headers = imap_fetch_overview($this->mbox, $messages, $sequenceType); 
    151150                                                        foreach ($headers as $h) { 
    152                                                                 $result[] = array ( 'messageId' => $h->message_id ); 
     151                                                                if(isset($h->message_id )) 
     152                                                                        $result[] = array ( 'messageId' => $h->message_id ); 
    153153                                                        } 
    154                                                                                                                  
    155                                                         imap_close($this->mbox); 
    156                                                         $this->mbox = false; 
     154         
    157155                                                } 
    158156                                                return $result; 
     
    298296                                                        } 
    299297                                                } 
    300                                                  
    301                                                 imap_close($this->mbox); 
    302                                                 $this->mbox = false; 
     298 
    303299                                        } 
    304300                                } 
     
    363359                                         * passados no filtro, se houverem. 
    364360                                         */ 
    365                                         if (!empty($map['messageNumber'])) { 
     361                                        if (!empty($map['messageNumber']) && is_array($messages)) { 
     362                                                                                                 
    366363                                                foreach ($messages as $k => $m) 
    367364                                                        if (!in_array($m, $map['messageNumber'])) 
     
    372369                                         * Adicionar demais atributos às mensagens para retorno 
    373370                                         */ 
    374  
     371                                        if(is_array($messages)) 
    375372                                        foreach ($messages as $k => $m) { 
    376373                                                $headers = imap_fetch_overview($this->mbox, $m, FT_UID); 
     
    383380                                        } 
    384381 
    385                                         imap_close($this->mbox); 
    386                                         $this->mbox = false; 
    387382                                         
    388383                                        /** 
     
    394389                                } 
    395390                                 
    396                                 if ($this->mbox) { 
    397                                         imap_close($this->mbox); 
    398                                         $this->mbox = false; 
    399                                 } 
    400391 
    401392                                return $result; 
     
    440431                                                ); 
    441432                                        } 
    442                                         imap_close($this->mbox); 
    443                                         $this->mbox = false; 
     433 
    444434                                } 
    445435                                 
     
    474464                                                ); 
    475465                                        } 
    476                                          
    477                                         imap_close($this->mbox); 
    478                                         $this->mbox = false; 
    479466                                 
    480467                                } else { 
     
    511498                                                        break; 
    512499                                                } 
    513                                                  
    514                                                 imap_close($this->mbox); 
    515                                                 $this->mbox = false; 
    516                                         } 
    517                                 } 
    518                                  
    519                                 if ($this->mbox) { 
    520                                         imap_close($this->mbox); 
    521                                         $this->mbox = false; 
    522                                 } 
     500         
     501                                        } 
     502                                } 
     503                                 
    523504                                 
    524505                                return $result; 
     
    537518                                        imap_setflag_full($this->mbox, $data['messageNumber'], '$Label' . $data['labelId'], ST_UID); 
    538519 
    539                                         imap_close($this->mbox); 
    540                                         $this->mbox = false; 
    541  
    542520                                        return array ('id' => $data['folderName'].'/'.$data['messageNumber'].'#'.$data['labelId']); 
    543521                                } 
     
    557535                                        $data['messageId'] = $headers[0]->message_id; 
    558536                                                         
    559                                         imap_close($this->mbox); 
    560                                         $this->mbox = false; 
    561537 
    562538                                        return ($s) ? $data : array(); 
     
    583559                                                         
    584560                                                        $s = imap_setflag_full($this->mbox, $messages[0], '$Followupflagged', ST_UID); 
    585                                                          
    586                                                         imap_close($this->mbox); 
    587                                                         $this->mbox = false; 
    588                                                          
     561                                                 
    589562                                                        /** 
    590563                                                         * Stop searching in all folders 
     
    593566                                                } 
    594567                                                 
    595                                                 imap_close($this->mbox); 
    596                                                 $this->mbox = false; 
    597568                                        } 
    598569                                } 
     
    702673                                } 
    703674 
    704                                 if($mbox_stream) imap_close($mbox_stream); 
    705  
    706675                                return $return; 
    707676                        } 
     
    723692                                        imap_clearflag_full($this->mbox, $messageNumber, '$Label' . $labelId, ST_UID); 
    724693 
    725                                         imap_close($this->mbox); 
    726                                         $this->mbox = false; 
    727694                                } 
    728695                        } 
     
    791758                                        } 
    792759 
    793                                         imap_close($this->mbox); 
    794                                         $this->mbox = false; 
    795                                          
    796760                                        /** 
    797761                                         * Se é uma busca por messageId e todos os messageIds foram econstrados: 
  • trunk/prototype/services/iCal.php

    r6094 r6171  
    102102                                        { 
    103103                                                $alarms = (isset($participants[$ii]['alarms'])) ? $participants[$ii]['alarms'] : Controller::find(array('concept' => 'alarm'), null, array('filter' => array('AND', array('=', 'participant', $vv['id']), array('=', 'schedulable', $v['id'])))); 
    104                                                 self::createAlarms($alarms, $vevent); 
     104                                                if(is_array($alarms)) 
     105                                                        self::createAlarms($alarms, $vevent); 
    105106                                        } 
    106107                                 
     
    123124        } 
    124125 
     126         
    125127        return $ical->createCalendar(); 
    126128    } 
Note: See TracChangeset for help on using the changeset viewer.