Changeset 6701
- Timestamp:
- 07/03/12 10:48:36 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sandbox/webservice/api/rest/mail/MessagesResource.php
r6604 r6701 5 5 // to Receive POST Params (use $this->params) 6 6 parent::post($request); 7 $imap_msgs = null; 8 $all_msgs = array(); 7 9 8 10 if($this-> isLoggedIn()) … … 21 23 } 22 24 23 $max_email_per_page = intval($this->getParam('resultsPerPage') ? $this->getParam('resultsPerPage') : 25 elseif($this->getParam('search') != "") { 26 $imap = $this->getImap(); 27 $condition = array(); 28 $imap_folders = $imap->get_folders_list(); 29 30 if($this->getExpressoVersion() == "2.2") { 31 32 foreach ($imap_folders as $i => $imap_folder) { 33 if(is_int($i)) { 34 $folder = mb_convert_encoding($imap_folder['folder_id'],'UTF8','ISO-8859-1'); 35 $condition[] = "$folder##ALL <=>".$this->getParam('search')."##"; 36 } 37 } 38 39 $params = array( 40 'condition' => implode(",",$condition), 41 'page' => intval($this->getParam('page') ? $this->getParam('page') : "0"), 42 'sort_type' => "SORTDATE" 43 ); 44 45 $this->getImap()->prefs['preview_msg_subject'] = "1"; 46 $imap_msgs = $this->getImap()->search_msg($params); 47 48 if($imap_msgs['num_msgs'] > 0) { 49 foreach($imap_msgs['data'] as $imap_msg) { 50 $msg = array(); 51 $msg['msgID'] = $imap_msg['uid']; 52 $msg['folderID'] = $imap_msg['boxname']; 53 $msg['msgDate'] = $imap_msg['udate']." 00:00"; 54 $msg['msgSubject'] = mb_convert_encoding($imap_msg['subject'],"UTF8", "ISO_8859-1"); 55 $msg['msgSize'] = $imap_msg['size']; 56 $msg['msgFrom'] = array('fullName' => mb_convert_encoding($imap_msg['from'],"UTF8", "ISO_8859-1"), 'mailAddress' => ""); 57 $msg['msgFlagged'] = strpos($imap_msg['flag'],"F") !== false ? "1" : "0"; 58 $msg['msgSeen'] = strpos($imap_msg['flag'],"U") !== false ? "0" : "1"; 59 $msg['msgHasAttachments'] = strpos($imap_msg['flag'],"T") !== false ? "1" : "0"; 60 $msg['msgForwarded'] = (strpos($imap_msg['flag'],"A") !== false && strpos($imap_msg['flag'],"X") !== false) ? "1" : "0"; 61 $msg['msgAnswered'] = $msg['msgForwarded'] != "1" && strpos($imap_msg['flag'],"A") !== false ? "1" : "0"; 62 $msg['msgDraft'] = $msg['msgForwarded'] != "1" && strpos($imap_msg['flag'],"X") !== false ? "1" : "0"; 63 //$msg['msgTo'] = array(); 64 //$msg['ContentType'] = ""; 65 //$msg['msgBodyResume'] = ""; 66 $all_msgs[] = $msg; 67 } 68 } 69 70 } 71 else{ 72 // TODO: Implementar a pesquisa de mensagens para versão 2.4 73 } 74 } 75 else{ 76 $max_email_per_page = intval($this->getParam('resultsPerPage') ? $this->getParam('resultsPerPage') : 24 77 $this->getImap()->prefs['max_email_per_page']); 25 78 26 $current_page = intval($this->getParam('page') ? $this->getParam('page') : 1);79 $current_page = intval($this->getParam('page') ? $this->getParam('page') : 1); 27 80 28 $msg_range_begin = ($max_email_per_page * ($current_page - 1)) + 1;29 $msg_range_end = $msg_range_begin + ($max_email_per_page - 1);81 $msg_range_begin = ($max_email_per_page * ($current_page - 1)) + 1; 82 $msg_range_end = $msg_range_begin + ($max_email_per_page - 1); 30 83 31 $this->getImap()->prefs['preview_msg_subject'] = "1";84 $this->getImap()->prefs['preview_msg_subject'] = "1"; 32 85 33 86 34 $imap_msgs = $this->getImap()-> get_range_msgs2(87 $imap_msgs = $this->getImap()-> get_range_msgs2( 35 88 array( "folder" => $this->getParam('folderID'), 36 89 "msg_range_begin" => $msg_range_begin, … … 40 93 "sort_box_type" => "SORTARRIVAL" 41 94 )); 42 } 43 if(!$imap_msgs){ 44 return $this->getResponse(); 45 } 46 47 $all_msgs = array(); 95 if(!$imap_msgs){ 96 return $this->getResponse(); 97 } 48 98 49 foreach($imap_msgs as $i => $imap_msg) { 50 if(!is_int($i)) { 51 continue; 99 foreach($imap_msgs as $i => $imap_msg) { 100 if(!is_int($i)) { 101 continue; 102 } 103 $msg = array(); 104 $msg['msgID'] = $imap_msg['msg_number']; 105 $msg['folderID'] = $imap_msgs['folder']; 106 $msg['msgDate'] = gmdate('d/m/Y H:i', $imap_msg['timestamp']); 107 $msg['msgFrom']['fullName'] = mb_convert_encoding($imap_msg['from']['name'],"UTF8", "ISO_8859-1"); 108 $msg['msgFrom']['mailAddress'] = $imap_msg['from']['email']; 109 $msg['msgTo'] = array(); 110 if($this->getExpressoVersion() != "2.2") { 111 foreach($imap_msg['to'] as $to){ 112 $msg['msgTo'][] = array('fullName' => mb_convert_encoding($to['name'],"UTF8", "ISO_8859-1"), 'mailAddress' => $to['email']); 113 } 114 }else{ 115 $msg['msgTo'][] = array('fullName' => mb_convert_encoding($to['name'],"UTF8", "ISO_8859-1"), 'mailAddress' => $imap_msg['to']['email']); 116 } 117 $msg['msgReplyTo'][0] = $this->formatMailObject($imap_msg['reply_toaddress']); 118 $msg['msgSubject'] = mb_convert_encoding($imap_msg['subject'],"UTF8", "ISO_8859-1"); 119 120 if($this->getExpressoVersion() != "2.2") { 121 $msg['msgHasAttachments'] = $imap_msg['attachment'] ? "1" : "0"; 122 } 123 else{ 124 $msg['msgHasAttachments'] = $imap_msg['attachment']['number_attachments'] ? "1" : "0"; 125 } 126 127 $msg['msgFlagged'] = $imap_msg['Flagged'] == "F" ? "1" : "0"; 128 $msg['msgForwarded']= $imap_msg['Forwarded'] == "F" ? "1" : "0"; 129 $msg['msgAnswered'] = $imap_msg['Answered'] == "A" ? "1" : "0"; 130 $msg['msgDraft'] = $imap_msg['Draft'] == "X" ? "1" : "0"; 131 $msg['msgSeen'] = $imap_msg['Unseen'] == "U" ? "0" : "1"; 132 133 $msg['ContentType'] = $imap_msg['ContentType']; 134 $msg['msgSize'] = $imap_msg['Size']; 135 136 $msg['msgBodyResume'] = $imap_msg['msg_sample']['body']; 137 138 if($this->getExpressoVersion() != "2.2") { 139 $msg['msgBodyResume'] = base64_decode($msg['msgBodyResume']); 140 } 141 142 $msg['msgBodyResume'] = substr($msg['msgBodyResume'], 2); 143 $msg['msgBodyResume'] = str_replace("\r\n", "", $msg['msgBodyResume']); 144 $msg['msgBodyResume'] = str_replace(chr(160)," ", $msg['msgBodyResume']); 145 $msg['msgBodyResume'] = preg_replace('/\s\s+/', '', $msg['msgBodyResume']); 146 $msg['msgBodyResume'] = mb_convert_encoding($msg['msgBodyResume'],"UTF8", "ISO_8859-1"); 147 148 $all_msgs[] = $msg; 149 } 52 150 } 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'] = mb_convert_encoding($imap_msg['from']['name'],"UTF8", "ISO_8859-1");58 $msg['msgFrom']['mailAddress'] = $imap_msg['from']['email'];59 $msg['msgTo'] = array();60 if($this->getExpressoVersion() != "2.2") {61 foreach($imap_msg['to'] as $to){62 $msg['msgTo'][] = array('fullName' => mb_convert_encoding($to['name'],"UTF8", "ISO_8859-1"), 'mailAddress' => $to['email']);63 }64 }else{65 $msg['msgTo'][] = array('fullName' => mb_convert_encoding($to['name'],"UTF8", "ISO_8859-1"), 'mailAddress' => $imap_msg['to']['email']);66 }67 $msg['msgReplyTo'][0] = $this->formatMailObject($imap_msg['reply_toaddress']);68 $msg['msgSubject'] = mb_convert_encoding($imap_msg['subject'],"UTF8", "ISO_8859-1");69 70 if($this->getExpressoVersion() != "2.2") {71 $msg['msgHasAttachments'] = $imap_msg['attachment'] ? "1" : "0";72 }73 else{74 $msg['msgHasAttachments'] = $imap_msg['attachment']['number_attachments'] ? "1" : "0";75 }76 77 $msg['msgFlagged'] = $imap_msg['Flagged'] == "F" ? "1" : "0";78 $msg['msgForwarded']= $imap_msg['Forwarded'] == "F" ? "1" : "0";79 $msg['msgAnswered'] = $imap_msg['Answered'] == "A" ? "1" : "0";80 $msg['msgDraft'] = $imap_msg['Draft'] == "X" ? "1" : "0";81 $msg['msgSeen'] = $imap_msg['Unseen'] == "U" ? "0" : "1";82 83 $msg['ContentType'] = $imap_msg['ContentType'];84 $msg['msgSize'] = $imap_msg['Size'];85 86 $msg['msgBodyResume'] = $imap_msg['msg_sample']['body'];87 88 if($this->getExpressoVersion() != "2.2") {89 $msg['msgBodyResume'] = base64_decode($msg['msgBodyResume']);90 }91 92 $msg['msgBodyResume'] = substr($msg['msgBodyResume'], 2);93 $msg['msgBodyResume'] = str_replace("\r\n", "", $msg['msgBodyResume']);94 $msg['msgBodyResume'] = str_replace(chr(160)," ", $msg['msgBodyResume']);95 $msg['msgBodyResume'] = preg_replace('/\s\s+/', '', $msg['msgBodyResume']);96 $msg['msgBodyResume'] = mb_convert_encoding($msg['msgBodyResume'],"UTF8", "ISO_8859-1");97 98 $all_msgs[] = $msg;99 151 } 100 152 $result = array ( 101 153 'messages' => $all_msgs, 102 'timeZone' => $imap_msgs['offsetToGMT'] ,103 'totalUnseen' => $imap_msgs['tot_unseen'] 154 'timeZone' => $imap_msgs['offsetToGMT'] ? $imap_msgs['offsetToGMT'] : "", 155 'totalUnseen' => $imap_msgs['tot_unseen'] ? $imap_msgs['tot_unseen'] : "" 104 156 ); 105 157
Note: See TracChangeset
for help on using the changeset viewer.