diff options
| author | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2025-06-26 21:21:45 +0200 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2025-06-27 09:35:56 +0200 |
| commit | 21de23de35e29cd9c7ed8aca476df151900d98e7 (patch) | |
| tree | b09e3e0492d843f01434caf38a5a333e827cf7d1 /lib | |
| parent | fdba4b0de281abbd8ebfc2799dcc0b12c7f2b988 (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.php | 36 |
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; } /** |
