source: sandbox/webservice/api/rest/mail/MessagesResource.php @ 7489

Revision 7489, 6.3 KB checked in by alexandrecorreia, 11 years ago (diff)

Ticket #2507 - Emparelhando os codigos do servidor de produção com o sandbox.

RevLine 
[6165]1<?php
2
3class MessagesResource extends MailAdapter {   
4        public function post($request){
5                // to Receive POST Params (use $this->params)
6                parent::post($request);
[6701]7                $imap_msgs = null;
8                $all_msgs = array();
[6165]9               
10                if($this-> isLoggedIn())
11                {                                       
12
13                        if($this->getParam('folderID') && $this->getParam('msgID') > 0) {
14                                $msg = $this->getMessage();
15                                if(!$msg){
16                                        Errors::runException("MAIL_MESSAGE_NOT_FOUND", $this->getParam('folderID'));
17                                }
18                                else{
19                                        $result = array ('messages' => array($msg));
20                                        $this->setResult($result) ;
21                                        return $this->getResponse();
22                                }
23                        }
24       
[6701]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');
[7480]35                                                        $folder = mb_convert_encoding($folder, 'UTF7-IMAP','UTF-8');
[6701]36                                                        $condition[] = "$folder##ALL <=>".$this->getParam('search')."##";
37                                                }
38                                        }
39
40                                        $params = array(
41                                                        'condition' => implode(",",$condition),                                                 
[7489]42                                                        'page'          => (intval($this->getParam('page') ? $this->getParam('page') : "1"))-1,
[6701]43                                                        'sort_type' => "SORTDATE"
44                                                );
45
46                                        $this->getImap()->prefs['preview_msg_subject'] = "1";
[7489]47                                        error_log(serialize($params));
[6701]48                                        $imap_msgs = $this->getImap()->search_msg($params);
49
50                                        if($imap_msgs['num_msgs'] > 0) {
51                                                foreach($imap_msgs['data'] as $imap_msg) {
52                                                        $msg = array();
53                                                        $msg['msgID'] = $imap_msg['uid'];
[7489]54                                                        $msg['folderID'] = mb_convert_encoding($imap_msg['boxname'],'UTF-8','ISO-8859-1');
[6701]55                                                        $msg['msgDate'] = $imap_msg['udate']." 00:00";
56                                                        $msg['msgSubject'] = mb_convert_encoding($imap_msg['subject'],"UTF8", "ISO_8859-1");
57                                                        $msg['msgSize'] = $imap_msg['size'];
58                                                        $msg['msgFrom'] = array('fullName' => mb_convert_encoding($imap_msg['from'],"UTF8", "ISO_8859-1"), 'mailAddress' => "");                                                       
59                                                        $msg['msgFlagged']      = strpos($imap_msg['flag'],"F") !== false ? "1" : "0";
60                                                        $msg['msgSeen']         = strpos($imap_msg['flag'],"U") !== false ? "0" : "1";
61                                                        $msg['msgHasAttachments'] = strpos($imap_msg['flag'],"T") !== false ? "1" : "0";                                                       
62                                                        $msg['msgForwarded'] = (strpos($imap_msg['flag'],"A") !== false && strpos($imap_msg['flag'],"X") !== false) ? "1" : "0";
63                                                        $msg['msgAnswered'] = $msg['msgForwarded'] != "1" && strpos($imap_msg['flag'],"A") !== false  ? "1" : "0";
64                                                        $msg['msgDraft']        = $msg['msgForwarded'] != "1" && strpos($imap_msg['flag'],"X") !== false ? "1" : "0";
65                                                        //$msg['msgTo'] = array();
66                                                        //$msg['ContentType']   = "";
67                                                        //$msg['msgBodyResume'] = "";
68                                                        $all_msgs[] = $msg;
69                                                }
70                                        }
71
72                                }
73                                else{
[7489]74                                        // TODO: Implementar a pesquisa de mensagens para verso 2.4
[6701]75                                }
76                        }
77                        else{
[7489]78                                $max_email_per_page = intval($this->getParam('resultsPerPage') ? $this->getParam('resultsPerPage') :
79                                        $this->getImap()->prefs['max_email_per_page']);
80       
[6701]81                                $current_page = intval($this->getParam('page') ? $this->getParam('page') : 1);
[6165]82       
[6701]83                                $msg_range_begin = ($max_email_per_page * ($current_page - 1)) + 1;
84                                $msg_range_end = $msg_range_begin + ($max_email_per_page  - 1);
[6165]85       
[6701]86                                $this->getImap()->prefs['preview_msg_subject'] = "1";
[7489]87
[6701]88                                $imap_msgs = $this->getImap()-> get_range_msgs2(
[6165]89                                        array(  "folder"                        => $this->getParam('folderID'),
90                                                        "msg_range_begin"       => $msg_range_begin,
91                                                        "msg_range_end"         => $msg_range_end,
92                                                        "search_box_type"       => "ALL",
93                                                        "sort_box_reverse"      => "1",
94                                                        "sort_box_type"         => "SORTARRIVAL"
95                                        ));
[6701]96                                if(!$imap_msgs){
97                                        return $this->getResponse();
[6247]98                                }
[7489]99
100                                $folderID = mb_convert_encoding($this->getParam('folderID'), 'UTF-8','ISO-8859-1');
101
[6701]102                                foreach($imap_msgs as $i => $imap_msg) {
103                                        if(!is_int($i)) {
104                                                continue;
105                                        }
[7489]106                                       
[6701]107                                        $msg = array();
108                                        $msg['msgID'] = $imap_msg['msg_number'];
[7489]109                                        $msg['folderID'] = $folderID;
110
[6701]111                                        $msg['msgDate'] = gmdate('d/m/Y H:i', $imap_msg['timestamp']);
112                                        $msg['msgFrom']['fullName'] = mb_convert_encoding($imap_msg['from']['name'],"UTF8", "ISO_8859-1");
113                                        $msg['msgFrom']['mailAddress'] = $imap_msg['from']['email'];
114                                        $msg['msgTo'] = array();
115                                        if($this->getExpressoVersion() != "2.2") {
116                                                foreach($imap_msg['to'] as $to){
117                                                        $msg['msgTo'][] = array('fullName' => mb_convert_encoding($to['name'],"UTF8", "ISO_8859-1"), 'mailAddress' => $to['email']);
118                                                }
119                                        }else{
120                                                $msg['msgTo'][] = array('fullName' => mb_convert_encoding($to['name'],"UTF8", "ISO_8859-1"), 'mailAddress' => $imap_msg['to']['email']);
121                                        }
122                                        $msg['msgReplyTo'][0] = $this->formatMailObject($imap_msg['reply_toaddress']);
123                                        $msg['msgSubject']  = mb_convert_encoding($imap_msg['subject'],"UTF8", "ISO_8859-1");
[6165]124       
[6701]125                                        if($this->getExpressoVersion() != "2.2") {
126                                                $msg['msgHasAttachments'] = $imap_msg['attachment'] ? "1" : "0";
127                                        }
128                                        else{
129                                                $msg['msgHasAttachments'] = $imap_msg['attachment']['number_attachments'] ? "1" : "0";
130                                        }
[6165]131       
[6701]132                                        $msg['msgFlagged']      = $imap_msg['Flagged'] == "F" ? "1" : "0";
133                                        $msg['msgForwarded']= $imap_msg['Forwarded'] == "F" ? "1" : "0";
134                                        $msg['msgAnswered'] = $imap_msg['Answered'] == "A" ? "1" : "0";
135                                        $msg['msgDraft']        = $imap_msg['Draft'] == "X" ? "1" : "0";
136                                        $msg['msgSeen']         = $imap_msg['Unseen'] == "U" ? "0" : "1";
[6165]137       
[6701]138                                        $msg['ContentType']     = $imap_msg['ContentType'];
139                                        $msg['msgSize']         = $imap_msg['Size'];
[6165]140       
[6701]141                                        $msg['msgBodyResume'] = $imap_msg['msg_sample']['body'];
142       
143                                        if($this->getExpressoVersion() != "2.2") {
144                                                $msg['msgBodyResume'] =  base64_decode($msg['msgBodyResume']);
145                                        }
146
147                                        $msg['msgBodyResume'] = substr($msg['msgBodyResume'], 2);
148                                        $msg['msgBodyResume'] = str_replace("\r\n", "", $msg['msgBodyResume']);
149                                        $msg['msgBodyResume'] = str_replace(chr(160)," ", $msg['msgBodyResume']);
150                                        $msg['msgBodyResume'] = preg_replace('/\s\s+/', '', $msg['msgBodyResume']);
151                                        $msg['msgBodyResume'] = mb_convert_encoding($msg['msgBodyResume'],"UTF8", "ISO_8859-1");
152
153                                        $all_msgs[] = $msg;
154                                }
[6165]155                        }
156                }
157                $result = array (
158                                'messages'        => $all_msgs,
[6701]159                                'timeZone'        => $imap_msgs['offsetToGMT'] ? $imap_msgs['offsetToGMT'] : "",
160                                'totalUnseen' => $imap_msgs['tot_unseen'] ? $imap_msgs['tot_unseen'] : ""
[6165]161                );
162                       
163                $this->setResult($result);     
164               
165                //      to Send Response (JSON RPC format)
166                return $this->getResponse();           
167        }
[7489]168}
Note: See TracBrowser for help on using the repository browser.