getConnection(); $eventId = (int) ($_POST['id'] ?? 0); $message = trim($_POST['message'] ?? ''); $meetingLink = trim($_POST['meeting_link'] ?? ''); if ($eventId <= 0) { header('Location: events.php'); exit(); } // Accetta solo link http/https come punto di ritrovo if ($meetingLink !== '' && !preg_match('#^https?://#i', $meetingLink)) { $meetingLink = ''; } try { $es = $pdo->prepare("SELECT * FROM events WHERE id = ?"); $es->execute([$eventId]); $event = $es->fetch(PDO::FETCH_ASSOC); if (!$event) { header('Location: events.php?message=error'); exit(); } $ps = $pdo->prepare("SELECT * FROM event_bookings WHERE event_id = ? AND status = 'confirmed'"); $ps->execute([$eventId]); $participants = $ps->fetchAll(PDO::FETCH_ASSOC); foreach ($participants as $p) { try { yse_mail_reminder($p, $event, $message, $meetingLink); } catch (Throwable $me) { error_log('[reminder send] ' . $me->getMessage()); } } $pdo->prepare("UPDATE events SET reminder_sent_at = NOW() WHERE id = ?")->execute([$eventId]); header('Location: event_reminder.php?id=' . $eventId . '&message=sent'); exit(); } catch (Throwable $ex) { error_log('[event_reminder_send] ' . $ex->getMessage()); header('Location: event_reminder.php?id=' . $eventId . '&message=error'); exit(); }