Changeset 5707 for sandbox/webservice


Ignore:
Timestamp:
03/12/12 18:48:44 (12 years ago)
Author:
niltonneto
Message:

Ticket #2507 - Adicionado algumas melhorias no método Catalog.getUserContacts().

Location:
sandbox/webservice/api/json-rpc
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • sandbox/webservice/api/json-rpc/Catalog.php

    r5699 r5707  
    77        public function getUserContacts($params){ 
    88                if($this->isLoggedIn($params)) { 
    9                         if($params && $params['contactID'] > 0)  
    10                                 $query_contact = 'A.id_contact='.$params['contactID'].' and'; 
     9                        $search = ""; 
     10                        if($params) { 
     11                                 
     12                                $search = trim($params['search']); 
     13                                if($params['contactID'] > 0){ 
     14                                        $query_contact = 'A.id_contact='.$params['contactID'].' and'; 
     15                                } 
     16                                elseif($search != "") { 
     17                                        $search = mb_convert_encoding($search,"ISO_8859-1", "UTF8"); 
     18                                } 
     19                                 
     20                                if(($search || $params['contactID']) && $params['contactType'] == 2){ 
     21                                        return $this->getGlobalContacts($search, $params['contactID']);                                  
     22                                } 
     23                        } 
    1124                         
    1225                        $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, '. 
     
    3952                                                'contactHasImagePicture' => ($row['photo'] != null ? 1 : 0), 
    4053                                        ); 
     54                                        if($search != null &&  
     55                                                        stristr($contacts[$id]['contactAlias'], $search) == null && 
     56                                                        stristr($contacts[$id]['contactFirstName'], $search) == null && 
     57                                                        stristr($contacts[$id]['contactLastName'], $search) == null && 
     58                                                        stristr($contacts[$id]['contactFullName'], $search) == null && 
     59                                                        stristr($contacts[$id]['contactBirthDate'], $search) == null && 
     60                                                        stristr($contacts[$id]['contactNotes'], $search) == null){ 
     61                                                unset($contacts[$id]); 
     62                                        } 
    4163                                }                                
    4264                        } 
     
    6688                return $this->getResponse(); 
    6789        }        
     90 
     91        private function getUserLdapAttrs($mail) 
     92        { 
     93                $filter="(&(phpgwAccountType=u)(mail=".$mail."))"; 
     94                $ldap_context = $_SESSION['phpgw_info']['expressomail']['ldap_server']['dn']; 
     95                $justthese = array("dn", 'jpegPhoto','givenName', 'sn');  
     96                $this->getLdapCatalog()->ldapConnect(true); 
     97                $ds = $this->getLdapCatalog()->ds; 
     98                if ($ds){ 
     99                        $sr = @ldap_search($ds, $ldap_context, $filter, $justthese);     
     100                        if ($sr) { 
     101                                $entry = ldap_first_entry($ds, $sr); 
     102                                if($entry) {                                                                     
     103                                        $givenName = @ldap_get_values_len($ds, $entry, "givenname"); 
     104                                        $sn = @ldap_get_values_len($ds, $entry, "sn"); 
     105                                        $contactHasImagePicture = (@ldap_get_values_len($ds, $entry, "jpegphoto") ? 1 : 0); 
     106                                        $dn = ldap_get_dn($ds, $entry); 
     107                                        return array( 
     108                                                "contactID" => $dn, 
     109                                                "contactFirstName" => $givenName[0], 
     110                                                "contactLastName"       => $sn[0], 
     111                                                "contactHasImagePicture" => $contactHasImagePicture  
     112                                        ); 
     113                                } 
     114                        } 
     115                } 
     116                return false; 
     117        }        
    68118         
    69         public function getGlobalContacts($params){ 
     119        private function getGlobalContacts($search, $uidNumber){ 
     120                $contacts = array(); 
     121                $params = array ("search_for" => $search); 
     122                $result = $this->getLdapCatalog()->quicksearch($params); 
     123 
     124                foreach($result as $i => $row) { 
     125                        if(is_int($i)) { 
     126                                $contacts[$i] = array( 
     127                                        'contactMails'  => array($result[$i]['mail']), 
     128                                        'contactPhones' => array($result[$i]['phone']), 
     129                                        'contactAlias' => "",                                    
     130                                        'contactFullName'       => ($result[$i]['cn'] != null ? mb_convert_encoding($row['cn'],"UTF8", "ISO_8859-1") : ""), 
     131                                        'contactBirthDate'      => "", 
     132                                        'contactNotes'          => "" 
     133                                ); 
     134                                // Buscar atributos faltantes.  
     135                                $contacts[$i] = array_merge($this->getUserLdapAttrs($result[$i]['mail']), $contacts[$i]);                                
     136                        } 
     137                } 
     138                $this->result = array ('contacts' => $contacts); 
    70139                 
    71                 if($this->isLoggedIn($params)) { 
    72                         $this->result = array ('contacts' => $contacts); 
    73                 } 
    74140                return $this->getResponse(); 
    75141        } 
  • sandbox/webservice/api/json-rpc/Expresso.php

    r5681 r5707  
    44 
    55        protected $expressoVersion; 
    6         protected $ldap; 
     6        protected $ldapCatalog; 
    77        var $result; 
    88        var $error; 
     
    2929        } 
    3030         
    31         protected function getLdap(){ 
    32                 if($this->ldap == null) { 
    33                         $this->ldap = $GLOBALS['phpgw']->common->ldapConnect(); 
     31        protected function getLdapCatalog(){ 
     32                if(!$this->ldapCatalog) { 
     33                        $catalog_config = CreateObject("contactcenter.bo_ldap_manager"); 
     34                        $_SESSION['phpgw_info']['expressomail']['ldap_server'] = $catalog_config ? $catalog_config->srcs[1] : null; 
     35                        $this->ldapCatalog = CreateObject("expressoMail1_2.ldap_functions"); 
    3436                } 
    3537         
    36                 return $this->ldap; 
     38                return $this->ldapCatalog; 
    3739        } 
    3840         
  • sandbox/webservice/api/json-rpc/Mail.php

    r5670 r5707  
    44 
    55class Mail extends Expresso { 
    6         var $defaultFolders; 
    7         var $imap; 
     6        private $defaultFolders; 
     7        private $imap; 
    88         
    99        private function formatMailObject($str) { 
     
    6565                        $_SESSION['phpgw_info']['expressomail']['user']['userid'] = $GLOBALS['phpgw_info']['user']['userid']; 
    6666                        $_SESSION['phpgw_info']['expressomail']['user']['passwd'] = $GLOBALS['phpgw_info']['user']['passwd'];                    
    67                         include_once(PHPGW_INCLUDE_ROOT."/expressoMail1_2/inc/class.imap_functions.inc.php"); 
    68                         $this->imap = new imap_functions(); 
     67                        $this->imap = CreateObject("expressoMail1_2.imap_functions"); 
    6968                         
    7069                        if($this->defaultFolders == null) {                              
Note: See TracChangeset for help on using the changeset viewer.