1 parent
21c9b37ae0
commit
42ccb89b66
3 files changed
+6
-160
No files matched your search
+6
-47
@@ -1,51 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
// migrate_leaves.php
|
require __DIR__ . '/includes/db.php';
|
||||||
require_once __DIR__ . '/includes/meta_db.php';
|
|
||||||
|
|
||||||
// Détection stricte de l'environnement (Docker vs XAMPP)
|
|
||||||
$envHost = getenv('DB_HOST');
|
|
||||||
if ($envHost === 'househub-db') {
|
|
||||||
$host = 'househub-db';
|
|
||||||
$user = getenv('DB_USER') ?: 'househub';
|
|
||||||
$pass = getenv('DB_PASS') ?: 'changeme';
|
|
||||||
} else {
|
|
||||||
$host = '127.0.0.1';
|
|
||||||
$user = 'root';
|
|
||||||
$pass = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$stmt = $meta_pdo->query("SELECT db_name FROM families");
|
// Rétablit l'auto-incrémentation sur la colonne id
|
||||||
$families = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
$pdo->exec("ALTER TABLE pf_leave_snapshots MODIFY COLUMN id INT NOT NULL AUTO_INCREMENT;");
|
||||||
|
echo "AUTO_INCREMENT rétabli avec succès sur pf_leave_snapshots. 🚀<br>";
|
||||||
foreach ($families as $fam) {
|
|
||||||
$db = $fam['db_name'];
|
|
||||||
echo "Migration sur la base : $db...<br>";
|
|
||||||
|
|
||||||
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $user, $pass, [
|
|
||||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
|
|
||||||
]);
|
|
||||||
|
|
||||||
// 1. pf_person_leave_meta : Règles de report individuelles
|
|
||||||
$pdo->exec("ALTER TABLE pf_person_leave_meta ADD COLUMN IF NOT EXISTS carry_over_max_days DECIMAL(5,2) DEFAULT 0.00 AFTER allowance");
|
|
||||||
$pdo->exec("ALTER TABLE pf_person_leave_meta ADD COLUMN IF NOT EXISTS carry_over_deadline_month INT(11) DEFAULT 12 AFTER carry_over_max_days");
|
|
||||||
|
|
||||||
// 2. pf_leave_snapshots : Ajout du solde de report périssable
|
|
||||||
$pdo->exec("ALTER TABLE pf_leave_snapshots ADD COLUMN IF NOT EXISTS carry_over_balance DECIMAL(6,2) DEFAULT 0.00 AFTER remaining_balance");
|
|
||||||
|
|
||||||
// 3. pf_leave_types : Nettoyage de l'ancien booléen global s'il existe
|
|
||||||
try {
|
|
||||||
$pdo->exec("ALTER TABLE pf_leave_types DROP COLUMN allow_carry_over");
|
|
||||||
} catch (Exception $e) {
|
|
||||||
// La colonne n'existait pas ou est déjà supprimée
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "✅ Migration réussie pour $db.<br><br>";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "🎉 <strong>Toutes les bases ont été mises à jour !</strong> Vous pouvez supprimer ce fichier.";
|
|
||||||
|
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
die("❌ Erreur fatale : " . $e->getMessage());
|
echo "Erreur : " . $e->getMessage();
|
||||||
}
|
}
|
||||||
?>
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
<?php
|
|
||||||
// migrate_attachments.php
|
|
||||||
|
|
||||||
// 1. Inclusion de ta connexion BDD principale (Ajuste le chemin si besoin)
|
|
||||||
require __DIR__ . '/includes/db.php';
|
|
||||||
|
|
||||||
echo "<pre>🚀 Lancement de la migration multi-bases...\n\n";
|
|
||||||
|
|
||||||
try {
|
|
||||||
// 2. Récupérer toutes les bases de données qui commencent par "househub_f"
|
|
||||||
$stmt = $pdo->query("SHOW DATABASES LIKE 'househub_f%'");
|
|
||||||
$databases = $stmt->fetchAll(PDO::FETCH_COLUMN);
|
|
||||||
|
|
||||||
if (empty($databases)) {
|
|
||||||
die("❌ Aucune base de données familiale trouvée (Format househub_f1, househub_f2...).\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
$successCount = 0;
|
|
||||||
|
|
||||||
foreach ($databases as $dbName) {
|
|
||||||
// Sécurité : on vérifie le format exact (househub_f suivi de chiffres)
|
|
||||||
if (preg_match('/^househub_f\d+$/', $dbName)) {
|
|
||||||
echo "⚙️ Mise à jour de la base : <strong>$dbName</strong>... ";
|
|
||||||
|
|
||||||
// On bascule la connexion sur la base de la famille
|
|
||||||
$pdo->exec("USE `$dbName`");
|
|
||||||
|
|
||||||
// 3. Création de la table
|
|
||||||
$sql = "CREATE TABLE IF NOT EXISTS pf_holidays_attachments (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
holiday_id INT NOT NULL,
|
|
||||||
item_id INT DEFAULT NULL,
|
|
||||||
file_name VARCHAR(255) NOT NULL,
|
|
||||||
file_path VARCHAR(255) NOT NULL,
|
|
||||||
uploaded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
CONSTRAINT fk_holiday_attachment FOREIGN KEY (holiday_id) REFERENCES pf_holidays(id) ON DELETE CASCADE
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;";
|
|
||||||
|
|
||||||
$pdo->exec($sql);
|
|
||||||
echo "✅ OK\n";
|
|
||||||
$successCount++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "\n🎉 Migration terminée avec succès sur $successCount base(s) familiale(s) !</pre>";
|
|
||||||
|
|
||||||
} catch (PDOException $e) {
|
|
||||||
die("\n❌ Erreur SQL pendant la migration : " . $e->getMessage() . "</pre>");
|
|
||||||
}
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
<?php
|
|
||||||
// migrate_categories_order.php
|
|
||||||
|
|
||||||
// ============================================================================
|
|
||||||
// CONFIGURATION DE CONNEXION (À ADAPTER)
|
|
||||||
// ============================================================================
|
|
||||||
require __DIR__ . '/includes/db.php';
|
|
||||||
|
|
||||||
|
|
||||||
echo "<h2>🚀 Migration : Ajout de l'ordre des catégories</h2>";
|
|
||||||
|
|
||||||
try {
|
|
||||||
// Connexion au serveur MySQL (sans spécifier de base de données particulière)
|
|
||||||
$pdo = new PDO("mysql:host=$host;charset=utf8mb4", $user, $pass);
|
|
||||||
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
|
||||||
|
|
||||||
// 1. Trouver toutes les bases de données de la famille HouseHub
|
|
||||||
$stmt = $pdo->query("SHOW DATABASES LIKE 'househub_f%'");
|
|
||||||
$databases = $stmt->fetchAll(PDO::FETCH_COLUMN);
|
|
||||||
|
|
||||||
if (empty($databases)) {
|
|
||||||
echo "<p style='color: #ef4444;'>❌ Aucune base de données correspondant à 'househub_f*' n'a été trouvée.</p>";
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "<p>🔍 <strong>" . count($databases) . "</strong> base(s) de données trouvée(s).</p>";
|
|
||||||
|
|
||||||
// 2. Boucler sur chaque base de données
|
|
||||||
foreach ($databases as $db) {
|
|
||||||
echo "<hr><div style='padding: 10px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;'>";
|
|
||||||
echo "<h4 style='margin-top: 0;'>📂 Traitement de la base : <strong>$db</strong></h4>";
|
|
||||||
|
|
||||||
// Sélectionner la base de données active
|
|
||||||
$pdo->exec("USE `$db`");
|
|
||||||
|
|
||||||
// Vérifier si la table pf_budget_categories existe dans cette DB
|
|
||||||
$tableExists = $pdo->query("SHOW TABLES LIKE 'pf_budget_categories'")->rowCount() > 0;
|
|
||||||
|
|
||||||
if ($tableExists) {
|
|
||||||
// Vérifier si la colonne sort_order existe déjà (sécurité)
|
|
||||||
$columnExists = $pdo->query("SHOW COLUMNS FROM pf_budget_categories LIKE 'sort_order'")->rowCount() > 0;
|
|
||||||
|
|
||||||
if (!$columnExists) {
|
|
||||||
// La colonne n'existe pas, on l'ajoute !
|
|
||||||
$pdo->exec("ALTER TABLE pf_budget_categories ADD sort_order INT DEFAULT 0");
|
|
||||||
echo "<span style='color: #10b981;'>✅ Colonne 'sort_order' ajoutée avec succès !</span>";
|
|
||||||
} else {
|
|
||||||
// La colonne est déjà là
|
|
||||||
echo "<span style='color: #f59e0b;'>ℹ️ La colonne 'sort_order' existe déjà (Ignoré).</span>";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
echo "<span style='color: #ef4444;'>⚠️ La table 'pf_budget_categories' n'existe pas ici.</span>";
|
|
||||||
}
|
|
||||||
echo "</div>";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "<h3>🎉 Migration terminée avec succès !</h3>";
|
|
||||||
echo "<p style='color: #64748b;'><em>Tu peux maintenant supprimer ce fichier par mesure de sécurité.</em></p>";
|
|
||||||
|
|
||||||
} catch (PDOException $e) {
|
|
||||||
echo "<h3 style='color: #ef4444;'>❌ Erreur fatale MySQL :</h3>";
|
|
||||||
echo "<pre style='background: #fee2e2; padding: 15px; border-radius: 8px;'>" . $e->getMessage() . "</pre>";
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
Reference in new issue
Block a user