source: sandbox/webservice/api/adapters/MailAdapter.php @ 6499

Revision 6499, 10.0 KB checked in by niltonneto, 8 years ago (diff)

Ticket #2507 - Corrigido valor de retorno para string no array do anexo.

  • Property svn:executable set to *
Line 
1<?php
2
3class MailAdapter extends ExpressoAdapter {
4        protected $defaultFolders;
5        protected $imap;
6
7        protected function formatMailObject($str) {
8                $str = html_entity_decode($str);
9                $str = preg_replace('/[<>\'"]/', '', $str);
10                $return = array();           
11                if(preg_match('/[[:alnum:]\._\-]+@[[:alnum:]_\-\.]+/',$str, $matches1) &&
12                        preg_match('/[[:alnum:]\._\-\ ]+/',$str, $matches2)){                                       
13                        return array(                                               
14                        'fullName'        => mb_convert_encoding(str_replace($matches1[0],'', $str), "UTF8", "ISO_8859-1"),
15                                        'mailAddress' => $matches1[0]
16                                        );
17        }
18        else{                   
19                return array('mailAddress' => $str);           
20                }               
21    }
22   
23        protected function loadLang($lang_user){               
24                $fn = PHPGW_INCLUDE_ROOT."/expressoMail1_2/setup/phpgw_".$lang_user.'.lang';
25                if (file_exists($fn)){
26                        $fp = fopen($fn,'r');
27                        while ($data = fgets($fp,16000)){
28                                list($message_id,$app_name,$null,$content) = explode("\t",substr($data,0,-1));
29                                $_SESSION['phpgw_info']['expressomail']['lang'][$message_id] = $content;
30                        }
31                        fclose($fp);
32                }
33        }
34       
35               
36        protected function getImap(){
37                if($this->imap == null) {
38                        $boemailadmin   = CreateObject('emailadmin.bo');
39                        $emailadmin_profile = $boemailadmin->getProfileList();
40                        $_SESSION['phpgw_info']['expressomail']['email_server'] = $boemailadmin->getProfile($emailadmin_profile[0]['profileID']);
41                       
42                        $preferences = $GLOBALS['phpgw']->preferences->read();
43                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail'] = $preferences['expressoMail'];
44                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['outoffice'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['outoffice'];
45                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['telephone_number'] = $GLOBALS['phpgw_info']['user']['telephonenumber'];
46                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_cache'] = $current_config['expressoMail_enable_cache'];
47                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_x_origin'] = $current_config['expressoMail_use_x_origin'];
48                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['number_of_contacts'] = $current_config['expressoMail_Number_of_dynamic_contacts'] ? $current_config['expressoMail_Number_of_dynamic_contacts'] : "0";
49                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['notification_domains'] = $current_config['expressoMail_notification_domains'];
50                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['search_result_number'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['search_result_number'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['search_result_number'] : "50";
51                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['search_characters_number'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['search_characters_number'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['search_characters_number'] : "4";                       
52                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['max_attachment_size'] = $current_config['expressoMail_Max_attachment_size'] ? $current_config['expressoMail_Max_attachment_size']."M" : ini_get('upload_max_filesize');
53                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['max_msg_size'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['max_msg_size'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['max_msg_size'] : "0";
54                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['imap_max_folders'] = $current_config['expressoMail_imap_max_folders'];
55                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['max_email_per_page'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['max_email_per_page'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['max_email_per_page'] : "50";
56                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['extended_info'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['extended_info']?$_SESSION['phpgw_info']['user']['preferences']['expressoMail']['extended_info'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['extended_info']:'0';
57                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['from_to_sent'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['from_to_sent'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['from_to_sent'] : "0";
58                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['return_recipient_deafault'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['return_recipient_deafault'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['return_recipient_deafault'] : "0";                   
59                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['quick_search_default'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['quick_search_default'] ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['quick_search_default'] : 1;
60                       
61                       
62                        $this->loadLang( $GLOBALS['phpgw_info']['user']['preferences']['common']['lang']);                                                                                                             
63                        $_SESSION['phpgw_info']['expressomail']['user']['userid'] = $GLOBALS['phpgw_info']['user']['userid'];
64                        $_SESSION['phpgw_info']['expressomail']['user']['passwd'] = $GLOBALS['phpgw_info']['user']['passwd'];
65                        $_SESSION['phpgw_info']['expressomail']['user']['email'] = $GLOBALS['phpgw']->preferences->values['email'];
66                       
67                       
68                        $this->imap = CreateObject("expressoMail1_2.imap_functions");
69                       
70                        if($this->defaultFolders == null) {
71                                $sent   = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSentFolder'] = empty($_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSentFolder']) ?
72                                                        $this->imap->functions->getLang("Sent") : $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSentFolder'];
73                                $spam   = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSpamFolder'] = empty($_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSpamFolder']) ?
74                                                        $this->imap->functions->getLang("Spam"): $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSpamFolder'];
75                                $drafts = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultDraftsFolder'] = empty($_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultDraftsFolder']) ?
76                                                        $this->imap->functions->getLang("Drafts") : $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultDraftsFolder'];
77                                $trash  = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder'] = empty($_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder']) ?
78                                                        $this->imap->functions->getLang("Trash") : $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder'];
79
80                                $this->defaultFolders = array (
81                                                'INBOX' => 0,
82                                                'INBOX'.$this->imap->imap_delimiter.$spam   => 2,
83                                                'INBOX'.$this->imap->imap_delimiter.$sent   => 1,
84                                                'INBOX'.$this->imap->imap_delimiter.$drafts => 4,
85                                                'INBOX'.$this->imap->imap_delimiter.$trash  => 3
86                                        );                                     
87                        }
88                }
89                               
90                return $this->imap;
91        }
92               
93        protected function messageExists($folderID,$msgID) {
94                 $info_msg = $this -> getImap()-> get_info_msg(
95                                array( 'msg_folder'      => urlencode($folderID),
96                                                'msg_number' => $msgID                         
97                                ));
98
99                if($info_msg['status_get_msg_info'] == 'false'){
100                        return false;
101                } else {
102                        return true;
103                }
104        }
105       
106        protected function getMessage(){                               
107                $info_msg = $this -> getImap()-> get_info_msg(
108                                array( 'msg_folder'      => urlencode($this->getParam('folderID')),
109                                                'msg_number' => $this->getParam('msgID')                               
110                                ));
111
112                if($info_msg['status_get_msg_info'] == 'false'){
113                        return false;
114                }
115               
116                $msg['msgID']    = $info_msg['msg_number'];
117                $msg['folderID'] = $info_msg['msg_folder'];
118                //$msg['msgDate']        =  $info_msg['fulldate'];
119                $msg['msgDate']  =  $info_msg['msg_day']." ".$info_msg['msg_hour'];
120                if($info_msg['from']) {
121                        $msg['msgFrom']['fullName']     = $info_msg['from']['name'];
122                        $msg['msgFrom']['mailAddress']  = $info_msg['from']['email'];
123                }
124                if($info_msg['sender'] != null){
125                        $msg['msgSender']['fullName']   = $info_msg['sender']['name'];
126                        $msg['msgSender']['mailAddress']= $info_msg['sender']['email'];
127                }               
128                if($info_msg['toaddress2'] != null){
129                        $toaddresses = explode(",",$info_msg['toaddress2']);
130                        if(count($toaddresses) > 1) {
131                                foreach ($toaddresses as $i => $toaddress){
132                                        $msg['msgTo'][$i] = $this->formatMailObject($toaddress);
133                                }
134                        }
135                        else{
136                                $msg['msgTo'][0] = $this->formatMailObject($info_msg['toaddress2']);
137                        }
138                }
139                if($info_msg['cc'] != null) {
140                        $ccaddresses = explode(",",$info_msg['cc']);
141                        if(count($ccaddresses) > 1) {
142                                foreach ($ccaddresses as $i => $ccaddress){
143                                        $msg['msgCC'][$i] = $this->formatMailObject($ccaddress);
144                                }
145                        }
146                        else{
147                                $msg['msgCC'][0] = $this->formatMailObject($info_msg['cc']);
148                        }
149                }               
150                if($info_msg['reply_toaddress'] != null) {
151                        $msg['msgReplyTo'][0] = $this->formatMailObject($info_msg['reply_toaddress']);
152                }                                               
153                $msg['msgSubject']  = ($info_msg['subject'] ? mb_convert_encoding($info_msg['subject'],"UTF8", "ISO_8859-1") : "");             
154                $msg['msgHasAttachments'] = "0";
155                if(count($info_msg['attachments']) > 0) {
156                        $msg['msgAttachments'] = array();
157                        foreach($info_msg['attachments'] as $i => $attachment){
158                                $msg['msgAttachments'][] = array (
159                                        'attachmentID'                  => "".$attachment['pid'],
160                                        'attachmentIndex'               => "".$i,
161                                        'attachmentName'                => $attachment['name'],
162                                        'attachmentSize'                => "".$attachment['fsize'],
163                                        'attachmentEncoding'    => $attachment['encoding']
164                                );
165                        }
166                        $msg['msgHasAttachments'] = "1";
167                }
168                $msg['msgFlagged']      = $info_msg['Flagged'] == "F" ? "1" : "0";
169                $msg['msgForwarded']= $info_msg['Forwarded'] == "F" ? "1" : "0";
170                $msg['msgAnswered'] = $info_msg['Answered'] == "A" ? "1" : "0";
171                $msg['msgDraft']        = $info_msg['Draft'] == "X" ? "1" : "0";
172                $msg['msgSeen']         = $info_msg['Unseen'] == "U" ? "0" : "1";                               
173                $msg['msgSize']         = $info_msg['Size'];
174                $msg['msgBody']         = ($info_msg['body'] ? mb_convert_encoding($info_msg['body'],"UTF8", "ISO_8859-1") : "");               
175               
176                return $msg;           
177        }
178               
179}
Note: See TracBrowser for help on using the repository browser.