summaryrefslogtreecommitdiff
path: root/program/lib
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2014-08-06 11:46:22 +0200
committerAleksander Machniak <alec@alec.pl>2014-08-06 11:46:22 +0200
commitd8b26e40f93c59482a5d65e1456c5ccbd57551be (patch)
tree38448c0c9c5a394866216d4fe4c8be927c524d21 /program/lib
parent19926d4c3cc2806b331579d1eaf93cae9aa1b26f (diff)
Overwrite Net_LDAP3's normalize_entry() method to behave as the old one
Diffstat (limited to 'program/lib')
-rw-r--r--program/lib/Roundcube/rcube_ldap_generic.php37
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.