From 4e3ff40daf313ba51ff5ffe87fdade5e5d628e49 Mon Sep 17 00:00:00 2001 From: Nicolas Boisselier Date: Wed, 28 Feb 2018 00:43:55 +0000 Subject: [PATCH] lib/php/db/table.php --- lib/php/db/table.php | 13 +++++++++---- lib/php/db/types/ldap.php | 33 ++++++++++++++++++++++++--------- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/lib/php/db/table.php b/lib/php/db/table.php index d9d9f519..25b32b98 100644 --- a/lib/php/db/table.php +++ b/lib/php/db/table.php @@ -543,9 +543,10 @@ Class Table extends nb { if ($values === null) $values = $this->p(); if (!is_array($values)) $values = [$values]; + $fct = $this->db()->conf_type('html_edit_row'); + if (!$add) { - if ($fct = $this->db()->conf_type('html_edit_row')) { - } else { + if (!$fct) { $fct = function (&$table,&$values) use ($add) { $sql = $table->_html_edit_sql($values,$add); $st = $table->db()->conn->prepare($sql); @@ -555,9 +556,12 @@ Class Table extends nb { return $row; }; } - $row = $fct($this,$values,$add); + } else { + if (!$fct) $fct = function() { return []; }; } + $row = $fct($this,$values,$add); + // Params $form_hidden = ''; $url_params = [ @@ -602,7 +606,7 @@ Class Table extends nb { // Form echo '
'.NB_EOL; echo '
'.NB_EOL; - if ( $add or $row) { + if ($add or $row) { if (!empty($row)) $this->db()->table_row_decrypt($this,$row); @@ -610,6 +614,7 @@ Class Table extends nb { # NB 08.01.18 if ($add and !preg_match('/^(null|.*\(.*)?$/',strtolower($field->default))) { # NB 08.01.18 $row[$name] = $field->default; +#debug([$name,$row[$name]]); if ($add) { $row[$name] = $field->default2str(); diff --git a/lib/php/db/types/ldap.php b/lib/php/db/types/ldap.php index 76a9ad3b..98d41904 100644 --- a/lib/php/db/types/ldap.php +++ b/lib/php/db/types/ldap.php @@ -52,23 +52,38 @@ $DB_TYPES['ldap'] = [ return $r; }, 'html_edit_row' => function(&$table,&$values,$add) { - bye($add); - $table->db()->ldap->prepare([ - 'base' => $values['dn'], - ]); - $row = $table->db()->ldap->fetch(); + #bye($add); + + # Get row + $row = []; + if ($add) { + foreach (array_keys($table->fields()) as $v) $row[$v] = ''; + preg_match_all('/objectClass=(\w+)/',$table->sql,$m); + $row['objectClass'] = []; + foreach ($m[1] as $v) { + $row['objectClass'][] = $v; + } + #debug($row); + } else { + $table->db()->ldap->prepare([ + 'base' => $values['dn'], + ]); + $row = $table->db()->ldap->fetch(); + } + + # Sort fields $fields = []; foreach ($row as $k=>$v) $fields[$k] = 99; $i = 9; foreach ($table->fields() as $f) { $fields[$f->name] = $i++; } - $fields['dn'] = 0; - $fields['objectClass'] = 1; - if ($add) bye($row); #debug($fields); + $fields['objectClass'] = 0; + $fields['dn'] = 1; uksort($row,function ($a,$b) use($fields) { return $fields[$a] >= $fields[$b]; }); - #bye($row); $table->replace_fields(array_keys($row)); + + #if ($add) bye($row); return $row; }, 'insert' => function(&$table,&$values) { -- 2.47.3