diff --git a/src/Content/Conversation/Repository/UserDefinedChannel.php b/src/Content/Conversation/Repository/UserDefinedChannel.php index eb39abefb6..f0a0f3efe8 100644 --- a/src/Content/Conversation/Repository/UserDefinedChannel.php +++ b/src/Content/Conversation/Repository/UserDefinedChannel.php @@ -197,6 +197,10 @@ class UserDefinedChannel extends \Friendica\BaseRepository return []; } + array_walk($tags, function (&$value) { + $value = mb_strtolower($value); + }); + $this->db->insert('check-full-text-search', ['pid' => getmypid(), 'searchtext' => $searchtext], Database::INSERT_UPDATE); $uids = []; diff --git a/src/Model/Item.php b/src/Model/Item.php index d49d6e2390..a9361f0fbb 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1458,25 +1458,34 @@ class Item $item = Post::selectFirst(['id', 'private', 'network', 'language', 'owner-id'], ['uri-id' => $uri_id, 'uid' => 0]); if (empty($item['id'])) { + Logger::debug('Post not found', ['uri-id' => $uri_id]); return; } if (($item['private'] != self::PUBLIC) || !in_array($item['network'], [Protocol::ACTIVITYPUB, Protocol::DFRN])) { + Logger::debug('Not a public post or no AP or DFRN post', ['uri-id' => $uri_id]); return; } $engagement = DBA::selectFirst('post-engagement', ['searchtext', 'media-type'], ['uri-id' => $uri_id]); if (empty($engagement['searchtext'])) { + Logger::debug('No engagement found', ['uri-id' => $uri_id]); return; } $language = !empty($item['language']) ? array_key_first(json_decode($item['language'], true)) : ''; $tags = array_column(Tag::getByURIId($uri_id, [Tag::HASHTAG]), 'name'); + Logger::debug('Prepare check', ['uri-id' => $uri_id, 'language' => $language, 'tags' => $tags, 'searchtext' => $engagement['searchtext'], 'media_type' => $engagement['media-type'], 'owner' => $item['owner-id']]); + + $count = 0; foreach (DI::userDefinedChannel()->getMatchingChannelUsers($engagement['searchtext'], $language, $tags, $engagement['media-type'], $item['owner-id']) as $uid) { - Logger::debug('Reshare post', ['uid' => $uid, 'uri-id' => $uri_id, 'language' => $language, 'tags' => $tags, 'searchtext' => $engagement['searchtext'], 'media_type' => $engagement['media-type']]); + Logger::debug('Reshare post', ['uid' => $uid, 'uri-id' => $uri_id]); self::performActivity($item['id'], 'announce', $uid); + $count++; } + + Logger::debug('Check done', ['uri-id' => $uri_id, 'count' => $count]); } /** diff --git a/src/Model/Post/Engagement.php b/src/Model/Post/Engagement.php index 4070112752..0476e08ca2 100644 --- a/src/Model/Post/Engagement.php +++ b/src/Model/Post/Engagement.php @@ -69,10 +69,14 @@ class Engagement $store = Contact::hasFollowers($parent['owner-id']); } + if (!$store && ($parent['owner-id'] != $parent['author-id'])) { + $store = Contact::hasFollowers($parent['author-id']); + } + if (!$store) { $tagList = Relay::getSubscribedTags(); foreach (array_column(Tag::getByURIId($item['parent-uri-id'], [Tag::HASHTAG]), 'name') as $tag) { - if (in_array($tag, $tagList)) { + if (in_array(mb_strtolower($tag), $tagList)) { $store = true; break; } @@ -120,7 +124,7 @@ class Engagement $ret = DBA::insert('post-engagement', $engagement); Logger::debug('Engagement inserted', ['uri-id' => $engagement['uri-id'], 'ret' => $ret]); } - return ($ret || !$exists) ? $engagement['uri-id'] : 0; + return ($ret && !$exists) ? $engagement['uri-id'] : 0; } public static function getSearchTextForActivity(string $content, int $author_id, array $tags, array $receivers): string