Changeset 6019 for sandbox/webservice/api/rest
- Timestamp:
- 04/24/12 17:07:07 (12 years ago)
- Location:
- sandbox/webservice/api/rest
- Files:
-
- 16 added
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
sandbox/webservice/api/rest/catalog/Catalog.php
r5956 r6019 1 1 <?php 2 2 3 include_once("Expresso.php");4 3 5 4 class Catalog extends Expresso { 6 var $ searchCharactersNumber;5 var $minArgumentSearch; 7 6 var $userId; 8 7 … … 10 9 parent::__construct($id); 11 10 $prefs = $GLOBALS['phpgw']->preferences->read(); 12 $this-> se archCharactersNumber = $prefs['expressoMail']['search_characters_number'];11 $this-> setMinArgumentSearch($prefs['expressoMail']['search_characters_number']); 13 12 } 14 13 15 private function getUserId(){ 14 protected function setMinArgumentSearch($minArgumentSearch){ 15 $this->minArgumentSearch = $minArgumentSearch; 16 } 17 18 protected function getMinArgumentSearch(){ 19 return $this-> minArgumentSearch; 20 } 21 22 protected function getUserId(){ 16 23 $userProfile = $this->getUserProfile(); 17 24 return $userProfile['contactID']; 18 } 19 20 public function getUserContacts($params){ 21 if($this->isLoggedIn($params)) { 22 $search = ""; 23 if($params) { 24 $search = trim($params['search']); 25 if($search != "") { 26 $search = mb_convert_encoding($search,"ISO_8859-1", "UTF8"); 27 } 28 29 if($params['contactID'] > 0 && $params['contactType'] == 1){ 30 $query_contact = 'A.id_contact='.$params['contactID'].' and'; 31 } 32 elseif($params['contactType'] == 2){ 33 if($this-> searchCharactersNumber <= strlen($search)) 34 return $this->getGlobalContacts($search, $params['contactID']); 35 else{ 36 $this-> error = Errors::get(Errors::CATALOG_MIN_ARGUMENT_SEARCH); 37 $this-> error = str_replace("%1",$this-> searchCharactersNumber,$this->error); 38 return $this->getResponse(); 39 } 40 } 41 } 42 43 $query = 'select B.id_typeof_contact_connection, A.photo, A.id_contact, A.alias, A.given_names, A.family_names, A.names_ordered, A.birthdate, A.notes, C.connection_value from phpgw_cc_contact A, '. 44 'phpgw_cc_contact_conns B, phpgw_cc_connections C where A.id_contact = B.id_contact and B.id_connection = C.id_connection '. 45 ' and '.$query_contact.' A.id_owner='.$this -> getUserId().' group by '. 46 ' B.id_typeof_contact_connection, A.photo, A.id_contact, A.alias, A.given_names, A.family_names,A.names_ordered,A.birthdate, A.notes,C.connection_value order by lower(A.names_ordered)'; 47 48 if (!$this->getDb()->query($query)) 49 return false; 50 51 $contacts = array(); 52 while($this->getDb()->next_record()) { 53 $row = $this->getDb()->row(); 54 $id = $row['id_contact']; 55 $contactType = ($row['id_typeof_contact_connection'] == 2 ? 'contactPhones' : 'contactMails'); 56 57 if($contacts[$id] != null){ 58 $contacts[$id][$contactType][] = $row['connection_value']; 59 } 60 else{ 61 $contacts[$id] = array( 62 'contactID' => $row['id_contact'], 63 $contactType => array($row['connection_value']), 64 'contactAlias' => ($row['alias'] != null ? mb_convert_encoding($row['alias'],"UTF8", "ISO_8859-1") : ""), 65 'contactFirstName' => ($row['given_names'] != null ? mb_convert_encoding($row['given_names'],"UTF8", "ISO_8859-1") : ""), 66 'contactLastName' => ($row['family_names'] != null ? mb_convert_encoding($row['family_names'],"UTF8", "ISO_8859-1") : ""), 67 'contactFullName' => ($row['names_ordered'] != null ? mb_convert_encoding($row['names_ordered'],"UTF8", "ISO_8859-1") : ""), 68 'contactBirthDate' => ($row['birthdate'] != null ? $row['birthdate'] : ""), 69 'contactNotes' => ($row['notes'] != null ? mb_convert_encoding($row['notes'],"UTF8", "ISO_8859-1") : ""), 70 'contactHasImagePicture' => ($row['photo'] != null ? 1 : 0), 71 ); 72 if($search != null && 73 stristr($contacts[$id]['contactAlias'], $search) == null && 74 stristr($contacts[$id]['contactFirstName'], $search) == null && 75 stristr($contacts[$id]['contactLastName'], $search) == null && 76 stristr($contacts[$id]['contactFullName'], $search) == null && 77 stristr($contacts[$id]['contactBirthDate'], $search) == null && 78 stristr($contacts[$id]['contactNotes'], $search) == null){ 79 unset($contacts[$id]); 80 } 81 } 82 } 83 $this->result = array ('contacts' => array_values($contacts)); 84 } 85 return $this->getResponse(); 86 } 87 88 public function getImagePicture($params){ 89 if($this->isLoggedIn($params) && $params['contactID'] != null) { 90 $contact = array(); 91 // User Contact 92 if($params['contactType'] == 1){ 93 $query = 'select A.id_contact, A.photo from phpgw_cc_contact A where A.id_contact='.$params['contactID'].' and A.id_owner='.$this -> getUserId(); 94 if (!$this->getDb()->query($query)) 95 return false; 96 if($this->getDb()->next_record()) { 97 $row = $this->getDb()->row(); 98 if($row['photo'] != null) { 99 $contact[] = array( 100 'contactID' => $row['id_contact'], 101 'contactImagePicture' => ($row['photo'] != null ? base64_encode($row['photo']) : "") 102 ); 103 } 104 } 105 } 106 // Global Catalog 107 elseif($params['contactType'] == 2){ 108 $photo = $this->getUserLdapPhoto(urldecode($params['contactID'])); 109 $contact[] = array( 110 'contactID' => $params['contactID'], 111 'contactImagePicture' => ($photo != null ? base64_encode($photo[0]) : "") 112 ); 113 114 } 115 $this->result = array ('contacts' => $contact); 116 } 117 return $this->getResponse(); 118 } 25 } 119 26 120 pr ivatefunction getUserLdapAttrs($mail)27 protected function getUserLdapAttrs($mail) 121 28 { 122 29 $filter="(&(phpgwAccountType=u)(mail=".$mail."))"; … … 146 53 } 147 54 148 pr ivatefunction getUserLdapPhoto($contactID) {55 protected function getUserLdapPhoto($contactID) { 149 56 $ldap_context = $_SESSION['phpgw_info']['expressomail']['ldap_server']['dn']; 150 57 $justthese = array("dn", 'jpegPhoto','givenName', 'sn'); … … 168 75 } 169 76 170 pr ivatefunction getGlobalContacts($search, $uidNumber){77 protected function getGlobalContacts($search, $uidNumber){ 171 78 $contacts = array(); 172 79 $params = array ("search_for" => $search); … … 188 95 } 189 96 } 190 $ this->result = array ('contacts' => $contacts);191 97 $result = array ('contacts' => $contacts); 98 $this->setResult($result); 192 99 return $this->getResponse(); 193 100 } -
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.