setSetting($key, $value); } App::flash('success', "Paramètres du formulaire mis à jour."); } elseif ($section === 'objet_types') { $db->setSetting('objet_these_enabled', isset($_POST['objet_these_enabled']) ? '1' : '0'); $db->setSetting('objet_frart_enabled', isset($_POST['objet_frart_enabled']) ? '1' : '0'); App::flash('success', "Types de travaux mis à jour."); } elseif ($section === 'smtp') { $smtpData = [ 'host' => $_POST['smtp_host'] ?? '', 'port' => $_POST['smtp_port'] ?? 587, 'encryption' => $_POST['smtp_encryption'] ?? 'tls', 'username' => $_POST['smtp_username'] ?? '', 'from_email' => $_POST['smtp_from_email'] ?? '', 'from_name' => $_POST['smtp_from_name'] ?? 'XAMXAM', ]; // Only update password when user actually typed something. $pwd = $_POST['smtp_password'] ?? ''; if ($pwd !== '') { $smtpData['password'] = $pwd; } SmtpRelay::updateSettings($db, $smtpData); // Immediately probe the server to validate credentials $test = SmtpRelay::test($db); if ($test['ok']) { App::flash('success', "Paramètres SMTP mis à jour — connexion validée ✓"); } else { App::flash('error', "Paramètres sauvegardés, mais le test de connexion a échoué : " . $test['error']); if ($test['field'] !== null) { $_SESSION['_flash_smtp_field'] = $test['field']; } } } else { App::flash('error', "Section inconnue."); } $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); header('Location: /admin/parametres.php'); exit;