diff --git a/.gitignore b/.gitignore
index 0c222bc..2e5c28a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
househub_db_data
.env
data/.hh_app_secret
-extract_source.php
\ No newline at end of file
+extract_source.php
+.htaccess
\ No newline at end of file
diff --git a/docker/schema_family.sql b/docker/schema_family.sql
index 0684f5e..4c21399 100644
--- a/docker/schema_family.sql
+++ b/docker/schema_family.sql
@@ -165,16 +165,18 @@ CREATE TABLE IF NOT EXISTS pf_import_rules (
budget_item_id INT(11) NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-CREATE TABLE IF NOT EXISTS pf_advances (
- id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
- advance_date date NOT NULL,
- payer varchar(50) NOT NULL,
- description varchar(255) NOT NULL,
- amount decimal(10,2) DEFAULT 0.00,
- from_savings tinyint(1) DEFAULT 0,
- is_resolved tinyint(1) DEFAULT 0,
- created_at datetime DEFAULT current_timestamp()
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+CREATE TABLE IF NOT EXISTS `pf_advances` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `advance_date` date NOT NULL,
+ `payer` varchar(50) NOT NULL,
+ `description` varchar(255) NOT NULL,
+ `amount` decimal(10,2) DEFAULT 0.00,
+ `from_savings` tinyint(1) DEFAULT 0,
+ `is_resolved` tinyint(1) DEFAULT 0,
+ `created_at` datetime DEFAULT current_timestamp(),
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ─── Notes / Memo ─────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS pf_notes (
diff --git a/family-calendar.php b/family-calendar.php
index a33beb4..6f2e94f 100644
--- a/family-calendar.php
+++ b/family-calendar.php
@@ -8,11 +8,33 @@ require_login();
require __DIR__ . '/includes/db.php';
require_once __DIR__ . '/includes/i18n.php';
-$stmtPeople = $pdo->query("SELECT id, name, user_id, role FROM pf_people ORDER BY id ASC");
+// 1. Récupération de toutes les personnes avec leurs modes de garde
+$stmtPeople = $pdo->query("SELECT id, name, user_id, role, care_modes FROM pf_people ORDER BY id ASC");
$familyPeople = $stmtPeople->fetchAll(PDO::FETCH_ASSOC);
-$parents = array_values(array_filter($familyPeople, function($p) {
- return strtolower($p['role'] ?? '') === 'parent';
-}));
+
+$parents = [];
+$kids = [];
+
+// Liste de tous les modes de garde actifs dans le foyer
+$activeCareModes = [];
+
+foreach ($familyPeople as $p) {
+ $role = strtolower($p['role'] ?? '');
+ if ($role === 'parent') {
+ $parents[] = $p;
+ } elseif ($role === 'enfant') {
+ // Décodage sécurisé des modes de garde
+ $modes = json_decode($p['care_modes'] ?? '[]', true);
+ if (!is_array($modes)) $modes = [];
+ $p['modes'] = $modes;
+ $kids[] = $p;
+
+ foreach ($modes as $m) {
+ $activeCareModes[$m] = true;
+ }
+ }
+}
+$activeCareModes = array_keys($activeCareModes); // On récupère uniquement les noms uniques
$pageTitle = tr('fc_page_title');
$activePage = "family-calendar";
@@ -114,22 +136,17 @@ require __DIR__ . '/header.php';
-