arrange leave type
Deploy HouseHub / deploy (push) Successful in 22s

This commit is contained in:
FeFeClochette committed 2026-08-18 16:58:09 +02:00
1 parent 536f479423
commit f19a7442de
10 files changed
+538 -168

No files matched your search

+38 -35
View File
@@ -1,48 +1,51 @@
<?php
// migrate_leaves.php
require_once __DIR__ . '/includes/meta_db.php';
// Récupération des identifiants de BDD depuis l'environnement (fallback par défaut)
$db_host = getenv('DB_HOST') ?: 'househub-db';
$db_user = getenv('DB_USER') ?: 'househub';
$db_pass = getenv('DB_PASS') ?: 'changeme';
echo "<h1>🛠️ HouseHub - Correction AUTO_INCREMENT Voyages</h1>";
// 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 {
// On récupère toutes les familles actives
$stmt = $meta_pdo->query("SELECT db_name, name FROM families");
$stmt = $meta_pdo->query("SELECT db_name FROM families");
$families = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($families as $f) {
$dbName = $f['db_name'];
echo "<h3>Famille : {$f['name']} ($dbName)</h3><ul>";
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 = new PDO("mysql:host=$db_host;dbname=$dbName;charset=utf8mb4", $db_user, $db_pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
// 1. On vérifie si la clé primaire existe déjà pour éviter de faire planter le script
$hasPrimaryKey = $pdo->query("SHOW KEYS FROM pf_holidays WHERE Key_name = 'PRIMARY'")->fetch();
if (!$hasPrimaryKey) {
$pdo->exec("ALTER TABLE pf_holidays ADD PRIMARY KEY (id)");
echo "<li>✅ Clé primaire restaurée sur la colonne `id`.</li>";
}
// 2. On restaure la propriété AUTO_INCREMENT
$pdo->exec("ALTER TABLE pf_holidays MODIFY id INT(11) NOT NULL AUTO_INCREMENT");
echo "<li>✅ Propriété AUTO_INCREMENT restaurée.</li>";
} catch (\PDOException $e) {
// On attrape l'erreur si la modif a déjà été faite
echo "<li>ℹ️ Action ignorée ou table déjà à jour : " . $e->getMessage() . "</li>";
$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 "</ul>";
}
echo "<h2>🚀 Correction terminée ! Tu peux réessayer de créer un voyage.</h2>";
} catch (Exception $e) {
die("Erreur fatale de connexion à la Meta DB : " . $e->getMessage());
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) {
die("❌ Erreur fatale : " . $e->getMessage());
}
?>