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 | |
| parent | 19926d4c3cc2806b331579d1eaf93cae9aa1b26f (diff) | |
Overwrite Net_LDAP3's normalize_entry() method to behave as the old one
| -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. | 
