]> git.mxchange.org Git - friendica.git/commitdiff
Use different parser modes for Mastodon and Twitter-API
authorMichael <heluecht@pirati.ca>
Sun, 6 Nov 2022 20:02:43 +0000 (20:02 +0000)
committerMichael <heluecht@pirati.ca>
Sun, 6 Nov 2022 20:02:43 +0000 (20:02 +0000)
src/Content/Text/BBCode.php
src/Content/Text/Plaintext.php
src/Factory/Api/Twitter/DirectMessage.php
src/Factory/Api/Twitter/Status.php
src/Model/Event.php
src/Module/Api/Friendica/Profile/Show.php
src/Object/Api/Mastodon/ScheduledStatus.php
src/Object/Api/Mastodon/Status.php

index a9c137b6a0de46f704a29e2715fb805629328368..9a13e3f0975ba3399715715b9b36bd5dba6d8e13 100644 (file)
@@ -55,15 +55,16 @@ class BBCode
        // Update this value to the current date whenever changes are made to BBCode::convert
        const VERSION = '2021-07-28';
 
-       const INTERNAL = 0;
-       const EXTERNAL = 1;
-       const API = 2;
-       const DIASPORA = 3;
-       const CONNECTORS = 4;
-       const OSTATUS = 7;
-       const TWITTER = 8;
-       const BACKLINK = 8;
-       const ACTIVITYPUB = 9;
+       const INTERNAL     = 0;
+       const EXTERNAL     = 1;
+       const MASTODON_API = 2;
+       const DIASPORA     = 3;
+       const CONNECTORS   = 4;
+       const TWITTER_API  = 5;
+       const OSTATUS      = 7;
+       const TWITTER      = 8;
+       const BACKLINK     = 8;
+       const ACTIVITYPUB  = 9;
 
        const TOP_ANCHOR = '<br class="top-anchor">';
        const BOTTOM_ANCHOR = '<br class="button-anchor">';
