saveAproposContent($aproposKey, $url); } else { // ── Group-based keys (contacts) ── $groups = $_POST['groups'] ?? []; $cleaned = []; foreach ($groups as $group) { $role = trim($group['role'] ?? ''); $entries = []; foreach ($group['entries'] ?? [] as $entry) { $text = trim($entry['text'] ?? ''); if ($text === '') continue; $e = [ 'text' => $text, 'email' => trim($entry['email'] ?? ''), ]; $urlEntry = trim($entry['url'] ?? ''); if ($urlEntry !== '') $e['url'] = $urlEntry; $entries[] = $e; } // Keep group if it has a role OR at least one entry if ($role === '' && empty($entries)) continue; $cleaned[] = ['role' => $role, 'entries' => $entries]; } if (empty($cleaned)) { die("Au moins un groupe avec des entrées est requis."); } $db->saveAproposContent($aproposKey, $cleaned); } AdminLogger::make()->logAproposEdit($aproposKey); App::flash('success', "Contenu « $aproposKey » mis à jour avec succès."); } catch (Exception $e) { ErrorHandler::log('apropos', $e); die('Erreur lors de la sauvegarde : ' . htmlspecialchars(ErrorHandler::userMessage($e))); } header('Location: /admin/contenus.php'); exit;