aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@arthur-schiwon.de>2022-10-18 23:36:14 +0200
committerArthur Schiwon <blizzz@arthur-schiwon.de>2022-10-18 23:36:14 +0200
commit7d3457ec7364bdf14386ebe797a197e5efd785da (patch)
treefe1c42bb9eea2e33ac9d41ea3bcb49fd49641d89
parent50d4963772f290463c8addb73f7c5f392050bbba (diff)
downloadnextcloud-server-7d3457ec7364bdf14386ebe797a197e5efd785da.tar.gz
nextcloud-server-7d3457ec7364bdf14386ebe797a197e5efd785da.zip
improve admin notification experience
- do not stack notifications, replace them - and replace them once a day only - with LDAP it might end in total spam terror (also push) otherwise Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
-rw-r--r--lib/private/Support/Subscription/Registry.php35
1 files changed, 27 insertions, 8 deletions
diff --git a/lib/private/Support/Subscription/Registry.php b/lib/private/Support/Subscription/Registry.php
index ba3642d021c..87070e7a0dc 100644
--- a/lib/private/Support/Subscription/Registry.php
+++ b/lib/private/Support/Subscription/Registry.php
@@ -215,19 +215,38 @@ class Registry implements IRegistry {
return $userCount;
}
- private function notifyAboutReachedUserLimit(IManager $notificationManager) {
+ private function notifyAboutReachedUserLimit(IManager $notificationManager): void {
$admins = $this->groupManager->get('admin')->getUsers();
- foreach ($admins as $admin) {
- $notification = $notificationManager->createNotification();
- $notification->setApp('core')
- ->setUser($admin->getUID())
- ->setDateTime(new \DateTime())
- ->setObject('user_limit_reached', '1')
- ->setSubject('user_limit_reached');
+ $notification = $notificationManager->createNotification();
+ $notification->setApp('core')
+ ->setObject('user_limit_reached', '1')
+ ->setSubject('user_limit_reached');
+
+ if ($notificationManager->getCount($notification) > 0
+ && !$this->reIssue()
+ ) {
+ return;
+ }
+
+ $notificationManager->markProcessed($notification);
+ $notification->setDateTime(new \DateTime());
+
+ foreach ($admins as $admin) {
+ $notification->setUser($admin->getUID());
$notificationManager->notify($notification);
}
$this->logger->warning('The user limit was reached and the new user was not created', ['app' => 'lib']);
}
+
+ protected function reIssue(): bool {
+ $lastNotification = (int)$this->config->getAppValue('lib', 'last_subscription_reminder', '0');
+
+ if ((time() - $lastNotification) >= 86400) {
+ $this->config->setAppValue('lib', 'last_subscription_reminder', (string)time());
+ return true;
+ }
+ return false;
+ }
}