@@ -473,7 +474,7 @@ class BBCode
        private static function proxyUrl(string $image, int $simplehtml = self::INTERNAL, int $uriid = 0, string $size = ''): string
        {
                // Only send proxied pictures to API and for internal display
-               if (!in_array($simplehtml, [self::INTERNAL, self::API])) {
+               if (!in_array($simplehtml, [self::INTERNAL, self::MASTODON_API, self::TWITTER_API])) {
                        return $image;
                } elseif ($uriid > 0) {
                        return Post\Link::getByLink($uriid, $image, $size);
@@ -1190,7 +1191,8 @@ class BBCode
                $mention = $attributes['author'] . ' (' . ($author_contact['addr'] ?? '') . ')';
 
                switch ($simplehtml) {
-                       case self::API:
+                       case self::MASTODON_API:
+                       case self::TWITTER_API:
                                $text = ($is_quote_share? '<br>' : '') .
                                '<b><a href="' . $attributes['link'] . '">' . html_entity_decode('&#x2672;', ENT_QUOTES, 'UTF-8') . ' ' . $author_contact['addr'] . "</a>:</b><br>\n" .
                                '<blockquote class="shared_content" dir="auto">' . $content . '</blockquote>';
@@ -1634,7 +1636,7 @@ class BBCode
 
                                /// @todo Have a closer look at the different html modes
                                // Handle attached links or videos
-                               if (in_array($simple_html, [self::API, self::ACTIVITYPUB])) {
+                               if (in_array($simple_html, [self::MASTODON_API, self::TWITTER_API, self::ACTIVITYPUB])) {
                                        $text = self::removeAttachment($text);
                                } elseif (!in_array($simple_html, [self::INTERNAL, self::EXTERNAL, self::CONNECTORS])) {
                                        $text = self::removeAttachment($text, true);
@@ -1971,14 +1973,11 @@ class BBCode
                                        $text = preg_replace("/([#])\[url\=(.*?)\](.*?)\[\/url\]/ism",
                                                '<a href="$2" class="mention hashtag" rel="tag">$1<span>$3</span></a>',
                                                $text);
-                               } elseif (in_array($simple_html, [self::INTERNAL, self::EXTERNAL])) {
+                               } elseif (in_array($simple_html, [self::INTERNAL, self::EXTERNAL, self::TWITTER_API])) {
                                        $text = preg_replace("/([@!])\[url\=(.*?)\](.*?)\[\/url\]/ism",
                                                '<bdi>$1<a href="$2" class="userinfo mention" title="$3">$3</a></bdi>',
                                                $text);
-                                       $text = preg_replace("/([#])\[url\=(.*?)\](.*?)\[\/url\]/ism",
-                                               '<a class="mention hashtag status-link" href="$2" rel="tag">$1<span>$3</span></a>',
-                                               $text);
-                               } elseif ($simple_html == self::API) {
+                               } elseif ($simple_html == self::MASTODON_API) {
                                        $text = preg_replace("/([@!])\[url\=(.*?)\](.*?)\[\/url\]/ism",
                                                '<a class="u-url mention status-link" href="$2" rel="nofollow noopener noreferrer" target="_blank" title="$3">$1<span>$3</span></a>',
                                                $text);
@@ -1990,7 +1989,7 @@ class BBCode
                                }
 
                                if (!$for_plaintext) {
-                                       if (in_array($simple_html, [self::OSTATUS, self::API, self::ACTIVITYPUB])) {
+                                       if (in_array($simple_html, [self::OSTATUS, self::MASTODON_API, self::TWITTER_API, self::ACTIVITYPUB])) {
                                                $text = preg_replace_callback("/\[url\](.*?)\[\/url\]/ism", 'self::convertUrlForActivityPubCallback', $text);
                                                $text = preg_replace_callback("/\[url\=(.*?)\](.*?)\[\/url\]/ism", 'self::convertUrlForActivityPubCallback', $text);
                                        }
index 6e8d0daff3831f4a8161712e8141e583e06b44cb..035739f9fbd15fcf51976d5d72198f557e3a240c 100644 (file)
@@ -116,7 +116,7 @@ class Plaintext
         * @see   \Friendica\Content\Text\BBCode::getAttachedData
         *
         */
-       public static function getPost($item, $limit = 0, $includedlinks = false, $htmlmode = BBCode::API, $target_network = '')
+       public static function getPost($item, $limit = 0, $includedlinks = false, $htmlmode = BBCode::MASTODON_API, $target_network = '')
        {
                // Remove hashtags
                $URLSearchString = '^\[\]';
index 2599e557f03b2896d056af02c35ed9707824471c..4646e4097fde0f1a17a0850c1db115402881a27c 100644 (file)
@@ -65,13 +65,13 @@ class DirectMessage extends BaseFactory
                if (!empty($text_mode)) {
                        $title = $mail['title'];
                        if ($text_mode == 'html') {
-                               $text = BBCode::convertForUriId($mail['uri-id'], $mail['body'], BBCode::API);
+                               $text = BBCode::convertForUriId($mail['uri-id'], $mail['body'], BBCode::TWITTER_API);
                        } elseif ($text_mode == 'plain') {
-                               $text = HTML::toPlaintext(BBCode::convertForUriId($mail['uri-id'], $mail['body'], BBCode::API), 0);
+                               $text = HTML::toPlaintext(BBCode::convertForUriId($mail['uri-id'], $mail['body'], BBCode::TWITTER_API), 0);
                        }
                } else {
                        $title = '';
-                       $text  = $mail['title'] . "\n" . HTML::toPlaintext(BBCode::convertForUriId($mail['uri-id'], $mail['body'], BBCode::API), 0);
+                       $text  = $mail['title'] . "\n" . HTML::toPlaintext(BBCode::convertForUriId($mail['uri-id'], $mail['body'], BBCode::TWITTER_API), 0);
                }
 
                $pcid = Contact::getPublicIdByUserId($uid);
index a336c10be2056fbc67db23436371643745957ff6..e88351588921331fb69d3220431f75f07d94fa4c 100644 (file)
@@ -143,12 +143,12 @@ class Status extends BaseFactory
                        $title = sprintf("[h4]%s[/h4]\n", $item['title']);
                }
 
-               $statusnetHtml = BBCode::convertForUriId($item['uri-id'], BBCode::setMentionsToNicknames($title . ($item['raw-body'] ?? $item['body'])), BBCode::API);
+               $statusnetHtml = BBCode::convertForUriId($item['uri-id'], BBCode::setMentionsToNicknames($title . ($item['raw-body'] ?? $item['body'])), BBCode::TWITTER_API);
                $friendicaHtml = BBCode::convertForUriId($item['uri-id'], $title . $item['body'], BBCode::EXTERNAL);
 
                $text .= Post\Media::addAttachmentsToBody($item['uri-id'], $this->contentItem->addSharedPost($item));
 
-               $text = trim(HTML::toPlaintext(BBCode::convertForUriId($item['uri-id'], $text, BBCode::API), 0));
+               $text = trim(HTML::toPlaintext(BBCode::convertForUriId($item['uri-id'], $text, BBCode::TWITTER_API), 0));
 
                $geo = [];
 
index 9a75152724759cad464cd21a77d9963e589049aa..e2235fa6645af53e40c75bcf9f8b6cfa568d9fc0 100644 (file)
@@ -616,7 +616,7 @@ class Event
 
                        $title = BBCode::convertForUriId($event['uri-id'], Strings::escapeHtml($event['summary']));
                        if (!$title) {
-                               list($title, $_trash) = explode("<br", BBCode::convertForUriId($event['uri-id'], Strings::escapeHtml($event['desc'])), BBCode::API);
+                               list($title, $_trash) = explode("<br", BBCode::convertForUriId($event['uri-id'], Strings::escapeHtml($event['desc'])), BBCode::TWITTER_API);
                        }
 
                        $author_link = $event['author-link'];
index 6b583b936a261bac36234bae324cdddee51e01d6..0fb6d7df8ace2b5e540788c5c59f6205be0c9594 100644 (file)
@@ -78,7 +78,7 @@ class Show extends BaseApi
                foreach ($profileFields as $profileField) {
                        $custom_fields[] = [
                                'label' => $profileField->label,
-                               'value' => BBCode::convert($profileField->value, false, BBCode::API),
+                               'value' => BBCode::convert($profileField->value, false, BBCode::TWITTER_API),
                        ];
                }
 
index 759cd6e4e0666110dba6d7719d90aafcdd99d96a..5b09f66c44fd35feed83575bdfe5446cd09753d3 100644 (file)
@@ -67,7 +67,7 @@ class ScheduledStatus extends BaseDataTransferObject
                $this->scheduled_at = DateTimeFormat::utc($delayed_post['delayed'], DateTimeFormat::JSON);
 
                $this->params = [
-                       'text'           => BBCode::convert(BBCode::setMentionsToNicknames($parameters['item']['body'] ?? ''), false, BBCode::API),
+                       'text'           => BBCode::convert(BBCode::setMentionsToNicknames($parameters['item']['body'] ?? ''), false, BBCode::MASTODON_API),
                        'media_ids'      => $media_ids,
                        'sensitive'      => null,
                        'spoiler_text'   => $parameters['item']['title'] ?? '',
index 8ba99ebfa531d2ac2c4e8264048c7a83e43bb694..288938855866165feffc5bd18220ebfa0142009e 100644 (file)
@@ -132,7 +132,7 @@ class Status extends BaseDataTransferObject
                $this->muted = $userAttributes->muted;
                $this->bookmarked = $userAttributes->bookmarked;
                $this->pinned = $userAttributes->pinned;
-               $this->content = BBCode::convertForUriId($item['uri-id'], BBCode::setMentionsToNicknames($item['raw-body'] ?? $item['body']), BBCode::API);
+               $this->content = BBCode::convertForUriId($item['uri-id'], BBCode::setMentionsToNicknames($item['raw-body'] ?? $item['body']), BBCode::MASTODON_API);
                $this->reblog = $reblog;
                $this->application = $application->toArray();
                $this->account = $account->toArray();