query("SELECT id, name, user_id, role, color, care_modes FROM pf_people WHERE is_active = 1 ORDER BY id ASC"); $familyPeople = $stmtPeople->fetchAll(PDO::FETCH_ASSOC); $parents = []; $kids = []; $helpers = []; foreach ($familyPeople as $p) { $role = strtolower($p['role'] ?? ''); if ($role === 'parent') { $parents[] = $p; } elseif ($role === 'enfant' || $role === 'child') { $p['modes'] = json_decode($p['care_modes'] ?? '[]', true) ?: []; $kids[] = $p; } elseif ($role === 'helper' || $role === 'nounou') { $helpers[] = $p; // 🟢 On stocke les intervenants } } // 2. Modes de garde (globaux du foyer, pour synchroniser avec le JS) $stmtFoyer = $pdo->query("SELECT care_modes FROM pf_foyer_settings LIMIT 1"); $foyerData = $stmtFoyer->fetch(PDO::FETCH_ASSOC); $activeCareModes = json_decode($foyerData['care_modes'] ?? '[]', true); if (!is_array($activeCareModes)) $activeCareModes = []; // 3. Matrice de congés dynamique (pour les en-têtes et la modale) $stmtLeaves = $pdo->query("SELECT person_id, leave_type FROM pf_person_leave_meta ORDER BY id ASC"); $dbLeaves = $stmtLeaves->fetchAll(PDO::FETCH_ASSOC); $leaveMatrix = []; $allLeaveTypes = []; foreach ($dbLeaves as $l) { $leaveMatrix[$l['person_id']][] = $l['leave_type']; $allLeaveTypes[$l['leave_type']] = true; } $allLeaveTypes = array_keys($allLeaveTypes); $pageTitle = tr('fc_page_title'); $activePage = "family-calendar"; $mainClass = "pf-family-calendar"; $pageCss = "/modules/family-calendar/family-calendar.css"; require __DIR__ . '/header.php'; ?>

📸

⚙️

$parent): $parentClass = ($index % 2 === 0) ? 'col-alex' : 'col-laia'; // Couleurs alternées $pLeaves = $leaveMatrix[$parent['id']] ?? []; $colspan = count($pLeaves) * 2; ?> 0): ?> $parent): $parentClass = ($index % 2 === 0) ? 'col-alex' : 'col-laia'; $pLeaves = $leaveMatrix[$parent['id']] ?? []; ?> $parent): $parentClass = ($index % 2 === 0) ? 'col-alex' : 'col-laia'; $pLeaves = $leaveMatrix[$parent['id']] ?? []; ?>
Maladie

Off
Extra
$mode): $modeLower = strtolower($mode); if ($modeLower === 'avis'): ?>
Avis
🏫
Maladie