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

Revision 6019, 3.2 KB checked in by niltonneto, 12 years ago (diff)

Ticket #2507 - Modificada implementação para alinhamento com projeto de camada REST.

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