From fb6a435a6a8cbe6587976fd59017ae974fab003c Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 19 Mar 2022 15:25:00 +0000 Subject: [PATCH] Avoid empty notifications / fixed link to the content --- src/Navigation/Notifications/Factory/Notification.php | 7 +++---- .../Notifications/Repository/Notification.php | 10 ++++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/Navigation/Notifications/Factory/Notification.php b/src/Navigation/Notifications/Factory/Notification.php index ac3a2560e..4e40972ee 100644 --- a/src/Navigation/Notifications/Factory/Notification.php +++ b/src/Navigation/Notifications/Factory/Notification.php @@ -139,9 +139,7 @@ class Notification extends BaseFactory implements ICanCreateFromTableRow $this->logger->info('Parent post not found', ['uri-id' => $Notification->parentUriId]); return $message; } - if ($Notification->type == Post\UserNotification::TYPE_COMMENT_PARTICIPATION) { - $link_item = Post::selectFirst(['guid'], ['uri-id' => $Notification->targetUriId, 'uid' => [0, $Notification->uid]], ['order' => ['uid' => true]]); - } + $link_item = Post::selectFirstPost(['guid'], ['uri-id' => $Notification->targetUriId]); } else { $item = Post::selectFirst([], ['uri-id' => $Notification->targetUriId, 'uid' => [0, $Notification->uid]], ['order' => ['uid' => true]]); if (empty($item)) { @@ -156,6 +154,7 @@ class Notification extends BaseFactory implements ICanCreateFromTableRow return $message; } } + $link_item = $item; } if (in_array($Notification->type, [Post\UserNotification::TYPE_COMMENT_PARTICIPATION, Post\UserNotification::TYPE_ACTIVITY_PARTICIPATION, Post\UserNotification::TYPE_SHARED])) { @@ -166,7 +165,7 @@ class Notification extends BaseFactory implements ICanCreateFromTableRow } } - $link = $this->baseUrl . '/display/' . urlencode($link_item['guid'] ?? $item['guid']); + $link = $this->baseUrl . '/display/' . urlencode($link_item['guid']); $content = Plaintext::getPost($item, 70); if (!empty($content['text'])) { diff --git a/src/Navigation/Notifications/Repository/Notification.php b/src/Navigation/Notifications/Repository/Notification.php index 08ca1f095..8df93a005 100644 --- a/src/Navigation/Notifications/Repository/Notification.php +++ b/src/Navigation/Notifications/Repository/Notification.php @@ -27,6 +27,7 @@ use Friendica\BaseRepository; use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues; use Friendica\Database\Database; use Friendica\Database\DBA; +use Friendica\Model\Post\UserNotification; use Friendica\Model\Verb; use Friendica\Navigation\Notifications\Collection; use Friendica\Navigation\Notifications\Entity; @@ -137,7 +138,8 @@ class Notification extends BaseRepository */ public function selectDigestForUser(int $uid): Collection\Notifications { - $values = [$uid]; + $values = [$uid, Verb::getID(\Friendica\Protocol\Activity::ANNOUNCE), + UserNotification::TYPE_COMMENT_PARTICIPATION, UserNotification::TYPE_ACTIVITY_PARTICIPATION, UserNotification::TYPE_THREAD_COMMENT]; $like_condition = ''; if (!$this->pconfig->get($uid, 'system', 'notify_like')) { @@ -154,10 +156,10 @@ class Notification extends BaseRepository $rows = $this->db->p(" SELECT notification.* FROM notification - WHERE id IN ( + WHERE `id` IN ( SELECT MAX(`id`) - FROM notification - WHERE uid = ? + FROM `notification` + WHERE `uid` = ? AND NOT (`vid` = ? AND `type` IN (?, ?, ?)) $like_condition $announce_condition GROUP BY IFNULL(`parent-uri-id`, `actor-id`)