Create notifications for shared posts
authorMichael <heluecht@pirati.ca>
Wed, 12 Aug 2020 04:35:24 +0000 (04:35 +0000)
committerMichael <heluecht@pirati.ca>
Wed, 12 Aug 2020 04:35:24 +0000 (04:35 +0000)
include/enotify.php
src/Model/UserItem.php

index 6b3171d..732c1d7 100644 (file)
@@ -597,7 +597,7 @@ function check_item_notification($itemid, $uid, $notification_type) {
        $fields = ['id', 'uri-id', 'mention', 'parent', 'parent-uri-id', 'title', 'body',
                'author-link', 'author-name', 'author-avatar', 'author-id',
                'guid', 'parent-uri', 'uri', 'contact-id', 'network'];
-       $condition = ['id' => $itemid, 'gravity' => [GRAVITY_PARENT, GRAVITY_COMMENT], 'deleted' => false];
+       $condition = ['id' => $itemid, 'deleted' => false];
        $item = Item::selectFirstForUser($uid, $fields, $condition);
        if (!DBA::isResult($item)) {
                return false;
index afb1382..0b542de 100644 (file)
@@ -27,6 +27,7 @@ use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Util\Strings;
 use Friendica\Model\Tag;
+use Friendica\Protocol\Activity;
 
 class UserItem
 {
@@ -50,7 +51,8 @@ class UserItem
         */
        public static function setNotification(int $iid)
        {
-               $fields = ['id', 'uri-id', 'uid', 'body', 'parent', 'gravity', 'tag', 'contact-id', 'thr-parent', 'parent-uri', 'author-id'];
+               $fields = ['id', 'uri-id', 'uid', 'body', 'parent', 'gravity', 'tag',
+                       'contact-id', 'thr-parent', 'parent-uri', 'author-id', 'verb'];
                $item = Item::selectFirst($fields, ['id' => $iid, 'origin' => false]);
                if (!DBA::isResult($item)) {
                        return;
@@ -197,7 +199,7 @@ class UserItem
         */
        private static function checkShared(array $item, int $uid)
        {
-               if ($item['gravity'] != GRAVITY_PARENT) {
+               if (($item['gravity'] != GRAVITY_PARENT) && ($item['verb'] != Activity::ANNOUNCE)) {
                        return false;
                }
 
@@ -206,6 +208,10 @@ class UserItem
                        return true;
                }
 
+               if ($item['gravity'] != GRAVITY_PARENT) {
+                       return false;
+               }
+
                // Or the contact is a mentioned forum
                $tags = DBA::select('tag-view', ['url'], ['uri-id' => $item['uri-id'], 'type' => [Tag::MENTION, Tag::EXCLUSIVE_MENTION]]);
                while ($tag = DBA::fetch($tags)) {