[SPIP] v3.2.11 -> v3.2.12
[lhc/web/www.git] / www / ecrire / maj / svn10000.php
index ae90fc7..8f6454c 100644 (file)
@@ -670,7 +670,7 @@ $GLOBALS['maj'][21676] = array(
 
 /**
  * Ranger les images de local/cache-gd2 dans des sous-rep
- * 
+ *
  * http://core.spip.net/issues/3277
  */
 function ranger_cache_gd2() {
@@ -704,3 +704,59 @@ $GLOBALS['maj'][21742] = array(
 $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