diff --git a/ecrire/req/sqlite_generique.php b/ecrire/req/sqlite_generique.php index 98ca33d66f74cc99f9d8fa2dfb924a708bb9f714..42856286ab02e27d5703ec36c54c59607d912bda 100644 --- a/ecrire/req/sqlite_generique.php +++ b/ecrire/req/sqlite_generique.php @@ -1882,12 +1882,18 @@ function spip_sqlite_updateq($table, $champs, $where = '', $desc = array(), $ser } $fields = $desc['field']; - // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci - $champs = _sqlite_ajouter_champs_timestamp($table, $champs, $desc, $serveur); - $set = array(); foreach ($champs as $champ => $val) { - $set[] = $champ . '=' . _sqlite_calculer_cite($val, isset($fields[$champ]) ? $fields[$champ] : ''); + $set[$champ] = $champ . '=' . _sqlite_calculer_cite($val, isset($fields[$champ]) ? $fields[$champ] : ''); + } + + // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci + // attention ils sont deja quotes + $maj = _sqlite_ajouter_champs_timestamp($table, [], $desc, $serveur); + foreach ($maj as $champ => $val) { + if (!isset($set[$champ])) { + $set[$champ] = $champ . '=' . $val; + } } return spip_sqlite_query( @@ -2618,18 +2624,25 @@ function _sqlite_ajouter_champs_timestamp($table, $couples, $desc = '', $serveur // cependant, il faudra peut etre etendre // avec la gestion de DEFAULT et ON UPDATE // mais ceux-ci ne sont pas utilises dans le core - $tables[$table] = array(); + $tables[$table] = ['valeur' => [], 'cite' => [], 'desc' => []]; - $now = _sqlite_func_now(); + $now = _sqlite_func_now(true); foreach ($desc['field'] as $k => $v) { if (strpos(strtolower(ltrim($v)), 'timestamp') === 0) { - $tables[$table][$k] = _sqlite_calculer_cite($now, $v); + $tables[$table]['desc'][$k] = $v; + $tables[$table]['valeur'][$k] = _sqlite_calculer_cite($now, $tables[$table]['desc'][$k]); } } } + else { + $now = _sqlite_func_now(true); + foreach (array_keys($tables[$table]['desc']) as $k) { + $tables[$table]['valeur'][$k] = _sqlite_calculer_cite($now, $tables[$table]['desc'][$k]); + } + } // ajout des champs type 'timestamp' absents - return array_merge($tables[$table], $couples); + return array_merge($tables[$table]['valeur'], $couples); }