Changeset 6701


Ignore:
Timestamp:
07/03/12 10:48:36 (9 years ago)
Author:
niltonneto
Message:

Ticket #2507 - Implementada a pesquisa de mensagens para API do Expresso 2.2

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sandbox/webservice/api/rest/mail/MessagesResource.php

    r6604 r6701  
    55                // to Receive POST Params (use $this->params) 
    66                parent::post($request);  
     7                $imap_msgs = null; 
     8                $all_msgs = array(); 
    79                 
    810                if($this-> isLoggedIn())  
     
    2123                        } 
    2224         
    23                         $max_email_per_page = intval($this->getParam('resultsPerPage') ? $this->getParam('resultsPerPage') : 
     25                        elseif($this->getParam('search') != "") { 
     26                                $imap = $this->getImap(); 
     27                                $condition = array(); 
     28                                $imap_folders =  $imap->get_folders_list(); 
     29 
     30                                if($this->getExpressoVersion() == "2.2") { 
     31 
     32                                        foreach ($imap_folders as $i => $imap_folder) { 
     33                                                if(is_int($i)) { 
     34                                                        $folder = mb_convert_encoding($imap_folder['folder_id'],'UTF8','ISO-8859-1'); 
     35                                                        $condition[] = "$folder##ALL <=>".$this->getParam('search')."##"; 
     36                                                } 
     37                                        } 
     38 
     39                                        $params = array( 
     40                                                        'condition' => implode(",",$condition),                                                  
     41                                                        'page'          => intval($this->getParam('page') ? $this->getParam('page') : "0"), 
     42                                                        'sort_type' => "SORTDATE" 
     43                                                ); 
     44 
     45                                        $this->getImap()->prefs['preview_msg_subject'] = "1"; 
     46                                        $imap_msgs = $this->getImap()->search_msg($params); 
     47 
     48                                        if($imap_msgs['num_msgs'] > 0) { 
     49                                                foreach($imap_msgs['data'] as $imap_msg) { 
     50                                                        $msg = array(); 
     51                                                        $msg['msgID'] = $imap_msg['uid']; 
     52                                                        $msg['folderID'] = $imap_msg['boxname']; 
     53                                                        $msg['msgDate'] = $imap_msg['udate']." 00:00"; 
     54                                                        $msg['msgSubject'] = mb_convert_encoding($imap_msg['subject'],"UTF8", "ISO_8859-1"); 
     55                                                        $msg['msgSize'] = $imap_msg['size']; 
     56                                                        $msg['msgFrom'] = array('fullName' => mb_convert_encoding($imap_msg['from'],"UTF8", "ISO_8859-1"), 'mailAddress' => "");                                                         
     57                                                        $msg['msgFlagged']      = strpos($imap_msg['flag'],"F") !== false ? "1" : "0"; 
     58                                                        $msg['msgSeen']         = strpos($imap_msg['flag'],"U") !== false ? "0" : "1"; 
     59                                                        $msg['msgHasAttachments'] = strpos($imap_msg['flag'],"T") !== false ? "1" : "0";                                                         
     60                                                        $msg['msgForwarded'] = (strpos($imap_msg['flag'],"A") !== false && strpos($imap_msg['flag'],"X") !== false) ? "1" : "0"; 
     61                                                        $msg['msgAnswered'] = $msg['msgForwarded'] != "1" && strpos($imap_msg['flag'],"A") !== false  ? "1" : "0"; 
     62                                                        $msg['msgDraft']        = $msg['msgForwarded'] != "1" && strpos($imap_msg['flag'],"X") !== false ? "1" : "0"; 
     63                                                        //$msg['msgTo'] = array(); 
     64                                                        //$msg['ContentType']   = ""; 
     65                                                        //$msg['msgBodyResume'] = ""; 
     66                                                        $all_msgs[] = $msg; 
     67                                                } 
     68                                        } 
     69 
     70                                } 
     71                                else{ 
     72                                        // TODO: Implementar a pesquisa de mensagens para versão 2.4 
     73                                } 
     74                        } 
     75                        else{ 
     76                                $max_email_per_page = intval($this->getParam('resultsPerPage') ? $this->getParam('resultsPerPage') : 
    2477                                        $this->getImap()->prefs['max_email_per_page']); 
    2578         
    26                         $current_page = intval($this->getParam('page') ? $this->getParam('page') : 1); 
     79                                $current_page = intval($this->getParam('page') ? $this->getParam('page') : 1); 
    2780         
    28                         $msg_range_begin = ($max_email_per_page * ($current_page - 1)) + 1; 
    29                         $msg_range_end = $msg_range_begin + ($max_email_per_page  - 1); 
     81                                $msg_range_begin = ($max_email_per_page * ($current_page - 1)) + 1; 
     82                                $msg_range_end = $msg_range_begin + ($max_email_per_page  - 1); 
    3083         
    31                         $this->getImap()->prefs['preview_msg_subject'] = "1"; 
     84                                $this->getImap()->prefs['preview_msg_subject'] = "1"; 
    3285         
    3386         
    34                         $imap_msgs = $this->getImap()-> get_range_msgs2( 
     87                                $imap_msgs = $this->getImap()-> get_range_msgs2( 
    3588                                        array(  "folder"                        => $this->getParam('folderID'), 
    3689                                                        "msg_range_begin"       => $msg_range_begin, 
     
    4093                                                        "sort_box_type"         => "SORTARRIVAL" 
    4194                                        )); 
    42                 } 
    43                 if(!$imap_msgs){ 
    44                         return $this->getResponse(); 
    45                 } 
    46                  
    47                 $all_msgs = array(); 
     95                                if(!$imap_msgs){ 
     96                                        return $this->getResponse(); 
     97                                } 
    4898         
    49                 foreach($imap_msgs as $i => $imap_msg) { 
    50                         if(!is_int($i)) { 
    51                                 continue; 
     99                                foreach($imap_msgs as $i => $imap_msg) { 
     100                                        if(!is_int($i)) { 
     101                                                continue; 
     102                                        } 
     103                                        $msg = array(); 
     104                                        $msg['msgID'] = $imap_msg['msg_number']; 
     105                                        $msg['folderID'] =  $imap_msgs['folder']; 
     106                                        $msg['msgDate'] = gmdate('d/m/Y H:i', $imap_msg['timestamp']); 
     107                                        $msg['msgFrom']['fullName'] = mb_convert_encoding($imap_msg['from']['name'],"UTF8", "ISO_8859-1"); 
     108                                        $msg['msgFrom']['mailAddress'] = $imap_msg['from']['email']; 
     109                                        $msg['msgTo'] = array(); 
     110                                        if($this->getExpressoVersion() != "2.2") { 
     111                                                foreach($imap_msg['to'] as $to){ 
     112                                                        $msg['msgTo'][] = array('fullName' => mb_convert_encoding($to['name'],"UTF8", "ISO_8859-1"), 'mailAddress' => $to['email']); 
     113                                                } 
     114                                        }else{ 
     115                                                $msg['msgTo'][] = array('fullName' => mb_convert_encoding($to['name'],"UTF8", "ISO_8859-1"), 'mailAddress' => $imap_msg['to']['email']); 
     116                                        } 
     117                                        $msg['msgReplyTo'][0] = $this->formatMailObject($imap_msg['reply_toaddress']); 
     118                                        $msg['msgSubject']  = mb_convert_encoding($imap_msg['subject'],"UTF8", "ISO_8859-1"); 
     119         
     120                                        if($this->getExpressoVersion() != "2.2") { 
     121                                                $msg['msgHasAttachments'] = $imap_msg['attachment'] ? "1" : "0"; 
     122                                        } 
     123                                        else{ 
     124                                                $msg['msgHasAttachments'] = $imap_msg['attachment']['number_attachments'] ? "1" : "0"; 
     125                                        } 
     126         
     127                                        $msg['msgFlagged']      = $imap_msg['Flagged'] == "F" ? "1" : "0"; 
     128                                        $msg['msgForwarded']= $imap_msg['Forwarded'] == "F" ? "1" : "0"; 
     129                                        $msg['msgAnswered'] = $imap_msg['Answered'] == "A" ? "1" : "0"; 
     130                                        $msg['msgDraft']        = $imap_msg['Draft'] == "X" ? "1" : "0"; 
     131                                        $msg['msgSeen']         = $imap_msg['Unseen'] == "U" ? "0" : "1"; 
     132         
     133                                        $msg['ContentType']     = $imap_msg['ContentType']; 
     134                                        $msg['msgSize']         = $imap_msg['Size']; 
     135         
     136                                        $msg['msgBodyResume'] = $imap_msg['msg_sample']['body']; 
     137         
     138                                        if($this->getExpressoVersion() != "2.2") { 
     139                                                $msg['msgBodyResume'] =  base64_decode($msg['msgBodyResume']); 
     140                                        } 
     141 
     142                                        $msg['msgBodyResume'] = substr($msg['msgBodyResume'], 2); 
     143                                        $msg['msgBodyResume'] = str_replace("\r\n", "", $msg['msgBodyResume']); 
     144                                        $msg['msgBodyResume'] = str_replace(chr(160)," ", $msg['msgBodyResume']); 
     145                                        $msg['msgBodyResume'] = preg_replace('/\s\s+/', '', $msg['msgBodyResume']); 
     146                                        $msg['msgBodyResume'] = mb_convert_encoding($msg['msgBodyResume'],"UTF8", "ISO_8859-1"); 
     147 
     148                                        $all_msgs[] = $msg; 
     149                                } 
    52150                        } 
    53                         $msg = array(); 
    54                         $msg['msgID'] = $imap_msg['msg_number']; 
    55                         $msg['folderID'] =  $imap_msgs['folder']; 
    56                         $msg['msgDate'] = gmdate('d/m/Y H:i', $imap_msg['timestamp']); 
    57                         $msg['msgFrom']['fullName'] = mb_convert_encoding($imap_msg['from']['name'],"UTF8", "ISO_8859-1"); 
    58                         $msg['msgFrom']['mailAddress'] = $imap_msg['from']['email']; 
    59                         $msg['msgTo'] = array(); 
    60                         if($this->getExpressoVersion() != "2.2") { 
    61                                 foreach($imap_msg['to'] as $to){ 
    62                                         $msg['msgTo'][] = array('fullName' => mb_convert_encoding($to['name'],"UTF8", "ISO_8859-1"), 'mailAddress' => $to['email']); 
    63                                 } 
    64                         }else{ 
    65                                 $msg['msgTo'][] = array('fullName' => mb_convert_encoding($to['name'],"UTF8", "ISO_8859-1"), 'mailAddress' => $imap_msg['to']['email']); 
    66                         } 
    67                         $msg['msgReplyTo'][0] = $this->formatMailObject($imap_msg['reply_toaddress']); 
    68                         $msg['msgSubject']  = mb_convert_encoding($imap_msg['subject'],"UTF8", "ISO_8859-1"); 
    69          
    70                         if($this->getExpressoVersion() != "2.2") { 
    71                                 $msg['msgHasAttachments'] = $imap_msg['attachment'] ? "1" : "0"; 
    72                         } 
    73                         else{ 
    74                                 $msg['msgHasAttachments'] = $imap_msg['attachment']['number_attachments'] ? "1" : "0"; 
    75                         } 
    76          
    77                         $msg['msgFlagged']      = $imap_msg['Flagged'] == "F" ? "1" : "0"; 
    78                         $msg['msgForwarded']= $imap_msg['Forwarded'] == "F" ? "1" : "0"; 
    79                         $msg['msgAnswered'] = $imap_msg['Answered'] == "A" ? "1" : "0"; 
    80                         $msg['msgDraft']        = $imap_msg['Draft'] == "X" ? "1" : "0"; 
    81                         $msg['msgSeen']         = $imap_msg['Unseen'] == "U" ? "0" : "1"; 
    82          
    83                         $msg['ContentType']     = $imap_msg['ContentType']; 
    84                         $msg['msgSize']         = $imap_msg['Size']; 
    85          
    86                         $msg['msgBodyResume'] = $imap_msg['msg_sample']['body']; 
    87          
    88                         if($this->getExpressoVersion() != "2.2") { 
    89                                 $msg['msgBodyResume'] =  base64_decode($msg['msgBodyResume']); 
    90                         } 
    91          
    92                         $msg['msgBodyResume'] = substr($msg['msgBodyResume'], 2); 
    93                         $msg['msgBodyResume'] = str_replace("\r\n", "", $msg['msgBodyResume']); 
    94                         $msg['msgBodyResume'] = str_replace(chr(160)," ", $msg['msgBodyResume']); 
    95                         $msg['msgBodyResume'] = preg_replace('/\s\s+/', '', $msg['msgBodyResume']); 
    96                         $msg['msgBodyResume'] = mb_convert_encoding($msg['msgBodyResume'],"UTF8", "ISO_8859-1"); 
    97          
    98                         $all_msgs[] = $msg; 
    99151                } 
    100152                $result = array ( 
    101153                                'messages'        => $all_msgs, 
    102                                 'timeZone'        => $imap_msgs['offsetToGMT'], 
    103                                 'totalUnseen' => $imap_msgs['tot_unseen'] 
     154                                'timeZone'        => $imap_msgs['offsetToGMT'] ? $imap_msgs['offsetToGMT'] : "", 
     155                                'totalUnseen' => $imap_msgs['tot_unseen'] ? $imap_msgs['tot_unseen'] : "" 
    104156                ); 
    105157                         
Note: See TracChangeset for help on using the changeset viewer.