]> git.nbdom.net Git - nb.git/commitdiff
lib/php/nb.php
authorNicolas Boisselier <nicolas.boisselier@gmail.com>
Wed, 13 Dec 2017 07:26:31 +0000 (07:26 +0000)
committerNicolas Boisselier <nicolas.boisselier@gmail.com>
Wed, 13 Dec 2017 07:26:31 +0000 (07:26 +0000)
lib/php/nb.php

index 33f012f23834bb79b98c9d11d951bc2d2cf502d7..847ddfe2ecfbf191a0245eb96970054faf64e031 100644 (file)
@@ -1090,7 +1090,40 @@ class NB {
                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 = [];