From 1e5c1c4eac74da23ebe1ce866250cf6c5b3a9a1e Mon Sep 17 00:00:00 2001 From: yemkareems Date: Tue, 24 Sep 2024 17:13:15 +0530 Subject: [PATCH 1/6] fix: do not send daily digest email to user who is disabled --- lib/DigestSender.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/DigestSender.php b/lib/DigestSender.php index 523a2b23e..8cabea619 100644 --- a/lib/DigestSender.php +++ b/lib/DigestSender.php @@ -108,7 +108,7 @@ public function sendDigestForUser(string $uid, int $now, string $timezone, strin $this->groupHelper->setL10n($l10n); $lastSend = $this->getLastSendActivity($uid, $now); $user = $this->userManager->get($uid); - if ($lastSend === 0) { + if ($lastSend === 0 || !$user->isEnabled()) { return; } $this->activityManager->setCurrentUserId($uid); From b80ecf5fac5524c269fb30d428a68a243e393448 Mon Sep 17 00:00:00 2001 From: yemkareems Date: Wed, 9 Oct 2024 10:24:22 +0530 Subject: [PATCH 2/6] fix: do not send digest email for disabled user --- lib/DigestSender.php | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/lib/DigestSender.php b/lib/DigestSender.php index 8cabea619..de204be50 100644 --- a/lib/DigestSender.php +++ b/lib/DigestSender.php @@ -14,6 +14,7 @@ use OCP\IConfig; use OCP\IDateTimeFormatter; use OCP\IURLGenerator; +use OCP\IUser; use OCP\IUserManager; use OCP\L10N\IFactory; use OCP\Mail\IMailer; @@ -68,6 +69,12 @@ public function sendDigests(int $now): void { // User got todays digest already continue; } + $user = $this->userManager->get($user); + if(!$user->isEnabled()) { + // User is disabled so do not send the email but update last sent since after enabling avoid flooding + $this->updateLastSentForUser($user, $now); + continue; + } try { $this->sendDigestForUser($user, $now, $timezone, $language); @@ -103,12 +110,22 @@ private function getLastSendActivity(string $user, int $now): int { return $this->data->getFirstActivitySince($user, $now - (24 * 60 * 60)); } - public function sendDigestForUser(string $uid, int $now, string $timezone, string $language) { + public function updateLastSentForUser(IUser $user, int $now): void { + $uid = $user->getUID(); + $lastSend = $this->getLastSendActivity($uid, $now); + + ['count' => $count, 'max' => $lastActivityId] = $this->data->getActivitySince($uid, $lastSend, true); + $lastActivityId = (int)$lastActivityId; + + $this->config->setUserValue($uid, 'activity', 'activity_digest_last_send', (string)$lastActivityId); + } + + public function sendDigestForUser(IUser $user, int $now, string $timezone, string $language) { + $uid = $user->getUID(); $l10n = $this->l10nFactory->get('activity', $language); $this->groupHelper->setL10n($l10n); $lastSend = $this->getLastSendActivity($uid, $now); - $user = $this->userManager->get($uid); - if ($lastSend === 0 || !$user->isEnabled()) { + if ($lastSend === 0) { return; } $this->activityManager->setCurrentUserId($uid); From 235fad862c8d216148cf7a9abecdd6fe0108cfea Mon Sep 17 00:00:00 2001 From: yemkareems Date: Tue, 15 Oct 2024 10:18:29 +0530 Subject: [PATCH 3/6] fix: cs fix and psalm error fix --- lib/DigestSender.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/DigestSender.php b/lib/DigestSender.php index de204be50..832e2b8fc 100644 --- a/lib/DigestSender.php +++ b/lib/DigestSender.php @@ -70,7 +70,7 @@ public function sendDigests(int $now): void { continue; } $user = $this->userManager->get($user); - if(!$user->isEnabled()) { + if (!$user->isEnabled()) { // User is disabled so do not send the email but update last sent since after enabling avoid flooding $this->updateLastSentForUser($user, $now); continue; @@ -85,7 +85,7 @@ public function sendDigests(int $now): void { } // We still update the digest time after an failed email, // so it hopefully works tomorrow - $this->config->setUserValue($user, 'activity', 'digest', $timezoneDigestDay[$timezone]); + $this->config->setUserValue($user->getUID(), 'activity', 'digest', $timezoneDigestDay[$timezone]); } $this->activityManager->setRequirePNG(false); From 1e3f6895b23e53e05ea84d6c0c19914db1b9ec1c Mon Sep 17 00:00:00 2001 From: yemkareems Date: Fri, 18 Oct 2024 10:10:34 +0530 Subject: [PATCH 4/6] fix: updateLastSentForUser changed to private and removed count as it is not used Signed-off-by: yemkareems --- lib/DigestSender.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/DigestSender.php b/lib/DigestSender.php index 832e2b8fc..6e2004ac8 100644 --- a/lib/DigestSender.php +++ b/lib/DigestSender.php @@ -110,11 +110,11 @@ private function getLastSendActivity(string $user, int $now): int { return $this->data->getFirstActivitySince($user, $now - (24 * 60 * 60)); } - public function updateLastSentForUser(IUser $user, int $now): void { + private function updateLastSentForUser(IUser $user, int $now): void { $uid = $user->getUID(); $lastSend = $this->getLastSendActivity($uid, $now); - ['count' => $count, 'max' => $lastActivityId] = $this->data->getActivitySince($uid, $lastSend, true); + ['max' => $lastActivityId] = $this->data->getActivitySince($uid, $lastSend, true); $lastActivityId = (int)$lastActivityId; $this->config->setUserValue($uid, 'activity', 'activity_digest_last_send', (string)$lastActivityId); From 5ac19288f6077aae07e67fcc10b2506b20526565 Mon Sep 17 00:00:00 2001 From: yemkareems Date: Mon, 28 Oct 2024 10:08:45 +0530 Subject: [PATCH 5/6] fix: user renamed to userObject Signed-off-by: yemkareems [skip ci] --- lib/DigestSender.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/DigestSender.php b/lib/DigestSender.php index 6e2004ac8..17af79056 100644 --- a/lib/DigestSender.php +++ b/lib/DigestSender.php @@ -69,15 +69,15 @@ public function sendDigests(int $now): void { // User got todays digest already continue; } - $user = $this->userManager->get($user); - if (!$user->isEnabled()) { + $userObject = $this->userManager->get($user); + if (!$userObject->isEnabled()) { // User is disabled so do not send the email but update last sent since after enabling avoid flooding - $this->updateLastSentForUser($user, $now); + $this->updateLastSentForUser($userObject, $now); continue; } try { - $this->sendDigestForUser($user, $now, $timezone, $language); + $this->sendDigestForUser($userObject, $now, $timezone, $language); } catch (\Throwable $e) { $this->logger->error('Exception occurred while sending user digest email', [ 'exception' => $e, @@ -85,7 +85,7 @@ public function sendDigests(int $now): void { } // We still update the digest time after an failed email, // so it hopefully works tomorrow - $this->config->setUserValue($user->getUID(), 'activity', 'digest', $timezoneDigestDay[$timezone]); + $this->config->setUserValue($userObject->getUID(), 'activity', 'digest', $timezoneDigestDay[$timezone]); } $this->activityManager->setRequirePNG(false); From 6db3f79d1a1e7de57b1bc5e40ab5e24f42d9cedc Mon Sep 17 00:00:00 2001 From: yemkareems Date: Tue, 29 Oct 2024 08:23:29 +0530 Subject: [PATCH 6/6] fix: conflicts resolved Signed-off-by: yemkareems --- lib/DigestSender.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/DigestSender.php b/lib/DigestSender.php index 17af79056..ec99ef99d 100644 --- a/lib/DigestSender.php +++ b/lib/DigestSender.php @@ -131,8 +131,8 @@ public function sendDigestForUser(IUser $user, int $now, string $timezone, strin $this->activityManager->setCurrentUserId($uid); ['count' => $count, 'max' => $lastActivityId] = $this->data->getActivitySince($uid, $lastSend, true); - $count = (int) $count; - $lastActivityId = (int) $lastActivityId; + $count = (int)$count; + $lastActivityId = (int)$lastActivityId; if ($count === 0) { return; } @@ -198,7 +198,7 @@ public function sendDigestForUser(IUser $user, int $now, string $timezone, strin $this->activityManager->setCurrentUserId(null); try { $this->mailer->send($message); - $this->config->setUserValue($user->getUID(), 'activity', 'activity_digest_last_send', (string) $lastActivityId); + $this->config->setUserValue($uid, 'activity', 'activity_digest_last_send', (string)$lastActivityId); } catch (\Exception $e) { $this->logger->error($e->getMessage()); return; @@ -219,9 +219,9 @@ protected function getHTMLSubject(IEvent $event): string { $placeholders[] = '{' . $placeholder . '}'; if ($parameter['type'] === 'file') { - $replacement = (string) $parameter['path']; + $replacement = (string)$parameter['path']; } else { - $replacement = (string) $parameter['name']; + $replacement = (string)$parameter['name']; } if (isset($parameter['link'])) {