aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_reminders/lib/BackgroundJob/ScheduledNotifications.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_reminders/lib/BackgroundJob/ScheduledNotifications.php')
-rw-r--r--apps/files_reminders/lib/BackgroundJob/ScheduledNotifications.php44
1 files changed, 44 insertions, 0 deletions
diff --git a/apps/files_reminders/lib/BackgroundJob/ScheduledNotifications.php b/apps/files_reminders/lib/BackgroundJob/ScheduledNotifications.php
new file mode 100644
index 00000000000..ab8c762d674
--- /dev/null
+++ b/apps/files_reminders/lib/BackgroundJob/ScheduledNotifications.php
@@ -0,0 +1,44 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace OCA\FilesReminders\BackgroundJob;
+
+use OCA\FilesReminders\Db\ReminderMapper;
+use OCA\FilesReminders\Service\ReminderService;
+use OCP\AppFramework\Db\DoesNotExistException;
+use OCP\AppFramework\Utility\ITimeFactory;
+use OCP\BackgroundJob\TimedJob;
+use Psr\Log\LoggerInterface;
+
+class ScheduledNotifications extends TimedJob {
+ public function __construct(
+ ITimeFactory $time,
+ protected ReminderMapper $reminderMapper,
+ protected ReminderService $reminderService,
+ protected LoggerInterface $logger,
+ ) {
+ parent::__construct($time);
+
+ $this->setInterval(60);
+ }
+
+ /**
+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+ */
+ public function run($argument) {
+ $reminders = $this->reminderMapper->findOverdue();
+ foreach ($reminders as $reminder) {
+ try {
+ $this->reminderService->send($reminder);
+ } catch (DoesNotExistException $e) {
+ $this->logger->debug('Could not send notification for reminder with id ' . $reminder->getId());
+ }
+ }
+ }
+}