From 0cd02631ce8a23dd475ff72aee8076ec8b9b2389 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 24 Jan 2021 11:40:09 +0000 Subject: [PATCH] New setting that controls notifications for ignored contacts --- include/enotify.php | 5 +++++ mod/settings.php | 9 ++++++++- view/templates/settings/settings.tpl | 2 ++ view/theme/frio/templates/settings/settings.tpl | 2 ++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/include/enotify.php b/include/enotify.php index 9e59f63259..270b41e24b 100644 --- a/include/enotify.php +++ b/include/enotify.php @@ -624,6 +624,11 @@ function check_item_notification($itemid, $uid, $notification_type) { return false; } + if (DI::pConfig()->get(local_user(), 'system', 'notify_ignored', true) && Contact\User::isIgnored($item['author-id'], $uid)) { + Logger::info('Author is ignored, dropping notification', ['cid' => $item['author-id'], 'uid' => $uid]); + return false; + } + // Generate the notification array $params = []; $params['otype'] = Notify\ObjectType::ITEM; diff --git a/mod/settings.php b/mod/settings.php index 6c41856a4f..c84be2a5ac 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -323,6 +323,8 @@ function settings_post(App $a) $email_textonly = (($_POST['email_textonly'] == 1) ? 1 : 0); $detailed_notif = (($_POST['detailed_notif'] == 1) ? 1 : 0); + $notify_ignored = (($_POST['notify_ignored'] == 1) ? 1 : 0); + $notify = 0; if (!empty($_POST['notify1'])) { @@ -416,6 +418,7 @@ function settings_post(App $a) DI::pConfig()->set(local_user(), 'system', 'email_textonly', $email_textonly); DI::pConfig()->set(local_user(), 'system', 'detailed_notif', $detailed_notif); + DI::pConfig()->set(local_user(), 'system', 'notify_ignored', $notify_ignored); DI::pConfig()->set(local_user(), 'system', 'unlisted', $unlisted); DI::pConfig()->set(local_user(), 'system', 'accessible-photos', $accessiblephotos); @@ -911,7 +914,11 @@ function settings_content(App $a) DI::pConfig()->get(local_user(), 'system', 'detailed_notif'), DI::l10n()->t('Per default, notifications are condensed to a single notification per item. When enabled every notification is displayed.')], - '$h_advn' => DI::l10n()->t('Advanced Account/Page Type Settings'), + '$notify_ignored' => ['notify_ignored', DI::l10n()->t('Show notifications of ignored contacts') , + DI::pConfig()->get(local_user(), 'system', 'notify_ignored', true), + DI::l10n()->t("You don't see posts from ignored contacts. But you still see their comments. This setting controls if you want to still receive regular notifications that are caused by ignored contacts or not.")], + + '$h_advn' => DI::l10n()->t('Advanced Account/Page Type Settings'), '$h_descadvn' => DI::l10n()->t('Change the behaviour of this account for special situations'), '$pagetype' => $pagetype, diff --git a/view/templates/settings/settings.tpl b/view/templates/settings/settings.tpl index bd0fa5f202..772acd12ef 100644 --- a/view/templates/settings/settings.tpl +++ b/view/templates/settings/settings.tpl @@ -101,6 +101,8 @@ {{include file="field_checkbox.tpl" field=$email_textonly}} {{include file="field_checkbox.tpl" field=$detailed_notif}} + {{include file="field_checkbox.tpl" field=$notify_ignored}} + {{include file="field_checkbox.tpl" field=$desktop_notifications}}