124 lines
4.0 KiB
PHP
124 lines
4.0 KiB
PHP
<?php
|
|
/**
|
|
* Script de migration de la table medias
|
|
* Ce script migre les médias en tenant compte des changements de structure
|
|
* et de la transformation de support_rowid en support_id
|
|
*/
|
|
|
|
// Inclusion des fichiers nécessaires
|
|
require_once __DIR__ . '/../config.php';
|
|
|
|
// Fonction principale de migration
|
|
try {
|
|
// Établissement des connexions aux bases de données
|
|
$sourceDb = getSourceConnection();
|
|
$targetDb = getTargetConnection();
|
|
|
|
// Début de la migration silencieuse (n'affiche que les erreurs)
|
|
|
|
// Suppression de toutes les données existantes dans la table medias
|
|
$deleteQuery = "DELETE FROM medias";
|
|
$targetDb->exec($deleteQuery);
|
|
|
|
// Récupération des IDs des utilisateurs qui ont été migrés
|
|
$stmt = $targetDb->query("SELECT id FROM users");
|
|
$migratedUsers = $stmt->fetchAll(PDO::FETCH_COLUMN);
|
|
|
|
if (empty($migratedUsers)) {
|
|
echo "ERREUR: Aucun utilisateur n'a été migré. Veuillez d'abord migrer la table users." . PHP_EOL;
|
|
closeSshTunnel();
|
|
exit(1);
|
|
}
|
|
|
|
// Récupération des médias depuis la source
|
|
$query = "SELECT * FROM medias";
|
|
$stmt = $sourceDb->query($query);
|
|
$medias = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
// Préparation de la requête d'insertion
|
|
$insertQuery = "INSERT INTO medias (
|
|
support,
|
|
support_id,
|
|
fichier,
|
|
description,
|
|
created_at,
|
|
fk_user_creat,
|
|
updated_at,
|
|
fk_user_modif
|
|
) VALUES (
|
|
:support,
|
|
:support_id,
|
|
:fichier,
|
|
:description,
|
|
:created_at,
|
|
:fk_user_creat,
|
|
:updated_at,
|
|
:fk_user_modif
|
|
)";
|
|
|
|
$insertStmt = $targetDb->prepare($insertQuery);
|
|
|
|
// Compteurs pour le suivi
|
|
$inserted = 0;
|
|
$skipped = 0;
|
|
$errors = 0;
|
|
|
|
// Traitement de chaque média
|
|
foreach ($medias as $media) {
|
|
// Vérifier si l'utilisateur de création existe dans la table users de la cible
|
|
$fkUserCreat = $media['fk_user_creat'] ?? 0;
|
|
if ($fkUserCreat > 0 && !in_array($fkUserCreat, $migratedUsers)) {
|
|
// L'utilisateur n'a pas été migré, on utilise 0 (système)
|
|
$fkUserCreat = 0;
|
|
}
|
|
|
|
// Vérifier si l'utilisateur de modification existe dans la table users de la cible
|
|
$fkUserModif = $media['fk_user_modif'] ?? 0;
|
|
if ($fkUserModif > 0 && !in_array($fkUserModif, $migratedUsers)) {
|
|
// L'utilisateur n'a pas été migré, on utilise 0 (système)
|
|
$fkUserModif = 0;
|
|
}
|
|
|
|
// Conversion des dates
|
|
$createdAt = !empty($media['date_creat']) ? date('Y-m-d H:i:s', strtotime($media['date_creat'])) : date('Y-m-d H:i:s');
|
|
$updatedAt = !empty($media['date_modif']) ? date('Y-m-d H:i:s', strtotime($media['date_modif'])) : null;
|
|
|
|
// Préparation des données pour l'insertion
|
|
$mediaData = [
|
|
'support' => $media['support'] ?? '',
|
|
'support_id' => $media['support_rowid'] ?? 0, // Transformation de support_rowid en support_id
|
|
'fichier' => $media['fichier'] ?? '',
|
|
'description' => $media['description'] ?? '',
|
|
'created_at' => $createdAt,
|
|
'fk_user_creat' => $fkUserCreat,
|
|
'updated_at' => $updatedAt,
|
|
'fk_user_modif' => $fkUserModif
|
|
];
|
|
|
|
try {
|
|
// Insertion dans la table cible
|
|
$insertStmt->execute($mediaData);
|
|
$inserted++;
|
|
} catch (PDOException $e) {
|
|
echo "ERREUR: Migration du média : " . $e->getMessage() . "\n";
|
|
$errors++;
|
|
}
|
|
}
|
|
|
|
// Afficher uniquement s'il y a des erreurs
|
|
if ($errors > 0) {
|
|
echo "ERREUR: $errors erreurs lors de la migration de la table medias." . PHP_EOL;
|
|
}
|
|
|
|
// Fermer le tunnel SSH
|
|
closeSshTunnel();
|
|
|
|
} catch (Exception $e) {
|
|
echo "ERREUR CRITIQUE: " . $e->getMessage() . PHP_EOL;
|
|
|
|
// Fermer le tunnel SSH en cas d'erreur
|
|
closeSshTunnel();
|
|
|
|
exit(1);
|
|
}
|