]> git.mxchange.org Git - friendica.git/commitdiff
Check more fields for the language
authorMichael <heluecht@pirati.ca>
Sun, 8 Oct 2023 06:44:37 +0000 (06:44 +0000)
committerMichael <heluecht@pirati.ca>
Sun, 8 Oct 2023 06:44:37 +0000 (06:44 +0000)
src/Model/Item.php
src/Model/Post/Engagement.php
src/Protocol/ActivityPub/Processor.php
src/Protocol/Relay.php

index 27bb58c78e9b9b3fd1ee7cb507afaa7dd0b323e1..d3ae8aa6c661e231814a68c8ebeecb0bd97c9777 100644 (file)
@@ -1212,8 +1212,6 @@ class Item
                // Check for hashtags in the body and repair or add hashtag links
                $item['body'] = self::setHashtags($item['body']);
 
-               $item['language'] = self::getLanguage($item);
-
                $notify_type = Delivery::POST;
 
                // Filling item related side tables
@@ -1262,6 +1260,8 @@ class Item
                        }
                }
 
+               $item['language'] = self::getLanguage($item);
+
                $inserted = Post::insert($item['uri-id'], $item);
 
                if ($item['gravity'] == self::GRAVITY_PARENT) {
@@ -1991,7 +1991,7 @@ class Item
                        return '';
                }
 
-               $languages = self::getLanguageArray(trim($item['title'] . "\n" . $item['body']), 3, $item['uri-id'], $item['author-id']);
+               $languages = self::getLanguageArray($item['title'] . ' ' . ($item['content-warning'] ?? '') . ' ' . $item['body'], 3, $item['uri-id'], $item['author-id']);
                if (empty($languages)) {
                        return '';
                }
index 9ffd48aa004250693db3785c066d3570b9724c86..017c34d19c9c2309b235b309dab16243f0e1ef83 100644 (file)
@@ -158,18 +158,7 @@ class Engagement
 
                $body .= ' ' . $item['title'] . ' ' . $item['content-warning'] . ' ' . $item['body'];
 
-               $body = preg_replace("~\[url\=.*\]https?:.*\[\/url\]~", '', $body);
-
-               $body = Post\Media::addAttachmentsToBody($item['uri-id'], $body, [Post\Media::IMAGE]);
-               $text = BBCode::toPlaintext($body, false);
-               $text = preg_replace(Strings::autoLinkRegEx(), '', $text);
-
-               do {
-                       $oldtext = $text;
-                       $text = str_replace(['  ', "\n", "\r"], ' ', $text);
-               } while ($oldtext != $text);
-
-               return $text;
+               return BBCode::toSearchText($body, $item['uri-id']);
        }
 
        private static function getMediaType(int $uri_id): int
index 3d020a747223bf91a5e4b8c7da28e9211ba28885..081596bcdb5241aa7b4204dcca11a64d07fb5440 100644 (file)
@@ -1652,7 +1652,19 @@ class Processor
                $attributed_to = JsonLD::fetchElement($activity['as:object'], 'as:attributedTo', '@id');
                $authorid = Contact::getIdForURL($attributed_to);
 
-               $body = HTML::toBBCode(JsonLD::fetchElement($activity['as:object'], 'as:content', '@value') ?? '');
+               $content = JsonLD::fetchElement($activity['as:object'], 'as:name', '@value') ?? '';
+               $content .= ' ' . JsonLD::fetchElement($activity['as:object'], 'as:summary', '@value') ?? '';
+               $content .= ' ' . HTML::toBBCode(JsonLD::fetchElement($activity['as:object'], 'as:content', '@value') ?? '');
+
+               $attachments = JsonLD::fetchElementArray($activity['as:object'], 'as:attachment') ?? [];
+               foreach ($attachments as $media) {
+                       if (!empty($media['as:summary'])) {
+                               $content .= ' ' . JsonLD::fetchElement($media, 'as:summary', '@value');
+                       }
+                       if (!empty($media['as:name'])) {
+                               $content .= ' ' . JsonLD::fetchElement($media, 'as:name', '@value');
+                       }
+               }
 
                $messageTags = [];
                $tags = Receiver::processTags(JsonLD::fetchElementArray($activity['as:object'], 'as:tag') ?? []);
@@ -1665,7 +1677,7 @@ class Processor
                        }
                }
 
-               return Relay::isSolicitedPost($messageTags, $body, $authorid, $id, Protocol::ACTIVITYPUB, $activity['thread-completion'] ?? 0);
+               return Relay::isSolicitedPost($messageTags, $content, $authorid, $id, Protocol::ACTIVITYPUB, $activity['thread-completion'] ?? 0);
        }
 
        /**
index 57bd7125570d7145ef3f796ca3c189b78c369913..c4432e59a3817dbd470c751dd4b72fca7b209f77 100644 (file)
@@ -125,7 +125,7 @@ class Relay
                        }
                }
 
-               if (!self::isWantedLanguage($body)) {
+               if (!self::isWantedLanguage($body, 0, $authorid)) {
                        Logger::info('Unwanted or Undetected language found - rejected', ['network' => $network, 'url' => $url, 'causer' => $causer, 'tags' => $tags]);
                        return false;
                }
@@ -166,12 +166,14 @@ class Relay
         * Detect the language of a post and decide if the post should be accepted
         *
         * @param string $body
+        * @param int    $uri_id
+        * @param int    $author_id
         * @return boolean
         */
-       public static function isWantedLanguage(string $body)
+       public static function isWantedLanguage(string $body, int $uri_id = 0, int $author_id = 0)
        {
                $languages = [];
-               foreach (Item::getLanguageArray($body, 10) as $language => $reliability) {
+               foreach (Item::getLanguageArray($body, 10, $uri_id, $author_id) as $language => $reliability) {
                        if ($reliability > 0) {
                                $languages[] = $language;
                        }