Changeset 6019


Ignore:
Timestamp:
04/24/12 17:07:07 (12 years ago)
Author:
niltonneto
Message:

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

Location:
sandbox/webservice/api
Files:
71 added
2 copied

Legend:

Unmodified
Added
Removed
  • sandbox/webservice/api/rest/catalog/Catalog.php

    r5956 r6019  
    11<?php 
    22 
    3 include_once("Expresso.php"); 
    43 
    54class Catalog extends Expresso {         
    6         var $searchCharactersNumber; 
     5        var $minArgumentSearch; 
    76        var $userId; 
    87 
     
    109                parent::__construct($id); 
    1110                $prefs = $GLOBALS['phpgw']->preferences->read(); 
    12                 $this-> searchCharactersNumber = $prefs['expressoMail']['search_characters_number']; 
     11                $this-> setMinArgumentSearch($prefs['expressoMail']['search_characters_number']); 
    1312        } 
    1413         
    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(){ 
    1623                $userProfile = $this->getUserProfile(); 
    1724                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        }                
    11926 
    120         private function getUserLdapAttrs($mail) 
     27        protected function getUserLdapAttrs($mail) 
    12128        { 
    12229                $filter="(&(phpgwAccountType=u)(mail=".$mail."))"; 
     
    14653        } 
    14754         
    148         private function getUserLdapPhoto($contactID) {          
     55        protected function getUserLdapPhoto($contactID) {                
    14956                $ldap_context = $_SESSION['phpgw_info']['expressomail']['ldap_server']['dn']; 
    15057                $justthese = array("dn", 'jpegPhoto','givenName', 'sn'); 
     
    16875        }        
    16976         
    170         private function getGlobalContacts($search, $uidNumber){ 
     77        protected function getGlobalContacts($search, $uidNumber){ 
    17178                $contacts = array(); 
    17279                $params = array ("search_for" => $search); 
     
    18895                        } 
    18996                } 
    190                 $this->result = array ('contacts' => $contacts); 
    191                  
     97                $result = array ('contacts' => $contacts); 
     98                $this->setResult($result); 
    19299                return $this->getResponse(); 
    193100        } 
  • sandbox/webservice/api/rest/mail/Mail.php

    r5707 r6019  
    11<?php 
    22 
    3 include_once("Expresso.php"); 
     3class Mail extends Expresso { 
     4        protected $defaultFolders; 
     5        protected $imap; 
    46 
    5 class Mail extends Expresso { 
    6         private $defaultFolders; 
    7         private $imap; 
    8          
    9         private function formatMailObject($str) { 
     7        protected function formatMailObject($str) { 
    108                $str = html_entity_decode($str); 
    119                $str = preg_replace('/[<>\'"]/', '', $str); 
     
    3634         
    3735                 
    38         private function getImap(){ 
     36        protected function getImap(){ 
    3937                if($this->imap == null) { 
    4038                        $boemailadmin   = CreateObject('emailadmin.bo'); 
     
    6462                        $this->loadLang( $GLOBALS['phpgw_info']['user']['preferences']['common']['lang']);                                                                                                               
    6563                        $_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                         
    6767                        $this->imap = CreateObject("expressoMail1_2.imap_functions"); 
    6868                         
     
    9090        } 
    9191                 
    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                 } 
    9992                 
    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']/100 
    155                 ); 
    156                          
    157                 return $this->getResponse(); 
    158         }        
    15993         
    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(){                                 
    16795                $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')                                 
    17098                                )); 
    17199                 
     
    215143                return $msg;             
    216144        } 
    217         /* 
    218          * TODO: Implementar método para carregar mensagens 
    219          */ 
    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                 } 
    253145                 
    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         } 
    304146} 
Note: See TracChangeset for help on using the changeset viewer.