]> git.nbdom.net Git - nb.git/commitdiff
lib/php/db/table.php
authorDevops <sys@15gifts.com>
Mon, 15 May 2017 16:11:24 +0000 (17:11 +0100)
committerDevops <sys@15gifts.com>
Mon, 15 May 2017 16:11:24 +0000 (17:11 +0100)
lib/php/db/table.php

index 47fc29721e9fae35dd44ab5f65e7dfdaeae6f91a..d720fb840ac6232c5cb2ed22a0966fc6c65e8b00 100644 (file)
@@ -853,8 +853,10 @@ Class Table extends nb {
         foreach ($this->fields() as $f) {
           if (empty($f->extra)) $select_fields[] = $f->sql_name();
         }
+
       } else {
         $select_fields = ['*'];
+
       }
 
       $sql = "SELECT ".trim( $select_count[0].' '.join(',',$select_fields) ). $this->select_extras();
@@ -966,7 +968,36 @@ Class Table extends nb {
     $opt['TABLE'] = $this;
 
     #
-    # Run query
+    # Fields
+    #
+    if (!DB_TABLE_QUERY_NAME) {
+      $fields = [];
+      foreach ($this->db()->fields($st) as $f) { $fields[$f->name] = $f; }
+      $this->fields = $fields;
+    }
+
+    #
+    # Fields filter
+    #
+    $fields = $this->fields();
+    $fields_filter = [];
+    if ($this->p('rows_fields')) {
+      $fields_filter = preg_split('/[^\w_]/',$this->p('rows_fields'));
+      $new_fields = [];
+      foreach ($fields_filter as $k) {
+        $new_fields[$k] = $fields[$k];
+      }
+      $fields = $new_fields;
+      unset($new_fields);
+      /*
+      foreach ($fields as $k => $field) {
+        if (!in_array($k,$fields_filter) and !isset($this->extras[$k])) unset($fields[$k]);
+      }
+      */
+    }
+
+    #
+    # Build query
     #
     $this->create_temporary();
 
@@ -990,30 +1021,6 @@ Class Table extends nb {
     $st->execute();
     if (!empty($opt['query'])) return $st;
 
-    #
-    # Fields
-    #
-    if (!DB_TABLE_QUERY_NAME) {
-      $fields = [];
-      foreach ($this->db()->fields($st) as $f) { $fields[$f->name] = $f; }
-      $this->fields = $fields;
-    }
-
-    #
-    # Fields filter
-    #
-    $fields = $this->fields();
-    $fields_filter = [];
-    #die($this->p('rows_fields'));
-    #die($this->p('rows_fields'));
-    #bye($this->p());
-    if ($this->p('rows_fields')) {
-      $fields_filter = preg_split('/[^\w_]/',$this->p('rows_fields'));
-      foreach ($fields as $k => $field) {
-        if (!in_array($k,$fields_filter) and !isset($this->extras[$k])) unset($fields[$k]);
-      }
-    }
-
     #
     # Use the module out when format unknow
     #
@@ -1075,9 +1082,16 @@ Class Table extends nb {
       # Fields filter
       #
       if ($fields_filter) {
+        $new_row = [];
+        foreach ($fields_filter as $k) {
+          if (isset($row[$k])) $new_row[$k] = $row[$k];
+        }
+        $row = $new_row;
+        /*
         foreach (array_keys($row) as $k) {
           if (!in_array($k,$fields_filter)) unset($row[$k]);
         }
+        */
       }
 
       #
@@ -1439,22 +1453,6 @@ Class Table extends nb {
       }
       if ($this->buttons() and DB_HTML_DELETE) $html .= '<th class="delete"></th>'.NB_EOL;
       $html .= '</tr>'.NB_EOL;
-
-      // Filters - beta
-    /*
-    if (0) {
-      $html .= '<tr class="head">'.NB_EOL;
-      if ($this->buttons() and DB_HTML_EDIT) $html .= '<th class="edit"></th>'.NB_EOL;
-      foreach ($fields as $name => $f) {
-        $html .= '<th class="'.$name.($f->key?' key':'').'">'
-        . (preg_match('/^\w/',$name) ? '<input type="text" id="t-'.$name.'" name="'.$name.'" value="'.$name.$f->p($name).'" />' : '')
-        .'</th>'.NB_EOL;
-      }
-      if ($this->buttons() and DB_HTML_DELETE) $html .= '<th class="delete"></th>'.NB_EOL;
-      $html .= '</tr>'.NB_EOL;
-    }
-    */
-
       $html .= '</thead>'.NB_EOL;
     }