From de04a5ffda471ff3604acc2045db8618fa2a91c8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Mar 2026 12:58:05 +0100 Subject: [PATCH] Clean code - Bad consistency between addField and updateField --- htdocs/core/db/mysqli.class.php | 8 +++----- htdocs/core/db/pgsql.class.php | 12 ++++-------- htdocs/core/db/sqlite3.class.php | 25 ++++++++++++++++++------- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/htdocs/core/db/mysqli.class.php b/htdocs/core/db/mysqli.class.php index 99a778440b8..fe180d25503 100644 --- a/htdocs/core/db/mysqli.class.php +++ b/htdocs/core/db/mysqli.class.php @@ -979,10 +979,8 @@ class DoliDBMysqli extends DoliDB $sql .= 'datetime'; } - if (isset($field_desc['value']) && preg_match("/^[^\s]/i", $field_desc['value'])) { - if (!in_array($field_desc['type'], array('tinyint', 'smallint', 'int', 'date', 'datetime', 'datetimegmt')) && $field_desc['value']) { - $sql .= "(".$this->sanitize($field_desc['value']).")"; - } + if (in_array($field_desc['type'], array('double', 'int', 'varchar')) && array_key_exists('value', $field_desc) && !empty($field_desc['value'])) { + $sql .= "(".$this->sanitize($field_desc['value']).")"; } if (isset($field_desc['attribute']) && preg_match("/^[^\s]/i", $field_desc['attribute'])) { $sql .= " ".$this->sanitize($field_desc['attribute']); @@ -1036,7 +1034,7 @@ class DoliDBMysqli extends DoliDB $sql .= 'datetime'; } - if (in_array($field_desc['type'], array('double', 'tinyint', 'int', 'varchar')) && array_key_exists('value', $field_desc) && $field_desc['value']) { + if (in_array($field_desc['type'], array('double', 'int', 'varchar')) && array_key_exists('value', $field_desc) && !empty($field_desc['value'])) { $sql .= "(".$this->sanitize($field_desc['value']).")"; } if (isset($field_desc['null']) && ($field_desc['null'] == 'not null' || $field_desc['null'] == 'NOT NULL')) { diff --git a/htdocs/core/db/pgsql.class.php b/htdocs/core/db/pgsql.class.php index 7f674fe0c59..0ff88307051 100644 --- a/htdocs/core/db/pgsql.class.php +++ b/htdocs/core/db/pgsql.class.php @@ -1219,10 +1219,8 @@ class DoliDBPgsql extends DoliDB $sql .= 'datetime'; } - if (isset($field_desc['value']) && preg_match("/^[^\s]/i", $field_desc['value'])) { - if (!in_array($field_desc['type'], array('tinyint', 'smallint', 'int', 'date', 'datetime', 'datetimegmt')) && $field_desc['value']) { - $sql .= "(".$this->sanitize($field_desc['value']).")"; - } + if (in_array($field_desc['type'], array('varchar')) && array_key_exists('value', $field_desc) && !empty($field_desc['value'])) { + $sql .= "(".$this->sanitize($field_desc['value']).")"; } if (isset($field_desc['attribute']) && preg_match("/^[^\s]/i", $field_desc['attribute'])) { $sql .= " ".$this->sanitize($field_desc['attribute']); @@ -1276,10 +1274,8 @@ class DoliDBPgsql extends DoliDB $sql .= 'datetime'; } - if (isset($field_desc['value']) && preg_match("/^[^\s]/i", $field_desc['value'])) { - if (!in_array($field_desc['type'], array('smallint', 'int', 'date', 'datetime', 'datetimegmt')) && $field_desc['value']) { - $sql .= "(".$this->sanitize($field_desc['value']).")"; - } + if (in_array($field_desc['type'], array('varchar')) && array_key_exists('value', $field_desc) && !empty($field_desc['value'])) { + $sql .= "(".$this->sanitize($field_desc['value']).")"; } if (isset($field_desc['null']) && ($field_desc['null'] == 'not null' || $field_desc['null'] == 'NOT NULL')) { diff --git a/htdocs/core/db/sqlite3.class.php b/htdocs/core/db/sqlite3.class.php index 335c8f5e736..8b983c7a889 100644 --- a/htdocs/core/db/sqlite3.class.php +++ b/htdocs/core/db/sqlite3.class.php @@ -1114,11 +1114,15 @@ class DoliDBSqlite3 extends DoliDB // cles recherchees dans le tableau des descriptions (field_desc) : type,value,attribute,null,default,extra // ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment'); $sql = "ALTER TABLE ".$table." ADD ".$field_name." "; - $sql .= $this->sanitize($field_desc['type']); - if (isset($field_desc['value']) && preg_match("/^[^\s]/i", $field_desc['value'])) { - if (!in_array($field_desc['type'], array('date', 'datetime'))) { - $sql .= "(".$this->sanitize($field_desc['value']).")"; - } + + if ($field_desc['type'] !== 'datetimegmt') { + $sql .= $this->sanitize($field_desc['type']); + } else { + $sql .= 'datetime'; + } + + if (in_array($field_desc['type'], array('double', 'int', 'varchar')) && array_key_exists('value', $field_desc) && !empty($field_desc['value'])) { + $sql .= "(".$this->sanitize($field_desc['value']).")"; } if (isset($field_desc['attribute']) && preg_match("/^[^\s]/i", $field_desc['attribute'])) { $sql .= " ".$this->sanitize($field_desc['attribute']); @@ -1164,8 +1168,15 @@ class DoliDBSqlite3 extends DoliDB { // phpcs:enable $sql = "ALTER TABLE ".$this->sanitize($table); - $sql .= " MODIFY COLUMN ".$this->sanitize($field_name)." ".$this->sanitize($field_desc['type']); - if ($field_desc['type'] == 'tinyint' || $field_desc['type'] == 'int' || $field_desc['type'] == 'varchar') { + $sql .= " MODIFY COLUMN ".$this->sanitize($field_name)." "; + + if ($field_desc['type'] !== 'datetimegmt') { + $sql .= $this->sanitize($field_desc['type']); + } else { + $sql .= 'datetime'; + } + + if (in_array($field_desc['type'], array('double', 'int', 'varchar')) && array_key_exists('value', $field_desc) && !empty($field_desc['value'])) { $sql .= "(".$this->sanitize($field_desc['value']).")"; }