From f683f791ee0973ff32128fd761d03d1c630a9815 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 5 May 2021 16:46:55 +0000 Subject: [PATCH] Avoid duplicated attachments / unwanted attachments --- src/Content/Text/BBCode.php | 2 +- src/Model/Item.php | 3 +- src/Protocol/ActivityPub/Transmitter.php | 58 +++++++++++------------- 3 files changed, 29 insertions(+), 34 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 137a6a5d13..1f04097bfe 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1893,7 +1893,7 @@ class BBCode $text = HTML::purify($text, $allowedIframeDomains); - return $text; + return trim($text); } /** diff --git a/src/Model/Item.php b/src/Model/Item.php index e93708bfd2..2544ed7813 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -2871,7 +2871,8 @@ class Item $found = true; } } - if (!$found) { + // @todo Judge between the links to use the one with most information + if (!$found && (empty($attachment) || empty($attachment['name']) || empty($attachment['description']))) { $attachment = $link; } } diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index 4f8f48c153..9773a5a48b 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -1260,37 +1260,6 @@ class Transmitter { $attachments = []; - // Currently deactivated, since it creates side effects on Mastodon and Pleroma. - // It will be reactivated, once this cleared. - /* - $attach_data = BBCode::getAttachmentData($item['body']); - if (!empty($attach_data['url'])) { - $attachment = ['type' => 'Page', - 'mediaType' => 'text/html', - 'url' => $attach_data['url']]; - - if (!empty($attach_data['title'])) { - $attachment['name'] = $attach_data['title']; - } - - if (!empty($attach_data['description'])) { - $attachment['summary'] = $attach_data['description']; - } - - if (!empty($attach_data['image'])) { - $imgdata = Images::getInfoFromURLCached($attach_data['image']); - if ($imgdata) { - $attachment['icon'] = ['type' => 'Image', - 'mediaType' => $imgdata['mime'], - 'width' => $imgdata[0], - 'height' => $imgdata[1], - 'url' => $attach_data['image']]; - } - } - - $attachments[] = $attachment; - } - */ $uriids = [$item['uri-id']]; $shared = BBCode::fetchShareAttributes($item['body']); if (!empty($shared['guid'])) { @@ -1300,8 +1269,14 @@ class Transmitter } } + $urls = []; foreach ($uriids as $uriid) { - foreach (Post\Media::getByURIId($uriid, [Post\Media::DOCUMENT, Post\Media::TORRENT, Post\Media::UNKNOWN]) as $attachment) { + foreach (Post\Media::getByURIId($uriid, [Post\Media::DOCUMENT, Post\Media::TORRENT]) as $attachment) { + if (in_array($attachment['url'], $urls)) { + continue; + } + $urls[] = $attachment['url']; + $attachments[] = ['type' => 'Document', 'mediaType' => $attachment['mimetype'], 'url' => $attachment['url'], @@ -1315,11 +1290,30 @@ class Transmitter foreach ($uriids as $uriid) { foreach (Post\Media::getByURIId($uriid, [Post\Media::AUDIO, Post\Media::IMAGE, Post\Media::VIDEO]) as $attachment) { + if (in_array($attachment['url'], $urls)) { + continue; + } + $urls[] = $attachment['url']; + $attachments[] = ['type' => 'Document', 'mediaType' => $attachment['mimetype'], 'url' => $attachment['url'], 'name' => $attachment['description']]; } + // Currently deactivated, since it creates side effects on Mastodon and Pleroma. + // It will be activated, once this cleared. + /* + foreach (Post\Media::getByURIId($uriid, [Post\Media::HTML]) as $attachment) { + if (in_array($attachment['url'], $urls)) { + continue; + } + $urls[] = $attachment['url']; + + $attachments[] = ['type' => 'Page', + 'mediaType' => $attachment['mimetype'], + 'url' => $attachment['url'], + 'name' => $attachment['description']]; + }*/ } return $attachments;