From d43b85e94b729b4d9c0e7d4bfda4a946486f124c Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 30 Sep 2022 07:10:43 +0000 Subject: [PATCH] Don't transmit the shared attachments --- src/Protocol/ActivityPub/Transmitter.php | 70 +++++++++++------------- 1 file changed, 32 insertions(+), 38 deletions(-) diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index e0d9117e3..82816e668 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -1407,51 +1407,39 @@ class Transmitter * Adds attachment data to the JSON document * * @param array $item Data of the item that is to be posted - * @param string $type Object type * * @return array with attachment data * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - private static function createAttachmentList(array $item, string $type): array + private static function createAttachmentList(array $item): array { $attachments = []; - $uriids = [$item['uri-id']]; - $shared = BBCode::fetchShareAttributes($item['body']); - if (!empty($shared['guid'])) { - $shared_item = Post::selectFirst(['uri-id'], ['guid' => $shared['guid']]); - if (!empty($shared_item['uri-id'])) { - $uriids[] = $shared_item['uri-id']; - } - } - $urls = []; - foreach ($uriids as $uriid) { - foreach (Post\Media::getByURIId($uriid, [Post\Media::AUDIO, Post\Media::IMAGE, Post\Media::VIDEO, Post\Media::DOCUMENT, Post\Media::TORRENT]) as $attachment) { - if (in_array($attachment['url'], $urls)) { - continue; - } - $urls[] = $attachment['url']; - - $attach = ['type' => 'Document', - 'mediaType' => $attachment['mimetype'], - 'url' => $attachment['url'], - 'name' => $attachment['description']]; - - if (!empty($attachment['height'])) { - $attach['height'] = $attachment['height']; - } - - if (!empty($attachment['width'])) { - $attach['width'] = $attachment['width']; - } - - if (!empty($attachment['preview'])) { - $attach['image'] = $attachment['preview']; - } - - $attachments[] = $attach; + foreach (Post\Media::getByURIId($item['uri-id'], [Post\Media::AUDIO, Post\Media::IMAGE, Post\Media::VIDEO, Post\Media::DOCUMENT, Post\Media::TORRENT]) as $attachment) { + if (in_array($attachment['url'], $urls)) { + continue; } + $urls[] = $attachment['url']; + + $attach = ['type' => 'Document', + 'mediaType' => $attachment['mimetype'], + 'url' => $attachment['url'], + 'name' => $attachment['description']]; + + if (!empty($attachment['height'])) { + $attach['height'] = $attachment['height']; + } + + if (!empty($attachment['width'])) { + $attach['width'] = $attachment['width']; + } + + if (!empty($attachment['preview'])) { + $attach['image'] = $attachment['preview']; + } + + $attachments[] = $attach; } return $attachments; @@ -1688,6 +1676,12 @@ class Transmitter $language = self::getLanguage($item); if (!empty($language)) { $richbody = BBCode::setMentionsToNicknames($item['body'] ?? ''); + + $shared = BBCode::fetchShareAttributes($richbody); + if (!empty($shared['link']) && !empty($shared['guid']) && !empty($shared['comment'])) { + $richbody = self::ReplaceSharedData($richbody); + } + $richbody = BBCode::removeAttachment($richbody); $data['contentMap'][$language] = BBCode::convertForUriId($item['uri-id'], $richbody, BBCode::EXTERNAL); @@ -1699,8 +1693,8 @@ class Transmitter $data['diaspora:comment'] = $item['signed_text']; } - $data['attachment'] = self::createAttachmentList($item, $type); - $data['tag'] = self::createTagList($item, $data['quoteUrl'] ?? ''); + $data['attachment'] = self::createAttachmentList($item); + $data['tag'] = self::createTagList($item, ''); // $data['quoteUrl'] ?? if (empty($data['location']) && (!empty($item['coord']) || !empty($item['location']))) { $data['location'] = self::createLocation($item);