Ignore:
Timestamp:
09/17/10 11:11:28 (14 years ago)
Author:
alexandrecorreia
Message:

Ticket #1316 - Correcoes e melhorias na busca dos contatos para o Modulo IM.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2/jabberit_messenger/jmessenger/inc/class.LdapIM.inc.php

    r3102 r3260  
    4242                 
    4343                // Result Ldap 
    44                 $this->max_result = 20; 
     44                $this->max_result = 15; 
    4545                 
    4646                if ( file_exists('inc/attributeLdap.php') ) 
     
    7373        private final function ldapRoot() 
    7474        { 
     75                $this->ldap_host        = $_SESSION['phpgw_info']['jabberit_messenger']['server_ldap_jabberit']; 
     76                $this->ldap_context     = $_SESSION['phpgw_info']['jabberit_messenger']['context_ldap_jabberit']; 
     77                $this->ldap_user        = $_SESSION['phpgw_info']['jabberit_messenger']['user_ldap_jabberit']; 
     78                $this->ldap_pass        = $_SESSION['phpgw_info']['jabberit_messenger']['password_ldap_jabberit']; 
     79 
    7580                $this->ldapConn(); 
    7681        } 
     
    102107 
    103108                return $conn; 
     109        } 
     110         
     111        private function getLdapHost() 
     112        { 
     113                return  $_SESSION['phpgw_info']['jabberit_messenger']['server_ldap_jabberit']; 
    104114        } 
    105115 
     
    169179 
    170180                return $result_groups; 
     181        } 
     182 
     183        public final function getMaxResults() 
     184        { 
     185                return $this->max_result; 
     186        } 
     187 
     188        public final function getMembers( $pMembers, $pServers ) 
     189        { 
     190                $members = $pMembers; 
     191                 
     192                foreach( $pServers as $servers => $groups ) 
     193                { 
     194                        if( $servers == $this->getLdapHost() || $servers == 'localhost') 
     195                        { 
     196                                $this->ldapRoot(); 
     197                                 
     198                                $count = count($members[$servers]); 
     199                                 
     200                                for( $i = 0; $i < $count; $i++ ) 
     201                                { 
     202                                        if ( ! $this->getMemberUid($groups, $members[$servers][$i]['uid'] ) ) 
     203                                                unset( $members[$servers][$i] ); 
     204                                } 
     205 
     206                                if( $this->ldap ) 
     207                                        @ldap_close($this->ldap); 
     208                        } 
     209                        else 
     210                        { 
     211                                $confHosts      = $this->hostsJabber; 
     212                         
     213                                for($i = 0; $i < count($confHosts); $i++ ) 
     214                                { 
     215                                        if( $this->ldap ) 
     216                                                @ldap_close($this->ldap); 
     217                                                 
     218                                        if( trim($servers) === trim($confHosts[$i]['serverLdap']) ) 
     219                                        { 
     220                                                $this->ldap_host        = $confHosts[$i]['serverLdap']; 
     221                                                $this->ldap_context = $confHosts[$i]['contextLdap']; 
     222                                                $this->ldap_user        = $confHosts[$i]['user']; 
     223                                                $this->ldap_org         = $confHosts[$i]['org']; 
     224                                                $this->ldap_pass        = $confHosts[$i]['password']; 
     225                                                $this->ldap             = $this->ldapCatalog(); 
     226 
     227                                                $count = count($members[$servers]); 
     228                                                 
     229                                                for( $i = 0; $i < $count; $i++ ) 
     230                                                { 
     231                                                        if ( ! $this->getMemberUid($groups, $members[$servers][$i]['uid'] ) ) 
     232                                                                unset( $members[$servers][$i] ); 
     233                                                } 
     234                 
     235                                                if( $this->ldap ) 
     236                                                        @ldap_close($this->ldap); 
     237                                        } 
     238                                } 
     239                        } 
     240                } 
     241                 
     242                return $members; 
     243        } 
     244 
     245        private function getMemberUid( $pGidNumber, $pMemberUid ) 
     246        { 
     247                $filter         = "(&(phpgwAccountType=g)(|{$pGidNumber})(memberuid={$pMemberUid}))"; 
     248                $justthese      = array("memberuid"); 
     249         
     250                if( $this->ldap ) 
     251                { 
     252                        $search = ldap_search($this->ldap, $this->ldap_context, $filter, $justthese ); 
     253                        $result = ldap_get_entries($this->ldap,$search); 
     254                        if( $result["count"] ) 
     255                                return true; 
     256                } 
     257 
     258                return false; 
    171259        } 
    172260 
     
    360448        } 
    361449 
    362         public final function getUsersLdapCatalog( $search, $uid = false, $pLdap = false ) 
     450        public final function getUsersLdapCatalog( $search, $pLdap = false, $uid = false ) 
    363451        { 
    364452                $confHosts      = $this->hostsJabber; 
     
    390478                                        $return = array_merge($return, $result); 
    391479                                        else 
    392                                                 $return = $result;                               
     480                                                $return = $result; 
    393481                                } 
    394482                                 
     
    401489        } 
    402490 
    403         public final function getUsersLdapRoot( $search, $uidnumber, $ous = false ) 
    404         { 
     491        public final function getUsersLdapRoot( $search, $uidnumber = false, $ous = false ) 
     492        { 
     493                 
    405494                $result = array(); 
    406495                $this->ldapRoot(); 
     
    409498                { 
    410499                        $searchRoot     = ( $ous ) ? $ous.",".$this->ldap_context : $this->ldap_context ; 
    411                         $filter         = "(&(phpgwaccounttype=u)(|".$uidnumber.")(".$search ."))"; 
     500                        $filter         = ($uidnumber) ? "(&(phpgwaccounttype=u)(|".$uidnumber.")(".$search ."))" : "(&(phpgwaccounttype=u)(".$search ."))"; 
    412501                        $justthese      = array( $this->attribute, "uidNumber", "cn", "mail", "phpgwAccountVisible", "dn", "jpegPhoto" );                                                                
    413502                        $search         = @ldap_search( $this->ldap, $searchRoot, $filter, $justthese, 0, $this->max_result + 1); 
Note: See TracChangeset for help on using the changeset viewer.