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

Revision 6148, 3.4 KB checked in by niltonneto, 12 years ago (diff)

Ticket #2507 - Restruturado diretório para alinhamento com projeto REST.

  • Property svn:executable set to *
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                                        $error = Errors::get(Errors::MAIL_MESSAGE_NOT_FOUND, $this->getParam('folderID'));
15                                        throw new ResponseException($error['message'], $error['code']);
16                                }
17                                else{
18                                        $result = array ('messages' => array($msg));
19                                        $this->setResult($result) ;
20                                        return $this->getResponse();
21                                }
22                        }
23       
24                        $max_email_per_page = intval($this->getParam('resultsPerPage') ? $this->getParam('resultsPerPage') :
25                                        $this->getImap()->prefs['max_email_per_page']);
26       
27                        $current_page = intval($this->getParam('page') ? $this->getParam('page') : 1);
28       
29                        $msg_range_begin = ($max_email_per_page * ($current_page - 1)) + 1;
30                        $msg_range_end = $msg_range_begin + ($max_email_per_page  - 1);
31       
32                        $this->getImap()->prefs['preview_msg_subject'] = "1";
33       
34       
35                        $imap_msgs = $this->getImap()-> get_range_msgs2(
36                                        array(  "folder"                        => $this->getParam('folderID'),
37                                                        "msg_range_begin"       => $msg_range_begin,
38                                                        "msg_range_end"         => $msg_range_end,
39                                                        "search_box_type"       => "ALL",
40                                                        "sort_box_reverse"      => "1",
41                                                        "sort_box_type"         => "SORTARRIVAL"
42                                        ));
43                }
44                if(!$imap_msgs){
45                        return $this->getResponse();
46                }
47               
48                $all_msgs = array();
49       
50                foreach($imap_msgs as $i => $imap_msg) {
51                        if(!is_int($i)) {
52                                continue;
53                        }
54                        $msg = array();
55                        $msg['msgID'] = $imap_msg['msg_number'];
56                        $msg['folderID'] =  $imap_msgs['folder'];
57                        $msg['msgDate'] = gmdate('d/m/Y H:i', $imap_msg['timestamp']);
58                        $msg['msgFrom']['fullName'] = $imap_msg['from']['name'];
59                        $msg['msgFrom']['mailAddress'] = $imap_msg['from']['email'];
60                        $msg['msgTo'][0]['fullName'] = $imap_msg['to']['name'];
61                        $msg['msgTo'][0]['mailAddress'] = $imap_msg['to']['email'];
62                        $msg['msgReplyTo'][0] = $this->formatMailObject($imap_msg['reply_toaddress']);
63                        $msg['msgSubject']  = mb_convert_encoding($imap_msg['subject'],"UTF8", "ISO_8859-1");
64       
65                        $msg['msgHasAttachments'] = $imap_msg['attachment'] ? "1" : "0";
66       
67                        $msg['msgFlagged']      = $imap_msg['Flagged'] == "F" ? "1" : "0";
68                        $msg['msgForwarded']= $imap_msg['Forwarded'] == "F" ? "1" : "0";
69                        $msg['msgAnswered'] = $imap_msg['Answered'] == "A" ? "1" : "0";
70                        $msg['msgDraft']        = $imap_msg['Draft'] == "X" ? "1" : "0";
71                        $msg['msgSeen']         = $imap_msg['Unseen'] == "U" ? "0" : "1";
72       
73                        $msg['ContentType']     = $imap_msg['ContentType'];
74                        $msg['msgSize']         = $imap_msg['Size'];
75       
76                        $msg['msgBodyResume'] = $imap_msg['msg_sample']['body'];
77       
78                        if($this->expressoVersion != "2.2") {
79                                $msg['msgBodyResume'] =  base64_decode($msg['msgBodyResume']);
80                        }
81       
82                        $msg['msgBodyResume'] = substr($msg['msgBodyResume'], 2);
83                        $msg['msgBodyResume'] = str_replace("\r\n", "", $msg['msgBodyResume']);
84                        $msg['msgBodyResume'] = str_replace(chr(160)," ", $msg['msgBodyResume']);
85                        $msg['msgBodyResume'] = preg_replace('/\s\s+/', '', $msg['msgBodyResume']);
86                        $msg['msgBodyResume'] = mb_convert_encoding($msg['msgBodyResume'],"UTF8", "ISO_8859-1");
87       
88                        $all_msgs[] = $msg;
89                }
90                $result = array (
91                                'messages'        => $all_msgs,
92                                'timeZone'        => $imap_msgs['offsetToGMT'],
93                                'totalUnseen' => $imap_msgs['tot_unseen']
94                );
95                       
96                $this->setResult($result);     
97               
98                //      to Send Response (JSON RPC format)
99                return $this->getResponse();           
100        }
101}
Note: See TracBrowser for help on using the repository browser.