59 lines
1.7 KiB
PHP
59 lines
1.7 KiB
PHP
<?php
|
|
require_once('include/headscript.php');
|
|
require_once('include/event_mailer.php');
|
|
|
|
/**
|
|
* Invio del promemoria manuale a tutti gli iscritti confermati di un evento.
|
|
*/
|
|
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
|
header('Location: events.php');
|
|
exit();
|
|
}
|
|
|
|
$pdo = DBHandlerSelect::getInstance()->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();
|
|
}
|