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

Revision 6165, 3.3 KB checked in by niltonneto, 12 years ago (diff)

Ticket #2507 - Refatorado e centralizado tratamento de Erros.

Line 
1<?php
2
3class MessagesResource extends MailAdapter {   
4        public function post($request){
5                // to Receive POST Params (use $this->params)
6                parent::post($request);
7               
8                if($this-> isLoggedIn())
9                {                                       
10
11                        if($this->getParam('folderID') && $this->getParam('msgID') > 0) {
12                                $msg = $this->getMessage();
13                                if(!$msg){
14                                        Errors::runException("MAIL_MESSAGE_NOT_FOUND", $this->getParam('folderID'));
15                                }
16                                else{
17                                        $result = array ('messages' => array($msg));
18                                        $this->setResult($result) ;
19                                        return $this->getResponse();
20                                }
21                        }
22       
23                        $max_email_per_page = intval($this->getParam('resultsPerPage') ? $this->getParam('resultsPerPage') :
24                                        $this->getImap()->prefs['max_email_per_page']);
25       
26                        $current_page = intval($this->getParam('page') ? $this->getParam('page') : 1);
27       
28                        $msg_range_begin = ($max_email_per_page * ($current_page - 1)) + 1;
29                        $msg_range_end = $msg_range_begin + ($max_email_per_page  - 1);
30       
31                        $this->getImap()->prefs['preview_msg_subject'] = "1";
32       
33       
34                        $imap_msgs = $this->getImap()-> get_range_msgs2(
35                                        array(  "folder"                        => $this->getParam('folderID'),
36                                                        "msg_range_begin"       => $msg_range_begin,
37                                                        "msg_range_end"         => $msg_range_end,
38                                                        "search_box_type"       => "ALL",
39                                                        "sort_box_reverse"      => "1",
40                                                        "sort_box_type"         => "SORTARRIVAL"
41                                        ));
42                }
43                if(!$imap_msgs){
44                        return $this->getResponse();
45                }
46               
47                $all_msgs = array();
48       
49                foreach($imap_msgs as $i => $imap_msg) {
50                        if(!is_int($i)) {
51                                continue;
52                        }
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'] = $imap_msg['from']['name'];
58                        $msg['msgFrom']['mailAddress'] = $imap_msg['from']['email'];
59                        $msg['msgTo'][0]['fullName'] = $imap_msg['to']['name'];
60                        $msg['msgTo'][0]['mailAddress'] = $imap_msg['to']['email'];
61                        $msg['msgReplyTo'][0] = $this->formatMailObject($imap_msg['reply_toaddress']);
62                        $msg['msgSubject']  = mb_convert_encoding($imap_msg['subject'],"UTF8", "ISO_8859-1");
63       
64                        $msg['msgHasAttachments'] = $imap_msg['attachment'] ? "1" : "0";
65       
66                        $msg['msgFlagged']      = $imap_msg['Flagged'] == "F" ? "1" : "0";
67                        $msg['msgForwarded']= $imap_msg['Forwarded'] == "F" ? "1" : "0";
68                        $msg['msgAnswered'] = $imap_msg['Answered'] == "A" ? "1" : "0";
69                        $msg['msgDraft']        = $imap_msg['Draft'] == "X" ? "1" : "0";
70                        $msg['msgSeen']         = $imap_msg['Unseen'] == "U" ? "0" : "1";
71       
72                        $msg['ContentType']     = $imap_msg['ContentType'];
73                        $msg['msgSize']         = $imap_msg['Size'];
74       
75                        $msg['msgBodyResume'] = $imap_msg['msg_sample']['body'];
76       
77                        if($this->expressoVersion != "2.2") {
78                                $msg['msgBodyResume'] =  base64_decode($msg['msgBodyResume']);
79                        }
80       
81                        $msg['msgBodyResume'] = substr($msg['msgBodyResume'], 2);
82                        $msg['msgBodyResume'] = str_replace("\r\n", "", $msg['msgBodyResume']);
83                        $msg['msgBodyResume'] = str_replace(chr(160)," ", $msg['msgBodyResume']);
84                        $msg['msgBodyResume'] = preg_replace('/\s\s+/', '', $msg['msgBodyResume']);
85                        $msg['msgBodyResume'] = mb_convert_encoding($msg['msgBodyResume'],"UTF8", "ISO_8859-1");
86       
87                        $all_msgs[] = $msg;
88                }
89                $result = array (
90                                'messages'        => $all_msgs,
91                                'timeZone'        => $imap_msgs['offsetToGMT'],
92                                'totalUnseen' => $imap_msgs['tot_unseen']
93                );
94                       
95                $this->setResult($result);     
96               
97                //      to Send Response (JSON RPC format)
98                return $this->getResponse();           
99        }
100}
Note: See TracBrowser for help on using the repository browser.