From: Nicolas Boisselier Date: Wed, 7 Feb 2018 17:55:35 +0000 (+0000) Subject: lib/php/db/types/ldap.php X-Git-Url: https://git.nbdom.net/?a=commitdiff_plain;h=4ec03b380a70274dd007d55312735ce884ed05d6;p=nb.git lib/php/db/types/ldap.php --- diff --git a/lib/php/db/field.php b/lib/php/db/field.php index 9d88b899..e71dfba9 100644 --- a/lib/php/db/field.php +++ b/lib/php/db/field.php @@ -117,7 +117,9 @@ class field extends nb { $html = ''; - foreach ((array)$values as $value) { + $values = (array)$values; + $suff = count( $values ) > 1 ? '[]' : ''; + foreach ($values as $value) { $html .= '
'; if ($this->extras) { @@ -128,7 +130,7 @@ class field extends nb { } else { $html .= '<'.$tag - .' name="'.$this->preffix.$this->name.'"' + .' name="'.$this->preffix.$this->name.$suff.'"' # NB 06.02.18 .' id="'.$this->name.'"' .( ($size and $tag != 'textarea') ? ' size="'.$size.'"' : '') #.' value="'.$value.'"' diff --git a/lib/php/db/table.php b/lib/php/db/table.php index 302f74e1..60645c54 100644 --- a/lib/php/db/table.php +++ b/lib/php/db/table.php @@ -872,6 +872,11 @@ Class Table extends nb { } +# NB 06.02.18 public function replace_fields($fields) { +# NB 06.02.18 $this->fields = []; +# NB 06.02.18 $this->add_fields($fields); +# NB 06.02.18 } + public function add_fields($fields) { foreach ($fields as $k => $v) { $key = false; diff --git a/lib/php/db/types/ldap.php b/lib/php/db/types/ldap.php index 4f422ddb..81f9d71a 100644 --- a/lib/php/db/types/ldap.php +++ b/lib/php/db/types/ldap.php @@ -41,11 +41,14 @@ $DB_TYPES['ldap'] = [ ]); $row = $table->db()->ldap->fetch(); #debug($row); + $table->add_fields(array_keys($row)); return $row; }, 'update' => function(&$table,&$values) { - $count = (int)$table->db()->ldap->update($values['dn']); - return [ 'count' => $count, ]; + $dn = $values['dn']; + unset($values['dn']); + #bye([$dn,$values]); + return (int)$table->db()->ldap->update($dn,$values); }, ]; ?> diff --git a/lib/php/ldap.php b/lib/php/ldap.php index 3fd484bb..8d59ede1 100644 --- a/lib/php/ldap.php +++ b/lib/php/ldap.php @@ -111,19 +111,27 @@ class Ldap { } # < ldap_search + private function dnBase($dn) { + return preg_replace('/,'.$this->base.'$/','',$dn) . ',' . $this->base; + } + public function add($dn,$data) { $conn = $this->connect(); - #debug($dn); - return ldap_add($conn, $dn . ',' . $this->base, $data); + $dn = $this->dnBase($dn); + return ldap_add($conn, $dn, $data); # NB 29.01.18 return ldap_mod_add($conn, $dn . ',' . $this->base, $data); } public function update($dn,$data) { # NB 28.01.18 return ldap_mod_add($this->connect(), $dn . ',' . $this->base, $data); - return ldap_mod_replace($this->connect(), $dn . ',' . $this->base, $data); + $dn = $this->dnBase($dn); + #debug([$dn,$data]); + #debug(ldap_error($this->connect())); + return ldap_mod_replace($this->connect(), $dn, $data); } public function delete($dn) { + $dn = $this->dnBase($dn); return ldap_delete($this->connect(), $dn); /* foreach ($ldap->search([ diff --git a/www/dbq/dbq.php b/www/dbq/dbq.php index b8984f03..39d06b71 100644 --- a/www/dbq/dbq.php +++ b/www/dbq/dbq.php @@ -1115,7 +1115,7 @@ EOF; ] + ( ($this->perm < self::ADMIN) ? [] : [ - [ 'ldap', 'Connect to domain ldap server [/FILTER/ATTRS' ], +# NB 07.02.18 [ 'ldap', 'Connect to domain ldap server [/FILTER/ATTRS' ], [ 'phpinfo', 'Phpinfo' ], [ '_SERVER', 'Dump _SERVER' ], [ '_REQUEST', 'Dump _REQUEST' ],