]> git.mxchange.org Git - friendica.git/blobdiff - src/Factory/Api/Mastodon/Status.php
Merge pull request #11389 from nupplaphil/feat/http_client_arg
[friendica.git] / src / Factory / Api / Mastodon / Status.php
index 69257d652b10019e193d77f3d1759e3901667998..914814033595b0e00519f8c59437d866bb8bdce5 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -25,7 +25,9 @@ use Friendica\BaseFactory;
 use Friendica\Content\ContactSelector;
 use Friendica\Content\Text\BBCode;
 use Friendica\Database\Database;
+use Friendica\Database\DBA;
 use Friendica\Model\Post;
+use Friendica\Model\Tag as TagModel;
 use Friendica\Model\Verb;
 use Friendica\Network\HTTPException;
 use Friendica\Protocol\Activity;
@@ -75,11 +77,15 @@ class Status extends BaseFactory
         */
        public function createFromUriId(int $uriId, $uid = 0): \Friendica\Object\Api\Mastodon\Status
        {
-               $fields = ['uri-id', 'uid', 'author-id', 'author-link', 'starred', 'app', 'title', 'body', 'raw-body', 'created', 'network',
-                       'thr-parent-id', 'parent-author-id', 'language', 'uri', 'plink', 'private', 'vid', 'gravity'];
+               $fields = ['uri-id', 'uid', 'author-id', 'author-link', 'starred', 'app', 'title', 'body', 'raw-body', 'content-warning',
+                       'created', 'network', 'thr-parent-id', 'parent-author-id', 'language', 'uri', 'plink', 'private', 'vid', 'gravity', 'featured'];
                $item = Post::selectFirst($fields, ['uri-id' => $uriId, 'uid' => [0, $uid]], ['order' => ['uid' => true]]);
                if (!$item) {
-                       throw new HTTPException\NotFoundException('Item with URI ID ' . $uriId . 'not found' . ($uid ? ' for user ' . $uid : '.'));
+                       $mail = DBA::selectFirst('mail', ['id'], ['uri-id' => $uriId, 'uid' => $uid]);
+                       if ($mail) {
+                               return $this->createFromMailId($mail['id']);
+                       }
+                       throw new HTTPException\NotFoundException('Item with URI ID ' . $uriId . ' not found' . ($uid ? ' for user ' . $uid : '.'));
                }
 
                $account = $this->mstdnAccountFactory->createFromContactId($item['author-id']);
@@ -119,10 +125,10 @@ class Status extends BaseFactory
                        ]),
                        Post\ThreadUser::getIgnored($uriId, $uid),
                        (bool)($item['starred'] && ($item['gravity'] == GRAVITY_PARENT)),
-                       Post\ThreadUser::getPinned($uriId, $uid)
+                       $item['featured']
                );
 
-               $sensitive   = $this->dba->exists('tag-view', ['uri-id' => $uriId, 'name' => 'nsfw']);
+               $sensitive   = $this->dba->exists('tag-view', ['uri-id' => $uriId, 'name' => 'nsfw', 'type' => TagModel::HASHTAG]);
                $application = new \Friendica\Object\Api\Mastodon\Application($item['app'] ?: ContactSelector::networkToName($item['network'], $item['author-link']));
 
                $mentions    = $this->mstdnMentionFactory->createFromUriId($uriId)->getArrayCopy();