]> git.mxchange.org Git - friendica.git/commitdiff
Issue 12149: Show that a post was reshared
authorMichael <heluecht@pirati.ca>
Sun, 27 Nov 2022 20:47:08 +0000 (20:47 +0000)
committerMichael <heluecht@pirati.ca>
Sun, 27 Nov 2022 20:47:08 +0000 (20:47 +0000)
src/Factory/Api/Mastodon/Status.php

index 54726815f297dafe091ef69b4367d422b2e37e35..9d78e5892a8f43115b8ade4a1a6ef4c15b973600 100644 (file)
@@ -76,16 +76,17 @@ class Status extends BaseFactory
        }
 
        /**
-        * @param int $uriId Uri-ID of the item
-        * @param int $uid   Item user
+        * @param int  $uriId  Uri-ID of the item
+        * @param int  $uid    Item user
+        * @param bool $reblog Check for reblogged post
         *
         * @return \Friendica\Object\Api\Mastodon\Status
         * @throws HTTPException\InternalServerErrorException
         * @throws ImagickException|HTTPException\NotFoundException
         */
-       public function createFromUriId(int $uriId, int $uid = 0): \Friendica\Object\Api\Mastodon\Status
+       public function createFromUriId(int $uriId, int $uid = 0, bool $reblog = true): \Friendica\Object\Api\Mastodon\Status
        {
-               $fields = ['uri-id', 'uid', 'author-id', 'author-uri-id', 'author-link', 'starred', 'app', 'title', 'body', 'raw-body', 'content-warning', 'question-id',
+               $fields = ['uri-id', 'uid', 'author-id', 'author-uri-id', 'author-link', 'causer-uri-id', 'post-reason', 'starred', 'app', 'title', 'body', 'raw-body', 'content-warning', 'question-id',
                        'created', 'network', 'thr-parent-id', 'parent-author-id', 'language', 'uri', 'plink', 'private', 'vid', 'gravity', 'featured', 'has-media', 'quote-uri-id'];
                $item = Post::selectFirst($fields, ['uri-id' => $uriId, 'uid' => [0, $uid]], ['order' => ['uid' => true]]);
                if (!$item) {
@@ -95,7 +96,10 @@ class Status extends BaseFactory
                        }
                        throw new HTTPException\NotFoundException('Item with URI ID ' . $uriId . ' not found' . ($uid ? ' for user ' . $uid : '.'));
                }
-               $account = $this->mstdnAccountFactory->createFromUriId($item['author-uri-id'], $uid);
+
+               $is_reshare = $reblog && !is_null($item['causer-uri-id']) && ($item['post-reason'] == Item::PR_ANNOUNCEMENT);
+
+               $account = $this->mstdnAccountFactory->createFromUriId($is_reshare ? $item['causer-uri-id']:$item['author-uri-id'], $uid);
 
                $count_announce = Post::countPosts([
                        'thr-parent-id' => $uriId,
@@ -183,6 +187,10 @@ class Status extends BaseFactory
                        $reshare = [];
                }
 
+               if ($is_reshare) {
+                       $reshare = $this->createFromUriId($uriId, $uid, false)->toArray();
+               }
+
                return new \Friendica\Object\Api\Mastodon\Status($item, $account, $counts, $userAttributes, $sensitive, $application, $mentions, $tags, $card, $attachments, $reshare, $poll);
        }