/**
* Ranger les images de local/cache-gd2 dans des sous-rep
- *
+ *
* http://core.spip.net/issues/3277
*/
function ranger_cache_gd2() {
$GLOBALS['maj'][23375] = array(
array('sql_alter', "TABLE spip_auteurs CHANGE prefs prefs text"),
);
+
+// adaptation des timestamp mysql
+$GLOBALS['maj'][24379] = [['maj_timestamp_mysql']];
+
+/**
+ * Mise à jour des bdd Mysql pour réparer les timestamp auto-update absents
+ *
+ * @uses base_lister_toutes_tables()
+ * @uses _mysql_remplacements_definitions_table()
+ **/
+function maj_timestamp_mysql($tables = null) {
+
+ include_spip('base/dump');
+ if (is_null($tables)) {
+ $tables = base_lister_toutes_tables();
+ } elseif (is_string($tables)) {
+ $tables = [$tables];
+ } elseif (!is_array($tables)) {
+ return;
+ }
+
+ // rien a faire si base non mysql
+ if (strncmp($GLOBALS['connexions'][0]['type'], 'mysql', 5) !== 0) {
+ return;
+ }
+
+ $trouver_table = charger_fonction('trouver_table', 'base');
+ // forcer le vidage de cache
+ $trouver_table('');
+
+ foreach ($tables as $table) {
+ if (time() >= _TIME_OUT) {
+ return;
+ }
+ if ($desc = $trouver_table($table)) {
+ $fields_corrected = _mysql_remplacements_definitions_table($desc['field']);
+ $d = array_diff($desc['field'], $fields_corrected);
+ if ($d) {
+ spip_log("Table $table TIMESTAMP incorrect", "maj");
+ foreach ($desc['field'] as $field => $type) {
+ if ($desc['field'][$field] !== $fields_corrected[$field]) {
+ spip_log("Adaptation TIMESTAMP table $table", "maj." . _LOG_INFO_IMPORTANTE);
+ sql_alter("table $table change $field $field " . $fields_corrected[$field]);
+ $trouver_table('');
+ $new_desc = $trouver_table($table);
+ spip_log("Apres conversion $table : " . var_export($new_desc['field'], true),
+ "maj." . _LOG_INFO_IMPORTANTE);
+ }
+ }
+ }
+ }
+ }
+
+ // forcer le vidage de cache
+ $trouver_table('');
+}
\ No newline at end of file