diff --git a/lib/MailQueueHandler.php b/lib/MailQueueHandler.php index e7ed24cb1..5de9fd27f 100644 --- a/lib/MailQueueHandler.php +++ b/lib/MailQueueHandler.php @@ -64,7 +64,7 @@ public function __construct( * @param $limit Number of users we want to send an email to * @param $sendTime The latest send time * @param $forceSending Ignores latest send and just sends all emails - * @param $restrictEmails null or one of UserSettings::EMAIL_SEND_* + * @param $restrictEmails null or one of UserSettings::EMAIL_SEND_*, will overwrite force send * @return int Number of users we sent an email to */ public function sendEmails(int $limit, int $sendTime, bool $forceSending = false, ?int $restrictEmails = null): int { @@ -141,12 +141,6 @@ protected function getAffectedUsers(?int $limit, int $latestSend, bool $forceSen $query->setMaxResults($limit); } - if ($forceSending) { - $query->where($query->expr()->lt('amq_timestamp', $query->createNamedParameter($latestSend))); - } else { - $query->where($query->expr()->lt('amq_latest_send', $query->createNamedParameter($latestSend))); - } - if ($restrictEmails !== null) { if ($restrictEmails === UserSettings::EMAIL_SEND_HOURLY) { $query->where($query->expr()->eq('amq_timestamp', $query->func()->subtract('amq_latest_send', $query->expr()->literal(3600)))); @@ -157,6 +151,22 @@ protected function getAffectedUsers(?int $limit, int $latestSend, bool $forceSen } elseif ($restrictEmails === UserSettings::EMAIL_SEND_ASAP) { $query->where($query->expr()->eq('amq_timestamp', 'amq_latest_send')); } + + $result = $query->executeQuery(); + + $affectedUsers = []; + while ($row = $result->fetch()) { + $affectedUsers[] = $row['amq_affecteduser']; + } + $result->closeCursor(); + + return $affectedUsers; + } + + if ($forceSending) { + $query->where($query->expr()->lt('amq_timestamp', $query->createNamedParameter($latestSend))); + } else { + $query->where($query->expr()->lt('amq_latest_send', $query->createNamedParameter($latestSend))); } $result = $query->executeQuery(); @@ -294,7 +304,7 @@ protected function sendEmailToUser(string $userName, string $email, string $lang function ($event) use ($timezone, $l) { return [ 'event' => $event, - 'relativeDateTime' => $this->dateFormatter->formatDateTimeRelativeDay( + 'dateTime' => $this->dateFormatter->formatDateTime( $event->getTimestamp(), 'long', 'short', new \DateTimeZone($timezone), $l @@ -322,9 +332,9 @@ function ($event) use ($timezone, $l) { foreach ($activityEvents as $activity) { $event = $activity['event']; - $relativeDateTime = $activity['relativeDateTime']; + $activityDateTime = $activity['dateTime']; - $template->addBodyListItem($this->getHTMLSubject($event), $relativeDateTime, $event->getIcon(), $event->getParsedSubject()); + $template->addBodyListItem($this->getHTMLSubject($event), $activityDateTime, $event->getIcon(), $event->getParsedSubject()); } if ($skippedCount) {