diff --git a/scripts/send_missing_results_reminder.php b/scripts/send_missing_results_reminder.php new file mode 100644 index 0000000..feef687 --- /dev/null +++ b/scripts/send_missing_results_reminder.php @@ -0,0 +1,53 @@ +getQuery(true) + ->select('t.*, u.email AS user_email, v.email AS verband_email') + ->from('#__sportsmanager_turnier AS t') + ->leftJoin('#__users AS u ON t.responsible_user_id = u.id') + ->leftJoin('#__sportsmanager_verband AS v ON t.verband_id = v.verband_id') + ->where('t.letzter_tag BETWEEN ' . $db->quote($twoWeeksAgo) . ' AND ' . $db->quote($oneDayAgo)) + ->where('NOT EXISTS (SELECT 1 FROM #__sportsmanager_turnierergebnis e WHERE e.turnier_id = t.turnier_id)') + ->where('(t.reminder_sent IS NULL OR t.reminder_sent < DATE_SUB(' . $db->quote($now) . ', INTERVAL 1 DAY))'); + $db->setQuery($query); + $tournaments = $db->loadObjectList(); + + foreach ($tournaments as $tournament) { + $mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer(); + $config = Factory::getConfig(); + $mailer->setSender([$config->get('mailfrom'), $config->get('fromname')]); + $mailer->setSubject('Erinnerung: Turnierergebnisse fehlen für ' . $tournament->turnierbezeichnung); + $body = "Für das Turnier '" . $tournament->turnierbezeichnung . "' am " . $tournament->letzter_tag . + " wurden noch keine Ergebnisse hochgeladen. Laut Turnierordnung müssen die Ergebnisse spätestens 24 Stunden nach Turnierende eingetragen werden. Bitte reichen Sie die Ergebnisse umgehend nach."; + $mailer->setBody($body); + $mailer->addRecipient($tournament->user_email); + if (!empty($tournament->verband_email)) { + $mailer->addBcc($tournament->verband_email); + } + $mailer->send(); + + // Mark reminder as sent (or log in a separate table for multiple reminders) + $db->setQuery('UPDATE #__sportsmanager_turnier SET reminder_sent = ' . $db->quote($now) . ' WHERE turnier_id = ' . (int)$tournament->turnier_id); + $db->execute(); + } +} + +sendMissingTournamentResultsReminders();