19 declare(strict_types=1);
43 private readonly
int $mail_expiration_days,
44 private readonly
int $mail_expiration_warning_days,
50 $this->db = $db ?? $DIC->database();
51 $this->clock = $clock ?? (
new Factory())->clock()->system();
53 $this->mark_as_notified_stmt = $this->db->prepareManip(
54 'INSERT INTO mail_cron_orphaned (mail_id, folder_id, ts_do_delete) VALUES (?, ?, ?)',
61 $notify_days_before = 1;
62 if ($this->mail_expiration_days > $this->mail_expiration_warning_days) {
63 $notify_days_before = $this->mail_expiration_days - $this->mail_expiration_warning_days;
66 $deletion_datetime = $this->clock->now()
67 ->modify(
'+ ' . $notify_days_before .
' days')
72 $folder_id = $folder_obj->getFolderId();
74 foreach ($folder_obj->getOrphanedMailObjects() as $mail_obj) {
75 $mail_id = $mail_obj->getMailId();
77 if ($i > 0 && $i % self::NOTIFICATION_MARKER_PING_THRESHOLD === 0) {
82 $this->mark_as_notified_stmt,
83 [$mail_id, $folder_id, $deletion_datetime->getTimestamp()]
93 $mail->setRecipients([$collection_obj->
getUserId()]);
94 $mail->setAdditionalInformation([
'mail_folders' => $collection_obj->
getFolderObjects()]);
98 public function send(): void
101 foreach ($this->collector->getCollection() as $collection_obj) {
102 if ($i > 0 && $i % self::MAIL_DELIVERY_PING_THRESHOLD === 0) {
markAsNotified(ReportDto $collection_obj)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
__construct(private readonly ilMailCronOrphanedMails $job, private readonly NotificationsCollector $collector, private readonly int $mail_expiration_days, private readonly int $mail_expiration_warning_days, ?ilDBInterface $db=null, ?ClockInterface $clock=null)
readonly ClockInterface $clock
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
readonly ilDBInterface $db
const NOTIFICATION_MARKER_PING_THRESHOLD
sendMail(ReportDto $collection_obj)
readonly ilDBStatement $mark_as_notified_stmt
const MAIL_DELIVERY_PING_THRESHOLD