]> git.nbdom.net Git - nb.git/commitdiff
lib/php/db/table.php
authorNicolas Boisselier <nicolas.boisselier@gmail.com>
Wed, 28 Feb 2018 00:43:55 +0000 (00:43 +0000)
committerNicolas Boisselier <nicolas.boisselier@gmail.com>
Wed, 28 Feb 2018 00:43:55 +0000 (00:43 +0000)
lib/php/db/table.php
lib/php/db/types/ldap.php

index d9d9f5190cd9a9f81e71b2441060847eb12d3297..25b32b9811cfee209d501f0fbf142121d129677d 100644 (file)
@@ -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 '<form class="db edit form-table" method="post" action="'.$form_action.'">'.NB_EOL;
                echo '<div class="fields">'.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();
 
index 76a9ad3ba8f74e3cd3bb933447274ae2d45db84d..98d419048c7396bdde3008b9c43c688f420a4ef0 100644 (file)
@@ -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) {