]> git.mxchange.org Git - friendica.git/commitdiff
Handling media in shared posts
authorMichael <heluecht@pirati.ca>
Tue, 11 May 2021 23:10:59 +0000 (23:10 +0000)
committerMichael <heluecht@pirati.ca>
Tue, 11 May 2021 23:10:59 +0000 (23:10 +0000)
src/Factory/Api/Mastodon/Status.php

index c26b9aa72524f006677fe581b89f195ab1235aa5..866cfe8027af2684cf09c47082394e75c28a650a 100644 (file)
@@ -24,6 +24,7 @@ namespace Friendica\Factory\Api\Mastodon;
 use Friendica\App\BaseURL;
 use Friendica\BaseFactory;
 use Friendica\Content\ContactSelector;
+use Friendica\Content\Text\BBCode;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Model\Post;
@@ -91,6 +92,22 @@ class Status extends BaseFactory
                $card        = DI::mstdnCard()->createFromUriId($uriId);
                $attachments = DI::mstdnAttachment()->createFromUriId($uriId);
 
+               $shared = BBCode::fetchShareAttributes($item['body']);
+               if (!empty($shared['guid'])) {
+                       $shared_item = Post::selectFirst(['uri-id', 'plink'], ['guid' => $shared['guid']]);
+
+                       $shared_uri_id = $shared_item['uri-id'] ?? 0;
+
+                       $mentions    = array_merge($mentions, DI::mstdnMention()->createFromUriId($shared_uri_id));
+                       $tags        = array_merge($tags, DI::mstdnTag()->createFromUriId($shared_uri_id));
+                       $attachments = array_merge($attachments, DI::mstdnAttachment()->createFromUriId($shared_uri_id));
+
+                       if (empty($card->toArray())) {
+                               $card = DI::mstdnCard()->createFromUriId($shared_uri_id);
+                       }
+               }
+
+
                if ($item['vid'] == Verb::getID(Activity::ANNOUNCE)) {
                        $reshare = $this->createFromUriId($item['thr-parent-id'], $uid)->toArray();
                        $reshared_item = Post::selectFirst(['title', 'body'], ['uri-id' => $item['thr-parent-id'], 'uid' => [0, $uid]]);