]> git.mxchange.org Git - friendica.git/blobdiff - src/Object/Api/Twitter/Status.php
Use the owner, not the author
[friendica.git] / src / Object / Api / Twitter / Status.php
index 3e91f27497629ab1f0cb3291e3c5763b9a3aa5bf..f9ce6a209d65ad003c97f1aa6c462ff39ee479bb 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -23,7 +23,6 @@ namespace Friendica\Object\Api\Twitter;
 
 use Friendica\BaseDataTransferObject;
 use Friendica\Content\ContactSelector;
-use Friendica\Content\Text\BBCode;
 use Friendica\Model\Item;
 use Friendica\Util\DateTimeFormat;
 
@@ -99,15 +98,15 @@ class Status extends BaseDataTransferObject
         * @param array   $item
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public function __construct(string $text, array $item, User $author, User $owner, array $retweeted, array $quoted, array $geo, array $friendica_activities, array $entities, array $attachments, int $friendica_comments)
+       public function __construct(string $text, string $statusnetHtml, string $friendicaHtml, array $item, User $author, User $owner, array $retweeted, array $quoted, array $geo, array $friendica_activities, array $entities, array $attachments, int $friendica_comments, bool $liked)
        {
-               $this->id                        = (int)$item['id'];
-               $this->id_str                    = (string)$item['id'];
-               $this->statusnet_conversation_id = (int)$item['parent'];
+               $this->id                        = (int)$item['uri-id'];
+               $this->id_str                    = (string)$item['uri-id'];
+               $this->statusnet_conversation_id = (int)$item['parent-uri-id'];
 
                $this->created_at = DateTimeFormat::utc($item['created'], DateTimeFormat::API);
 
-               if ($item['gravity'] == GRAVITY_COMMENT) {
+               if ($item['gravity'] == Item::GRAVITY_COMMENT) {
                        $this->in_reply_to_status_id     = (int)$item['thr-parent-id'];
                        $this->in_reply_to_status_id_str = (string)$item['thr-parent-id'];
                        $this->in_reply_to_user_id       = (int)$item['parent-author-id'];
@@ -117,9 +116,9 @@ class Status extends BaseDataTransferObject
 
                $this->text                 = $text;
                $this->friendica_title      = $item['title'];
-               $this->statusnet_html       = BBCode::convertForUriId($item['uri-id'], BBCode::setMentionsToNicknames($item['raw-body'] ?? $item['body']), BBCode::API);
-               $this->friendica_html       = BBCode::convertForUriId($item['uri-id'], $item['body'], BBCode::EXTERNAL);
-               $this->user                 = $author->toArray();
+               $this->statusnet_html       = $statusnetHtml;
+               $this->friendica_html       = $friendicaHtml;
+               $this->user                 = $owner->toArray();
                $this->friendica_author     = $author->toArray();
                $this->friendica_owner      = $owner->toArray();
                $this->truncated            = false;
@@ -127,19 +126,21 @@ class Status extends BaseDataTransferObject
                $this->retweeted_status     = $retweeted;
                $this->quoted_status        = $quoted;
                $this->external_url         = $item['plink'];
-               $this->favorited            = (bool)$item['starred'];
+               $this->favorited            = $liked;
                $this->friendica_comments   = $friendica_comments;
-               $this->source               = $item['app'] ?: 'web';
+               $this->source               = $item['app'];
                $this->geo                  = $geo;
                $this->friendica_activities = $friendica_activities;
                $this->attachments          = $attachments;
                $this->entities             = $entities;
                $this->extended_entities    = $entities;
 
-               if ($this->source == 'web') {
-                       $this->source = ContactSelector::networkToName($item['author-network'], $item['author-link'], $item['network']);
-               } elseif (ContactSelector::networkToName($item['author-network'], $item['author-link'], $item['network']) != $this->source) {
-                       $this->source = trim($this->source. ' (' . ContactSelector::networkToName($item['author-network'], $item['author-link'], $item['network']) . ')');
+               $origin = ContactSelector::networkToName($item['author-network'], $item['author-link'], $item['network']);
+
+               if (empty($this->source)) {
+                       $this->source = $origin;
+               } elseif ($origin != $this->source) {
+                       $this->source = trim($this->source. ' (' . $origin . ')');
                }
        }
 
@@ -164,6 +165,19 @@ class Status extends BaseDataTransferObject
                        $status['geo'] = null;
                }
 
+               if (empty($status['entities'])) {
+                       $status['entities'] = null;
+               }
+
+               if (empty($status['extended_entities'])) {
+                       $status['extended_entities'] = null;
+               }
+
+               if (empty($status['attachments'])) {
+                       $status['attachments'] = null;
+               }
+
+
                return $status;
        }
 }