]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/DFRN.php
Merge pull request #9397 from vinzv/9238-red-color-unread-messages-faded
[friendica.git] / src / Protocol / DFRN.php
index 31e6173870b4ddbfe77299214a139187501f92ce..d20864cf7f8515e55555adf83e8f10445d0e9b72 100644 (file)
@@ -2183,6 +2183,25 @@ class DFRN
                }
        }
 
+       /**
+        * Checks if an incoming message is wanted
+        *
+        * @param array $item
+        * @return boolean Is the message wanted?
+        */
+       private static function isSolicitedMessage(array $item)
+       {
+               if (DBA::exists('contact', ["`nurl` = ? AND `uid` != ? AND `rel` IN (?, ?)",
+                       Strings::normaliseLink($item["author-link"]), 0, Contact::FRIEND, Contact::SHARING])) {
+                       Logger::info('Author has got followers - accepted', ['uri' => $item['uri'], 'author' => $item["author-link"]]);
+                       return true;
+               }
+
+               $taglist = Tag::getByURIId($item['uri-id'], [Tag::HASHTAG]);
+               $tags = array_column($taglist, 'name');
+               return Relay::isSolicitedPost($tags, $item['body'], $item['author-id'], $item['uri'], Protocol::DFRN);
+       }
+
        /**
         * Processes the entry elements which contain the items and comments
         *
@@ -2372,6 +2391,14 @@ class DFRN
                        }
                }
 
+               // Check if the message is wanted
+               if (($importer["importer_uid"] == 0) && ($item['uri'] == $item['parent-uri'])) {
+                       if (!self::isSolicitedMessage($item)) {
+                               DBA::delete('item-uri', ['uri' => $item['uri']]);
+                               return 403;
+                       }
+               }
+                               
                // Get the type of the item (Top level post, reply or remote reply)
                $entrytype = self::getEntryType($importer, $item);