500) { die("URL trop longue (max 500 caractères)."); } $db->saveAproposContent('erg_url', $value); } else { $items = $_POST['items'] ?? []; $cleaned = []; foreach ($items as $item) { if ($aproposKey === 'contacts') { $name = trim($item['name'] ?? ''); if ($name === '') continue; // skip empty rows $entry = [ 'name' => trim($item['name'] ?? ''), 'role' => trim($item['role'] ?? ''), 'email' => trim($item['email'] ?? ''), ]; $url = trim($item['url'] ?? ''); if ($url !== '') { $entry['url'] = $url; } $cleaned[] = $entry; } else { // credits $label = trim($item['label'] ?? ''); $val = trim($item['value'] ?? ''); $url = trim($item['url'] ?? ''); if ($label === '' && $val === '') continue; $entry = [ 'label' => $label, 'value' => $val, ]; if ($url !== '') { $entry['url'] = $url; } $cleaned[] = $entry; } } if (empty($cleaned)) { die("Au moins un élément est requis."); } $db->saveAproposContent($aproposKey, $cleaned); } 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;