ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
$bind = ldap_bind($connect, $o['bind_dn'], $o['password']) or self::bye(">>Could not bind to ".$o['ldap_host']."<<");
- $read = ldap_search($connect, $o['base_dn'], $o['filter']) or self::bye(">>Unable to search ldap server<<");
+ $read = ldap_search($connect, $o['base_dn'], $o['filter'], $o['attrs'], 0) or self::bye(">>Unable to search ldap server<<");
+
+ $info = [];
+ $i = 0;
+ $entry = ldap_first_entry($connect, $read);
+ do {
+
+ $attributes = ldap_get_attributes($connect, $entry);
+
+ for($j=0; $j<$attributes['count']; $j++) {
+ #if (!empty($o['attrs']) and !in_array($attributes[$j],$o['attrs'])) continue;
+ #debug($info[$i]);
+ #debug($attributes[$j]);
+ $values = ldap_get_values_len($connect, $entry,$attributes[$j]);
+ unset($values['count']);
+ if (false) for ($v=0; $v<count($values); $v++) {
+ $values[$v] = unpack("H*hex",$values[$v]);
+ }
+ #array_pop($values);
+ if (isset($values) and count($values) == 1) $values = $values[0];
+ $info[$i][$attributes[$j]] = $values;
+ }
+
+ #$info[$i]['count'] = count($info[$i]);
+ $i++;
+
+ } while ($entry = ldap_next_entry($connect, $entry));
+ #$info['count'] = count($info);
+
+ ldap_close($connect);
+ #bye($info);
+ return $info;
+
+ # NB 13.12.17: ldap_get_entries is shite !! It does not workds with binary datas, put all attrs in lower case
$info = ldap_get_entries($connect, $read);
$recs = [];