aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJan-Hendrik Willms <tleilax+studip@gmail.com>2025-06-26 21:21:45 +0200
committerJan-Hendrik Willms <tleilax+studip@gmail.com>2025-06-27 09:35:56 +0200
commit21de23de35e29cd9c7ed8aca476df151900d98e7 (patch)
treeb09e3e0492d843f01434caf38a5a333e827cf7d1 /lib
parentfdba4b0de281abbd8ebfc2799dcc0b12c7f2b988 (diff)
send courseware mail in chunks, fixes #5659
Closes #5659 Merge request studip/studip!4297
Diffstat (limited to 'lib')
-rw-r--r--lib/cronjobs/courseware.php36
1 files changed, 21 insertions, 15 deletions
diff --git a/lib/cronjobs/courseware.php b/lib/cronjobs/courseware.php
index 38c9807..1ea371c 100644
--- a/lib/cronjobs/courseware.php
+++ b/lib/cronjobs/courseware.php
@@ -206,7 +206,7 @@ class CoursewareCronjob extends CronJob
$unit->range_id, $unit->id);
}
- if ($this->resetProgress($unit, $blocks, $unit->config['reset_progress']['mailText'])) {
+ if ($this->resetProgress($unit, $blocks)) {
$unit->config['last_progress_reset'] = time();
}
}
@@ -318,24 +318,30 @@ class CoursewareCronjob extends CronJob
$recipients = $course->getMembersWithStatus('autor', true);
- $mail = new StudipMail();
+ foreach (array_chunk($recipients, 100) as $chunkedRecipients) {
+ $mail = new StudipMail();
- foreach ($recipients as $rec) {
- $mail->addRecipient(
- $rec->email,
- $rec->getUserFullname(),
- 'bcc'
- );
- }
+ foreach ($chunkedRecipients as $rec) {
+ $mail->addRecipient(
+ $rec->email,
+ $rec->getUserFullname(),
+ 'bcc'
+ );
+ }
- $message = $unit->config['reset_progress']['mailText'] . "\n\n" .
- sprintf(_('Sie können das Lernmaterial [direkt hier aufrufen]%s .'),
- URLHelper::getURL('dispatch.php/course/courseware/courseware/' . $unit->id, ['cid' => $course->id]));
+ $message = $unit->config['reset_progress']['mailText'] . "\n\n" .
+ sprintf(_('Sie können das Lernmaterial [direkt hier aufrufen]%s .'),
+ URLHelper::getURL('dispatch.php/course/courseware/courseware/' . $unit->id, ['cid' => $course->id]));
- $mail->setSubject(_('Courseware: Fortschritt zurückgesetzt') . ' - ' . $course->getFullname())
- ->setBodyText($message);
+ $mail->setSubject(_('Courseware: Fortschritt zurückgesetzt') . ' - ' . $course->getFullname())
+ ->setBodyText($message);
- return $mail->send();
+ if (!$mail->send()) {
+ return false;
+ }
+ }
+
+ return true;
}
/**