$text]; $url = trim($entry['url'] ?? ''); if ($url !== '') $e['url'] = $url; $entries[] = $e; } if (empty($entries)) continue; $cleaned[] = ['label' => $label, 'entries' => $entries]; } else { // contacts $role = trim($group['role'] ?? ''); if ($role === '') continue; $entries = []; foreach ($group['entries'] ?? [] as $entry) { $text = trim($entry['text'] ?? ''); if ($text === '') continue; $e = [ 'text' => $text, 'email' => trim($entry['email'] ?? ''), ]; $url = trim($entry['url'] ?? ''); if ($url !== '') $e['url'] = $url; $entries[] = $e; } if (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) { error_log("Apropos save error: " . $e->getMessage()); die("Erreur lors de la sauvegarde : " . htmlspecialchars($e->getMessage())); } header('Location: /admin/contenus.php'); exit;