diff options
author | Aleksander Machniak <alec@alec.pl> | 2014-08-06 11:46:22 +0200 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2014-08-06 11:46:22 +0200 |
commit | d8b26e40f93c59482a5d65e1456c5ccbd57551be (patch) | |
tree | 38448c0c9c5a394866216d4fe4c8be927c524d21 /program/lib/Roundcube/rcube_ldap_generic.php | |
parent | 19926d4c3cc2806b331579d1eaf93cae9aa1b26f (diff) |
Overwrite Net_LDAP3's normalize_entry() method to behave as the old one
Diffstat (limited to 'program/lib/Roundcube/rcube_ldap_generic.php')
-rw-r--r-- | program/lib/Roundcube/rcube_ldap_generic.php | 37 |
1 files changed, 37 insertions, 0 deletions
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. |