]> git.mxchange.org Git - friendica.git/commitdiff
Avoid empty notifications / fixed link to the content
authorMichael <heluecht@pirati.ca>
Sat, 19 Mar 2022 15:25:00 +0000 (15:25 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 19 Mar 2022 15:25:00 +0000 (15:25 +0000)
src/Navigation/Notifications/Factory/Notification.php
src/Navigation/Notifications/Repository/Notification.php

index ac3a2560e8451005bae86ad860c069f2cbb15432..4e40972eeb2a9120cd67f9742626e7b6712a97ff 100644 (file)
@@ -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'])) {
index 08ca1f095b9c13ed688e492fe23cadce81dc5a13..8df93a005805055dcaa0e07be1fb1243540e990f 100644 (file)
@@ -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`)