Changeset 1881


Ignore:
Timestamp:
12/22/09 09:38:07 (14 years ago)
Author:
alexandrecorreia
Message:

Ticket #808 - Busca implementada utilizando somente os grupos cadastrados.

Location:
trunk/jabberit_messenger/inc
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/jabberit_messenger/inc/class.contacts_im.inc.php

    r1877 r1881  
    1717class contacts_im 
    1818{ 
    19         private $ldap; 
    2019        private $db; 
    2120        private $dn_User; 
     21        private $hostsJabberLdap;        
     22        private $ldap; 
    2223        private $ou_User; 
    2324        private $serverJabber; 
     
    4142         
    4243                // Server Name Ldap 
    43                 $this->serverLdap       = $_SESSION['phpgw_info']['jabberit_messenger']['server_ldap_jabberit'];         
     44                $this->serverLdap       = $_SESSION['phpgw_info']['jabberit_messenger']['server_ldap_jabberit']; 
     45                 
     46                // Hosts Jabber / Ldap 
     47                $this->hostsJabberLdap = unserialize($_SESSION['phpgw_info']['jabberit_messenger']['map_org_realm_jabberit']);   
    4448        } 
    4549 
     
    132136        $uidType                = "uid"; 
    133137                $serversLdap    = unserialize(trim($_SESSION['phpgw_info']['jabberit_messenger']['groups_search'])); 
    134  
     138                 
    135139        if( $serversLdap ) 
    136140        { 
     
    151155                                } 
    152156                } 
    153                  
    154157        }                                
    155158                 
     
    159162                $uidType = "uidnumber";  
    160163        }         
    161          
     164 
    162165        for( $i = 0; $i < count($array_uids) ; $i+=50 ) 
    163166        {    
     
    200203                        $array_uids_external = array(); 
    201204 
    202                         if( $serversLdap ) 
     205                        unset($serversLdap[$this->serverLdap]); 
     206 
     207                        if( $serversLdap  && count($serversLdap)) 
    203208                        { 
    204209                                foreach( $serversLdap as $key => $tmp ) 
    205210                                { 
    206                                         if( $key != $this->serverLdap ) 
     211                                        $groupsExternal = unserialize($tmp); 
     212 
     213                                        if( count($groupsExternal) ) 
    207214                                        { 
    208                                                 $groupsExternal = unserialize($tmp); 
    209  
    210                                                 if(count($groupsExternal)) 
    211                                                 { 
    212                                                         foreach( $groupsExternal as $tmpExt ) 
    213                                                         { 
    214                                                                 $group = explode(":",$tmpExt); 
    215                                                                 $array_result = $this->ldap->getGroupsMemberUid( $group[0], $key ); 
    216                                                                 @array_shift($array_result[0]['memberuid']); 
    217                                                                 $array_uids_external = @array_merge($array_uids_external, $array_result[0]['memberuid']); 
    218                                                                 unset($array_result); 
    219                                                         } 
    220                                                          
    221                                                         for( $i = 0; $i < count( $array_uids_external ) ; $i+=50 ) 
    222                                                 {    
    223                                                 $partial_uids_external  = array_slice($array_uids_external,$i,50); 
    224                                                 $filter_uid_external    = implode(")(uid=",$partial_uids_external); 
    225                                                 $filter_uid_external    = "(uid=". $filter_uid_external. ")"; 
    226                                                 $result[] = $this->ldap->getUsersLdapCatalog("cn=*".$pName."*", $filter_uid_external, $key ); 
    227                                                 } 
    228                                                 unset($array_uids_external); 
    229                                                 } 
     215                                                foreach( $groupsExternal as $tmpExt ) 
     216                                                { 
     217                                                        $group = explode(":",$tmpExt); 
     218                                                        $array_result = $this->ldap->getGroupsMemberUid( $group[0], $key ); 
     219                                                        @array_shift($array_result[0]['memberuid']); 
     220                                                        $array_uids_external = @array_merge($array_uids_external, $array_result[0]['memberuid']); 
     221                                                        unset($array_result); 
     222                                                } 
     223                                                 
     224                                                for( $i = 0; $i < count( $array_uids_external ) ; $i+=50 ) 
     225                                        {    
     226                                        $partial_uids_external  = array_slice($array_uids_external,$i,50); 
     227                                        $filter_uid_external    = implode(")(uid=",$partial_uids_external); 
     228                                        $filter_uid_external    = "(uid=". $filter_uid_external. ")"; 
     229                                        $result[] = $this->ldap->getUsersLdapCatalog("cn=*".$pName."*", $filter_uid_external, $key ); 
     230                                        } 
     231                                        unset($array_uids_external); 
    230232                                        } 
    231                                 }                                        
    232                         } 
    233                         else 
    234                         { 
    235                                 $result[] = $this->ldap->getUsersLdapCatalog("cn=*".$pName."*"); 
     233                                         
     234                                } 
     235                        } 
     236                         
     237                        if( count($this->hostsJabberLdap) ) 
     238                        { 
     239                                for($i = 0 ; $i < count($this->hostsJabberLdap); $i++) 
     240                                { 
     241                                        if( !array_key_exists($this->hostsJabberLdap[$i]['serverLdap'], $serversLdap) ) 
     242                                                $result[] = $this->ldap->getUsersLdapCatalog("cn=*".$pName."*", false, $this->hostsJabberLdap[$i]['serverLdap'] ); 
     243                                } 
    236244                        } 
    237245        } 
     
    247255        { 
    248256                $ou = substr( $this->ou_User, strpos($this->ou_User, "=") + 1 ); 
     257                 
    249258                        for($i = 0 ; $i < count($members); $i++ ) 
    250259                        { 
    251260                                if( $ou == $members[$i]['ou'] ) 
     261                                { 
    252262                                        $uids_org[] = $members[$i]; 
     263                                } 
    253264                                else 
     265                                { 
    254266                                        if(isset($_SESSION['phpgw_info']['jabberit_messenger']['photo'])) 
    255267                                                unset($_SESSION['phpgw_info']['jabberit_messenger']['photo'][$members[$i]['ou']]); 
    256                         } 
     268                                } 
     269                        } 
     270                         
    257271                        return $uids_org; 
    258272        }             
  • trunk/jabberit_messenger/inc/class.db_im.inc.php

    r1805 r1881  
    336336                                else 
    337337                                { 
    338                                         $resultQuery = unserialize($result[0]['config_value']); 
    339                                         $keys = array_keys($pData); 
    340  
    341                                         $resultQuery[$keys[0]] = $pData[$keys[0]]; 
    342  
    343                                         $query = "UPDATE phpgw_config SET config_value = '".serialize($resultQuery)."' WHERE config_app = 'phpgwapi' AND config_name = 'groups_search_jabberit';"; 
     338                                        $keyLdap = array_keys($pData); 
     339                                        $resultQuery = unserialize($result[0]['config_value']);                                  
     340                                         
     341                                        if( is_array(unserialize($pData[$keyLdap[0]])) ) 
     342                                                $resultQuery[$keyLdap[0]] = $pData[$keyLdap[0]]; 
     343                                        else 
     344                                                unset($resultQuery[$keyLdap[0]]); 
     345 
     346                                        if( count($resultQuery)) 
     347                                                $query = "UPDATE phpgw_config SET config_value = '".serialize($resultQuery)."' WHERE config_app = 'phpgwapi' AND config_name = 'groups_search_jabberit';"; 
     348                                        else 
     349                                                $query = "DELETE FROM phpgw_config WHERE config_app = 'phpgwapi' AND config_name = 'groups_search_jabberit';"; 
     350                                                 
    344351                                        $this->db->query($query); 
    345352                                        return true; 
  • trunk/jabberit_messenger/inc/class.ldap_im.inc.php

    r1878 r1881  
    5252        { 
    5353                if( $this->ldap ) 
    54                         ldap_close($this->ldap); 
     54                        @ldap_close($this->ldap); 
    5555        }        
    5656 
Note: See TracChangeset for help on using the changeset viewer.