From a07e47f50c15cfdf27368616c7ac8d9b982c5e23 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 6 Jun 2022 05:43:24 +0000 Subject: [PATCH] Improved handling with empty user configuration --- .../Notifications/Repository/Notification.php | 20 ++++++++++++++++--- .../Notifications/Repository/Notify.php | 9 +++++++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/Navigation/Notifications/Repository/Notification.php b/src/Navigation/Notifications/Repository/Notification.php index e7ef062114..bb835c33e9 100644 --- a/src/Navigation/Notifications/Repository/Notification.php +++ b/src/Navigation/Notifications/Repository/Notification.php @@ -117,7 +117,13 @@ class Notification extends BaseRepository */ public function selectDetailedForUser(int $uid): Collection\Notifications { - $condition = ["`type` & ? != 0", $this->pconfig->get($uid, 'system', 'notify_type', 3 | 72 | 4 | 16 | 32) | 128 | 256]; + $notify_type = $this->pconfig->get($uid, 'system', 'notify_type'); + if (!is_null($notify_type)) { + $condition = ["`type` & ? != 0", $notify_type | UserNotification::TYPE_SHARED | UserNotification::TYPE_FOLLOW]; + } else { + $condition = []; + } + if (!$this->pconfig->get($uid, 'system', 'notify_like')) { $condition = DBA::mergeConditions($condition, ['NOT `vid` IN (?, ?)', Verb::getID(\Friendica\Protocol\Activity::LIKE), Verb::getID(\Friendica\Protocol\Activity::DISLIKE)]); } @@ -138,7 +144,14 @@ class Notification extends BaseRepository */ public function selectDigestForUser(int $uid): Collection\Notifications { - $values = [$uid, $this->pconfig->get($uid, 'system', 'notify_type', 3 | 72 | 4 | 16 | 32) | 128 | 256]; + $values = [$uid]; + + $type_condition = ''; + $notify_type = $this->pconfig->get($uid, 'system', 'notify_type'); + if (!is_null($notify_type)) { + $type_condition = 'AND `type` & ? != 0'; + $values[] = $notify_type | UserNotification::TYPE_SHARED | UserNotification::TYPE_FOLLOW; + } $like_condition = ''; if (!$this->pconfig->get($uid, 'system', 'notify_like')) { @@ -159,7 +172,8 @@ class Notification extends BaseRepository WHERE `id` IN ( SELECT MAX(`id`) FROM `notification` - WHERE `uid` = ? AND `type` & ? != 0 + WHERE `uid` = ? + $type_condition $like_condition $announce_condition GROUP BY IFNULL(`parent-uri-id`, `actor-id`) diff --git a/src/Navigation/Notifications/Repository/Notify.php b/src/Navigation/Notifications/Repository/Notify.php index 1cfd7ff740..be5c6d7318 100644 --- a/src/Navigation/Notifications/Repository/Notify.php +++ b/src/Navigation/Notifications/Repository/Notify.php @@ -675,9 +675,14 @@ class Notify extends BaseRepository return true; } - $notify_type = $this->pConfig->get($Notification->uid, 'system', 'notify_type', 3 | 72 | 4 | 16 | 32); + $notify_type = $this->pConfig->get($Notification->uid, 'system', 'notify_type'); - if ($notify_type & $Notification->type) { + // Fallback for the case when the notify type isn't set at all + if (is_null($notify_type) && !in_array($type, [Notification::TYPE_RESHARE, Notification::TYPE_LIKE])) { + return true; + } + + if (!is_null($notify_type) && ($notify_type & $Notification->type)) { return true; }