Aleksander Machniak
2014-08-06 d8b26e40f93c59482a5d65e1456c5ccbd57551be
Overwrite Net_LDAP3's normalize_entry() method to behave as the old one
1 files modified
37 ■■■■■ changed files
program/lib/Roundcube/rcube_ldap_generic.php 37 ●●●●● patch | view | raw | blame | history
program/lib/Roundcube/rcube_ldap_generic.php
@@ -267,6 +267,43 @@
        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.