foreach ($attr as $k => $v) { $this->$k = $v; }
}
- public static function default2str($default) {
- if ($this->default == "''") $this->default = '';
+ public function default2str($default=null) {
+# NB 06.02.18 Bug if ($this->default == "''") $this->default = '';
+ if ($default === null) $default = $this->default;
+
# NB 12.12.17 if (strtoupper($default) == "NULL") $default = null;
#if (strtoupper($default) == "NOW()") $default = null;
# NB 08.01.18 if (strtoupper($default) == "NOW()") $default = $date_microtime();
}
public function sql_name_cast_text() {
+ if (empty($this->db())) return $this->name;
$name = $this->db()->sql_name($this->name);
return $this->db()->cast_text($name);
}
public function sql_name($cast=false) {
if ($cast and !$this->text()) return $this->sql_name_cast_text();
+ if (empty($this->db())) return $this->name;
return $this->db()->sql_name($this->name);
}
#if ($value === null) return '';
static $sqlite = null; if ($sqlite === null) {
$db = $this->db();
- $sqlite = (bool)($db->type == 'sqlite');
+ $sqlite = (bool)(!empty($db->type) and $db->type == 'sqlite');
}
# Anoying, sqlite does not format properly !
return $ret;
}
- private function fields_keys(&$others=[]) {
+ public function fields_keys(&$others=[]) {
$fields_keys = [];
if ($values === null) $values = $this->p();
if (!is_array($values)) $values = [$values];
-# NB 23.11.17 $fields = $this->fields();
-# NB 23.11.17 $keys = $this->fields_keys();
-
+ if (!$add) {
$sql = $this->sql_edit($values,$add);
-
$st = $this->db()->conn->prepare($sql);
$st->execute();
+ }
// Params
$form_hidden = '';
# NB 08.01.18 if ($add and !preg_match('/^(null|.*\(.*)?$/',strtolower($field->default))) {
# NB 08.01.18 $row[$name] = $field->default;
if ($add) {
- $row[$name] = $field->default2str($field->default);
+ $row[$name] = $field->default2str();
} elseif(!isset($row[$name])) {
$row[$name] = '';
$call = $opt['row_parse_pre']; $call($row,$this,$opt);
}
+ //
+ // Fields filter
+ //
+ if ($this->fields_only) {
+ $new_row = [];
+ foreach ($this->fields_only as $k) {
+ if (isset($row[$k])) $new_row[$k] = $row[$k];
+ }
+ $row = $new_row;
+ }
+
//
// Format
//
#
# Fields
#
- $fields = $this->fields();
+ $opt['fields'] = $fields = $this->fields();
if ($this->fields_only) {
foreach ($fields as $k=>$v) {
if (!in_array($k,$this->fields_only)) unset($fields[$k]);
list($sql,$where,$limit,$select_count) = $this->rows_sql($opt);
$nosql = $this->db()->conf_type('nosql');
- if ($nosql) {
- $sql = empty($this->sql) ? $this->name : $this->sql;
- $fct = $this->db()->conf_type('prepare');
- if ($fct) $st = $fct($this,$sql);
- if (!$fct = $this->db()->conf_type('fetch')) {
- $fct = function() use($st) { return $st->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT); };
- }
- #$fct = function() { return false; };
- #$fct = function() use($st) { return $st->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT); };
-
- } else {
-
- if ($this->db()->type == 'pgsql') {
- $sql_orig = $sql;
- $this->db()->conn->beginTransaction();
- $sql = "DECLARE table_rows CURSOR FOR $sql";
- $cursor = $this->db()->conn->prepare($sql);
- $cursor->execute();
- $sql = "FETCH 1 FROM table_rows";
+ if ($nosql) {
+ $sql = empty($this->sql) ? $this->name : $this->sql;
+ $fct = $this->db()->conf_type('rows_prepare');
+ if ($fct) $st = $fct($this,$sql);
+ if (!$fct = $this->db()->conf_type('rows_fetch')) {
+ $fct = function() use($st) { return $st->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT); };
+ }
+ #$fct = function() { return false; };
+ #$fct = function() use($st) { return $st->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT); };
} else {
- $this->db()->conn->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
- }
+
+ if ($this->db()->type == 'pgsql') {
+ $sql_orig = $sql;
+ $this->db()->conn->beginTransaction();
+ $sql = "DECLARE table_rows CURSOR FOR $sql";
+ $cursor = $this->db()->conn->prepare($sql);
+ $cursor->execute();
+ $sql = "FETCH 1 FROM table_rows";
- $st = $this->db()->conn->prepare($sql);#,[PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT]);
- if (empty($cursor)) {
- $fct = function() use($st) { return $st->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT); };
- $st->execute();
- } else {
- $fct = function() use($st) { if ($st->execute()) return $st->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT); };
- }
-}
+ } else {
+ $this->db()->conn->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
+ }
+
+ $st = $this->db()->conn->prepare($sql);#,[PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT]);
+ if (empty($cursor)) {
+ $fct = function() use($st) { return $st->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT); };
+ $st->execute();
+ } else {
+ $fct = function() use($st) { if ($st->execute()) return $st->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT); };
+ }
+ }
if (!empty($opt['query'])) return $st;
#
# Use the module out when format unknow
$call = $this->rows_parsers($row,$opt);
- #
- # Fields filter
- #
- if ($this->fields_only) {
- $new_row = [];
- foreach ($this->fields_only as $k) {
- if (isset($row[$k])) $new_row[$k] = $row[$k];
- }
- $row = $new_row;
- }
-
#
# Preffix
#
// Criterias
//
$r .= '<div class="criterias">';
- foreach ( $this->fields() as $k => $f) {
+ if (!isset($opt['fields'])) $opt['fields'] = $this->fields();
+ foreach ($opt['fields'] as $k => $f) {
if ($f->is_encrypt()) continue;
$v = $this->p($k);