From 09b4102cee2925906190d69da14bdba5fe0a551d Mon Sep 17 00:00:00 2001 From: Martin Haase <martin.haase@daasi.de> Date: Fri, 12 Nov 2010 09:34:22 +0000 Subject: [PATCH] further merging git-svn-id: https://textgridlab.org/svn/textgrid/trunk/middleware/tgauth@7750 7c539038-3410-0410-b1ec-0f2a7bf1c452 --- .../lib/LDAP.class.php | 62 ++++++++++++++----- 1 file changed, 47 insertions(+), 15 deletions(-) diff --git a/info.textgrid.middleware.tgauth.rbac/lib/LDAP.class.php b/info.textgrid.middleware.tgauth.rbac/lib/LDAP.class.php index 272ce00..fbaab11 100755 --- a/info.textgrid.middleware.tgauth.rbac/lib/LDAP.class.php +++ b/info.textgrid.middleware.tgauth.rbac/lib/LDAP.class.php @@ -175,11 +175,28 @@ class LDAP implements iLDAP { } +/* + // ## getBinaryValues ########################### + public function getBinaryValues ( $inDn, $attribute ) { + $arrResult = Array(); // Wanted search result + + // Im LDAP suchen funktioniert nur ueber eine + // vorhandene Verbindung. + if( $this->hasConnection ) { + + $arrResult = ldap_get_values_len( $this->connection, $inDn, $attribute ); + + } + + return $arrResult; + + } +*/ // ## getEntry ###################################################### - public function getEntry( $inDn, Array $inArrAttribute = null ) { + public function getEntry( $inDn, Array $inArrAttribute = null , $wantBinaryAttribute = false) { $ldapSearch = false; // Handle $ldapEntries = Array(); // Unmodified search results @@ -191,7 +208,7 @@ class LDAP implements iLDAP { // vorhandene Verbindung. if( $this->hasConnection ) { - if( isset( $this->cache[$inDn] ) ) { + if( isset( $this->cache[$inDn] ) && !$wantBinaryAttribute ) { return $this->cache[$inDn]; @@ -215,7 +232,21 @@ class LDAP implements iLDAP { if( $ldapSearch ) { - $ldapEntries = ldap_get_entries( $this->connection, $ldapSearch ); + if ($wantBinaryAttribute) { + $ldapEntry = ldap_first_entry( $this->connection, $ldapSearch ); + + for ( $i = 0 ; $i < sizeof ($inArrAttribute); $i++) { + $binEntries = ldap_get_values_len ($this->connection, $ldapEntry, $inArrAttribute[$i] ); + + unset ( $binEntries['count'] ); + + $arrResult[$inArrAttribute[$i]] = $binEntries ; + } + } else { + + $ldapEntries = ldap_get_entries( $this->connection, $ldapSearch ); + + } } @@ -225,31 +256,32 @@ class LDAP implements iLDAP { unset( $ldapSearch ); - // Ueberfluessige Eintraege entfernen - $ldapEntries = $this->clean( $ldapEntries ); + if (!$wantBinaryAttribute) { + + // Ueberfluessige Eintraege entfernen + $ldapEntries = $this->clean( $ldapEntries ); + // Sollte nur ein einziger oder kein Eintrag sein! Dieser + // Eine (oder Keine) wird uebernommen. + for( $i = 0; $i < sizeof( $ldapEntries ); $i++ ) { - // Sollte nur ein einziger oder kein Eintrag sein! Dieser - // Eine (oder Keine) wird uebernommen. - for( $i = 0; $i < sizeof( $ldapEntries ); $i++ ) { + // Das Ergebnis in den Cache schreiben + $this->cache[$ldapEntries[$i]['dn']] = $ldapEntries[$i]; - // Das Ergebnis in den Cache schreiben - $this->cache[$ldapEntries[$i]['dn']] = $ldapEntries[$i]; + if( preg_match( "/^" . $ldapEntries[$i]['dn'] . "$/i", $inDn ) ) { - if( preg_match( "/^" . $ldapEntries[$i]['dn'] . "$/i", $inDn ) ) { + $arrResult = $ldapEntries[$i]; - $arrResult = $ldapEntries[$i]; + } } - } } } - - +// return array('hallo' => "ballo"); return $arrResult; } -- GitLab