Changeset 6019 for sandbox/webservice/api/rest/mail/Mail.php
- Timestamp:
- 04/24/12 17:07:07 (12 years ago)
- Location:
- sandbox/webservice/api/rest
- Files:
-
- 2 added
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
sandbox/webservice/api/rest/mail/Mail.php
r5707 r6019 1 1 <?php 2 2 3 include_once("Expresso.php"); 3 class Mail extends Expresso { 4 protected $defaultFolders; 5 protected $imap; 4 6 5 class Mail extends Expresso { 6 private $defaultFolders; 7 private $imap; 8 9 private function formatMailObject($str) { 7 protected function formatMailObject($str) { 10 8 $str = html_entity_decode($str); 11 9 $str = preg_replace('/[<>\'"]/', '', $str); … … 36 34 37 35 38 pr ivatefunction getImap(){36 protected function getImap(){ 39 37 if($this->imap == null) { 40 38 $boemailadmin = CreateObject('emailadmin.bo'); … … 64 62 $this->loadLang( $GLOBALS['phpgw_info']['user']['preferences']['common']['lang']); 65 63 $_SESSION['phpgw_info']['expressomail']['user']['userid'] = $GLOBALS['phpgw_info']['user']['userid']; 66 $_SESSION['phpgw_info']['expressomail']['user']['passwd'] = $GLOBALS['phpgw_info']['user']['passwd']; 64 $_SESSION['phpgw_info']['expressomail']['user']['passwd'] = $GLOBALS['phpgw_info']['user']['passwd']; 65 66 67 67 $this->imap = CreateObject("expressoMail1_2.imap_functions"); 68 68 … … 90 90 } 91 91 92 public function getUserFolders($params){93 if($this->isLoggedIn($params)) {94 $imap_folders = $this->getImap()->get_folders_list();95 }96 if(!$imap_folders){97 return $this->getResponse();98 }99 92 100 $all_folders = array();101 $user_folders = array();102 $shared_folders = array();103 104 foreach ($imap_folders as $i => $imap_folder) {105 if(is_int($i)) {106 $folder = array();107 $folder['folderName'] = mb_convert_encoding($imap_folder['folder_name'], "UTF8", "ISO_8859-1");108 if($folder['folderName'] == 'INBOX') {109 $folder['folderName'] = $this->getImap()->functions->getLang("Inbox");110 }111 $folder['folderParentID'] = mb_convert_encoding($imap_folder['folder_parent'],'UTF8','ISO-8859-1');112 $folder['folderHasChildren'] = $imap_folder['folder_hasChildren'];113 $folder['qtdUnreadMessages'] = $imap_folder['folder_unseen'];114 $folder['qtdMessages'] = $this->getImap()->get_num_msgs(array("folder" => $imap_folder['folder_id']));115 $folder['folderID'] = mb_convert_encoding($imap_folder['folder_id'],'UTF8','ISO-8859-1');116 117 if(substr($folder['folderID'], 0, 4) == 'user'){118 $folder['folderType'] = "6";119 $shared_folders[] = $folder;120 }else if(array_key_exists($folder['folderID'], $this->defaultFolders) !== false) {121 $folder_type = $this->defaultFolders[$folder['folderID']];122 $folder['folderType'] = $folder_type;123 $default_folders[] = $folder;124 }125 else{126 $folder['folderType'] = "5";127 $user_folders[] = $folder;128 }129 }130 }131 132 $all_folders = array_merge($default_folders, $user_folders, $shared_folders);133 $quota_folders = $this->getImap()->get_quota_folders();134 $search = $params['search'] ? mb_convert_encoding($params['search'],"ISO_8859-1", "UTF8") : null;135 foreach($all_folders as $i => $folder){136 $folder_name = mb_convert_encoding($folder['folderName'],"ISO_8859-1", "UTF8");137 $folder_id = mb_convert_encoding($folder['folderID'],"ISO_8859-1", "UTF8");138 if($folder_id == 'INBOX') {139 $j = $this->getImap()->functions->getLang("Inbox");140 }else {141 $j = str_replace("INBOX".$this->getImap()->imap_delimiter,"",$folder_id);142 }143 $all_folders[$i]['diskSizeUsed'] = $quota_folders[$j]['quota_used'];144 $all_folders[$i]['diskSizePercent'] = $quota_folders[$j]['quota_percent']/100;145 if($search != null && stristr($folder_name, $search) == null){146 unset($all_folders[$i]);147 }148 }149 150 $this->result = array (151 'folders' => array_values($all_folders),152 'diskSizeUsed' => $quota_folders['quota_root']['quota_used']*1024,153 'diskSizeLimit' => $quota_folders['quota_root']['quota_limit']*1024,154 'diskSizePercent' => $quota_folders['quota_root']['quota_percent']/100155 );156 157 return $this->getResponse();158 }159 93 160 private function getMessage($params){ 161 162 $params['folderID']; 163 $params['msgID']; 164 $msg_number = $params['msg_number']; 165 $msg_folder = ($params['msg_folder']); 166 94 protected function getMessage(){ 167 95 $info_msg = $this -> getImap()-> get_info_msg( 168 array( 'msg_folder' => urlencode($ params['folderID']),169 'msg_number' => $ params['msgID']96 array( 'msg_folder' => urlencode($this->getParam('folderID')), 97 'msg_number' => $this->getParam('msgID') 170 98 )); 171 99 … … 215 143 return $msg; 216 144 } 217 /*218 * TODO: Implementar método para carregar mensagens219 */220 public function getUserMessages($params){221 222 if($this->isLoggedIn($params)) {223 224 if($params['folderID'] && $params['msgID'] > 0) {225 $msg = $this->getMessage($params);226 $this->result = array ( 'messages' => array($msg));227 return $this->getResponse();228 }229 230 $max_email_per_page = intval($params['resultsPerPage'] ? $params['resultsPerPage'] :231 $this->getImap()->prefs['max_email_per_page']);232 233 $current_page = intval($params['page'] ? $params['page'] : 1);234 235 $msg_range_begin = ($max_email_per_page * ($current_page - 1)) + 1;236 $msg_range_end = $msg_range_begin + ($max_email_per_page - 1);237 238 $this->getImap()->prefs['preview_msg_subject'] = "1";239 240 241 $imap_msgs = $this->getImap()-> get_range_msgs2(242 array( "folder" => $params['folderID'],243 "msg_range_begin" => $msg_range_begin,244 "msg_range_end" => $msg_range_end,245 "search_box_type" => "ALL",246 "sort_box_reverse" => "1",247 "sort_box_type" => "SORTARRIVAL"248 ));249 }250 if(!$imap_msgs){251 return $this->getResponse();252 }253 145 254 $all_msgs = array();255 256 foreach($imap_msgs as $i => $imap_msg) {257 if(!is_int($i)) {258 continue;259 }260 $msg = array();261 $msg['msgID'] = $imap_msg['msg_number'];262 $msg['folderID'] = $imap_msgs['folder'];263 $msg['msgDate'] = gmdate('d/m/Y H:i', $imap_msg['timestamp']);264 $msg['msgFrom']['fullName'] = $imap_msg['from']['name'];265 $msg['msgFrom']['mailAddress'] = $imap_msg['from']['email'];266 $msg['msgTo'][0]['fullName'] = $imap_msg['to']['name'];267 $msg['msgTo'][0]['mailAddress'] = $imap_msg['to']['email'];268 $msg['msgReplyTo'][0] = $this->formatMailObject($imap_msg['reply_toaddress']);269 $msg['msgSubject'] = mb_convert_encoding($imap_msg['subject'],"UTF8", "ISO_8859-1");270 271 $msg['msgHasAttachments'] = $imap_msg['attachment'] ? "1" : "0";272 273 $msg['msgFlagged'] = $imap_msg['Flagged'] == "F" ? "1" : "0";274 $msg['msgForwarded']= $imap_msg['Forwarded'] == "F" ? "1" : "0";275 $msg['msgAnswered'] = $imap_msg['Answered'] == "A" ? "1" : "0";276 $msg['msgDraft'] = $imap_msg['Draft'] == "X" ? "1" : "0";277 $msg['msgSeen'] = $imap_msg['Unseen'] == "U" ? "0" : "1";278 279 $msg['ContentType'] = $imap_msg['ContentType'];280 $msg['msgSize'] = $imap_msg['Size'];281 282 $msg['msgBodyResume'] = $imap_msg['msg_sample']['body'];283 284 if($this->expressoVersion != "2.2") {285 $msg['msgBodyResume'] = base64_decode($msg['msgBodyResume']);286 }287 288 $msg['msgBodyResume'] = substr($msg['msgBodyResume'], 2);289 $msg['msgBodyResume'] = str_replace("\r\n", "", $msg['msgBodyResume']);290 $msg['msgBodyResume'] = str_replace(chr(160)," ", $msg['msgBodyResume']);291 $msg['msgBodyResume'] = preg_replace('/\s\s+/', '', $msg['msgBodyResume']);292 $msg['msgBodyResume'] = mb_convert_encoding($msg['msgBodyResume'],"UTF8", "ISO_8859-1");293 294 $all_msgs[] = $msg;295 }296 $this->result = array (297 'messages' => $all_msgs,298 'timeZone' => $imap_msgs['offsetToGMT'],299 'totalUnseen' => $imap_msgs['tot_unseen']300 );301 302 return $this->getResponse();303 }304 146 }
Note: See TracChangeset
for help on using the changeset viewer.