]> git.mxchange.org Git - friendica.git/blobdiff - src/Object/Api/Mastodon/Status.php
Merge pull request #10359 from annando/milliseconds
[friendica.git] / src / Object / Api / Mastodon / Status.php
index 2d2beb583f64d36cfe0158c27d9f1f866ec24dbd..0985c0002a9fc9a3fbd96be530e13cd1aa6137d8 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2021, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -21,7 +21,7 @@
 
 namespace Friendica\Object\Api\Mastodon;
 
-use Friendica\BaseEntity;
+use Friendica\BaseDataTransferObject;
 use Friendica\Content\Text\BBCode;
 use Friendica\Object\Api\Mastodon\Status\Counts;
 use Friendica\Object\Api\Mastodon\Status\UserAttributes;
@@ -32,7 +32,7 @@ use Friendica\Util\DateTimeFormat;
  *
  * @see https://docs.joinmastodon.org/entities/status
  */
-class Status extends BaseEntity
+class Status extends BaseDataTransferObject
 {
        /** @var string */
        protected $id;
@@ -97,10 +97,10 @@ class Status extends BaseEntity
         * @param array   $item
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public function __construct(array $item, Account $account, Counts $counts, UserAttributes $userAttributes, bool $sensitive, Application $application, array $mentions, array $tags, Card $card)
+       public function __construct(array $item, Account $account, Counts $counts, UserAttributes $userAttributes, bool $sensitive, Application $application, array $mentions, array $tags, Card $card, array $attachments, array $reblog)
        {
                $this->id         = (string)$item['uri-id'];
-               $this->created_at = DateTimeFormat::utc($item['created'], DateTimeFormat::ATOM);
+               $this->created_at = DateTimeFormat::utc($item['created'], DateTimeFormat::JSON);
 
                if ($item['gravity'] == GRAVITY_COMMENT) {
                        $this->in_reply_to_id         = (string)$item['thr-parent-id'];
@@ -114,7 +114,12 @@ class Status extends BaseEntity
                $this->visibility = $visibility[$item['private']];
 
                $languages = json_decode($item['language'], true);
-               $this->language = is_array($languages) ? array_key_first($languages) : null;
+               if (is_array($languages)) {
+                       reset($languages);
+                       $this->language = key($languages);
+               } else {
+                       $this->language = null;
+               }
 
                $this->uri = $item['uri'];
                $this->url = $item['plink'] ?? null;
@@ -126,15 +131,15 @@ class Status extends BaseEntity
                $this->muted = $userAttributes->muted;
                $this->bookmarked = $userAttributes->bookmarked;
                $this->pinned = $userAttributes->pinned;
-               $this->content = BBCode::convert($item['body'], false);
-               $this->reblog = null; /// @todo
+               $this->content = BBCode::convert($item['raw-body'] ?? $item['body'], false, BBCode::API);
+               $this->reblog = $reblog;
                $this->application = $application->toArray();
                $this->account = $account->toArray();
-               $this->media_attachments = []; /// @todo
+               $this->media_attachments = $attachments;
                $this->mentions = $mentions;
                $this->tags = $tags;
                $this->emojis = [];
-               $this->card = $card->toArray();
+               $this->card = $card->toArray() ?: null;
                $this->poll = null;
        }
 
@@ -143,7 +148,7 @@ class Status extends BaseEntity
         *
         * @return array
         */
-       public function toArray()
+       public function toArray(): array
        {
                $status = parent::toArray();
 
@@ -155,6 +160,10 @@ class Status extends BaseEntity
                        unset($status['application']);
                }
 
+               if (empty($status['reblog'])) {
+                       $status['reblog'] = null;
+               }
+
                return $status;
        }
 }