diff --git a/cronjobs/ReminderMail.php b/cronjobs/ReminderMail.php new file mode 100644 index 0000000000000000000000000000000000000000..f1b42e4f39fdc196a1fe83d44465acec34b07ebc --- /dev/null +++ b/cronjobs/ReminderMail.php @@ -0,0 +1,75 @@ +<?php +/** +* reminder_email.php +* +* @author Manuel Schwarz <manschwa@uos.de> +* @access public +*/ + +class ReminderEmail extends CronJob +{ + + public static function getName() + { + return 'Stundenzettel - Erinnerungsmail an NutzerInnen verschicken'; + } + + public static function getDescription() + { + return 'Sendet Erinnerungsmail an NutzerInnen welche ihren Stundenzettel noch nicht abgegeben haben.'; + } + + public function execute($last_result, $parameters = array()) + { + $month = (int) date('m', strtotime('last month')); // format: 5 + $year = (int) date('Y', strtotime('last month')); // format: 2021 + + $contracts = StundenzettelContract::getContractsByMonth($month, $year); + foreach ($contracts as $contract) { + $timesheet = StundenzettelTimesheet::getContractTimesheet($contract->id, $month, $year); + if (!$timesheet) { + sendMissingTimesheetMail($contract->user_id); + } elseif ($timesheet->overdue && !$timesheet->finished) { + sendOverdueMail($contract->user_id); + } + } + } + + private static function sendMissingTimesheetMail($user_id) + { + $subject = 'Erinnerung: Bitte nutzen Sie den digitalen virtUOS-Stundenzettel'; + $mailtext = "Sie erhalten diese automatisch generierte E-Mail, da Sie im letzten Monat beim virtUOS angestellt waren " + . "und bisher noch keinen Stundenzettel im Stundenzettel-Plugin in Stud.IP angelegt haben.\n" + . "Bitte holen Sie dies schnellstmöglich nach und füllen diesen entsprechend mit Ihren Arbeitszeiten aus.\n" + . "Vielen Dank. \n\n" + . "Mit freundlichen Grüßen,\n" + . "Ihr virtUOS-Team"; + sendReminderMail($user_id, $subject, $mailtext); + } + + private static function sendOverdueMail($user_id) + { + $subject = 'Erinnerung: Abgabe Ihres virtUOS-Stundenzettels'; + $mailtext = "Sie erhalten diese automatisch generierte E-Mail, da Sie im letzten Monat beim virtUOS angestellt waren " + . "und Ihren Stundenzettel im Stundenzettel-Plugin in Stud.IP bisher noch nicht abgegeben haben.\n" + . "Bitte holen Sie dies schnellstmöglich nach sobald Sie Ihre Arbeitszeiten entprechend eingetragen haben.\n" + . "Vielen Dank. \n\n" + . "Mit freundlichen Grüßen,\n" + . "Ihr virtUOS-Team"; + sendReminderMail($user_id, $subject, $mailtext); + } + + private static function sendReminderMail($user_id, $subject, $mailtext) + { + $recipient = User::find($user_id)->email; + $sender = "sekretariat-virtuos@uni-osnabrueck.de"; + + $mail = new StudipMail(); + return $mail->addRecipient($recipient) + ->setSenderEmail($sender) + ->setSenderName('Sekretariat virtUOS') + ->setSubject($subject) + ->setBodyText($mailtext) + ->send(); + } +} diff --git a/cronjobs/reminder_email.php b/cronjobs/reminder_email.php deleted file mode 100644 index 1ffa89fadf3451763300dbbc4b04daff61edfa28..0000000000000000000000000000000000000000 --- a/cronjobs/reminder_email.php +++ /dev/null @@ -1,95 +0,0 @@ -<?php -/** -* reminder_email.php -* -* @author Manuel Schwarz <manschwa@uos.de> -* @access public -*/ -require_once 'lib/classes/CronJob.class.php'; - - -class ReminderEmail extends CronJob -{ - - public static function getName() - { - return dgettext('Stundenzettel', 'Stundenzettel - Erinnerungsmail an NutzerInnen verschicken'); - } - - public static function getDescription() - { - return dgettext('Stundenzettel', 'Sendet Erinnerungsmail an NutzerInnen welche ihren Stundenzettel noch nicht abgegeben haben.'); - } - - public function execute($last_result, $parameters = array()) - { - $month = (int)date('m'); // format: 5 - $year = (int)date('Y'); // format: 2021 - - $month = $month - 1; - if ($month == 0) { // special case: turn of the year - $month = 12; - $year = $year - 1; - } - - $contracts = StundenzettelContract::getContractsByMonth($month, $year); - foreach ($contracts as $contract) { - $timesheet = StundenzettelTimesheet::getContractTimesheet($contract->id, $month, $year); - if (!$timesheet) { - sendMissingTimesheetMail($contract->user_id); - } elseif ($timesheet->overdue && !$timesheet->finished) { - sendOverdueMail($contract->user_id); - } - } - } - - private static function sendMissingTimesheetMail($user_id) - { - $mailtext = '<html> - - <body> - <h2>Erinnerung: Bitte nutzen Sie den digitalen Stundenzettel</h2> - <p>Sie erhalten diese E-Mail, da Sie im letzten Monat beim virtUOS angestellt waren und bisher noch keinen - Stundenzettel im Stundenzettel-Plugin in Stud.IP angelegt haben. Bitte holen Sie dies schnellstmöglich nach - und füllen diesen entsprechend mit Ihren Arbeitszeiten aus. Vielen Dank.</p> - <p>Mit freundlichen Grüßen,</p> - <p>Ihr virtUOS-Team</p> - </body> - </html> - '; - sendReminderMail($user_id, $mailtext); - } - - private static function sendOverdueMail($user_id) - { - $mailtext = '<html> - - <body> - <h2>Erinnerung: Abgabe Ihres Stundenzettels</h2> - <p>Sie erhalten diese E-Mail, da Sie im letzten Monat beim virtUOS angestellt waren und Ihren Stundenzettel - im Stundenzettel-Plugin in Stud.IP bisher noch nicht abgegeben haben. Bitte holen Sie dies schnellstmöglich nach - sobald Sie Ihre Arbeitszeiten entprechend eingetragen haben. Vielen Dank.</p> - <p>Mit freundlichen Grüßen,</p> - <p>Ihr virtUOS-Team</p> - </body> - </html> - '; - sendReminderMail($user_id, $mailtext); - } - - private static function sendReminderMail($user_id, $mailtext) - { - $recipient = User::find($user_id)->email; - $sender = "sekretariat-virtuos@uni-osnabrueck.de"; - $subject = "Erinnerung: Stundenzettel virtUOS"; - - $mail = new StudipMail(); - return $mail->addRecipient($recipient) - ->setSenderEmail($sender) - ->setSenderName('Sekretariat virtUOS') - ->setSubject($subject) - ->setBodyHtml($mailtext) - ->setBodyText(strip_tags($mailtext)) - ->send(); - } -} diff --git a/migrations/003_cronjob_reminder_email.php b/migrations/003_cronjob_reminder_email.php index fa1a211bb705c927ac10d4950a13a7abab3be6f7..2c52ab1ada7194a55ecfb1622ffda1bd4f30be0c 100644 --- a/migrations/003_cronjob_reminder_email.php +++ b/migrations/003_cronjob_reminder_email.php @@ -8,7 +8,7 @@ class CronjobReminderEmail extends Migration { - const FILENAME = 'public/plugins_packages/virtUOS/Stundenzettel/cronjobs/reminder_email.php'; + const FILENAME = 'public/plugins_packages/virtUOS/Stundenzettel/cronjobs/ReminderEmail.php'; public function description() { @@ -19,9 +19,9 @@ class CronjobReminderEmail extends Migration { $task_id = CronjobScheduler::registerTask(self::FILENAME, true); - // Schedule job to run every day at 23:59 + // Schedule job to run every day at 03:00 o'clock if ($task_id) { - CronjobScheduler::schedulePeriodic($task_id, -1); // negative value means "every x minutes" + CronjobScheduler::schedulePeriodic($task_id, 0, 3); } }