From d8b26e40f93c59482a5d65e1456c5ccbd57551be Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Wed, 6 Aug 2014 11:46:22 +0200 Subject: Overwrite Net_LDAP3's normalize_entry() method to behave as the old one --- program/lib/Roundcube/rcube_ldap_generic.php | 37 ++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'program/lib/Roundcube/rcube_ldap_generic.php') diff --git a/program/lib/Roundcube/rcube_ldap_generic.php b/program/lib/Roundcube/rcube_ldap_generic.php index a88e53c0e..9823dbb66 100644 --- a/program/lib/Roundcube/rcube_ldap_generic.php +++ b/program/lib/Roundcube/rcube_ldap_generic.php @@ -267,6 +267,43 @@ class rcube_ldap_generic extends Net_LDAP3 return false; } + + /** + * Turn an LDAP entry into a regular PHP array with attributes as keys. + * + * @param array $entry Attributes array as retrieved from ldap_get_attributes() or ldap_get_entries() + * + * @return array Hash array with attributes as keys + */ + public static function normalize_entry($entry) + { + if (!isset($entry['count'])) { + return $entry; + } + + $rec = array(); + + for ($i=0; $i < $entry['count']; $i++) { + $attr = $entry[$i]; + if ($entry[$attr]['count'] == 1) { + switch ($attr) { + case 'objectclass': + $rec[$attr] = array(strtolower($entry[$attr][0])); + break; + default: + $rec[$attr] = $entry[$attr][0]; + break; + } + } + else { + for ($j=0; $j < $entry[$attr]['count']; $j++) { + $rec[$attr][$j] = $entry[$attr][$j]; + } + } + } + + return $rec; + } } // for backward compat. -- cgit v1.2.3