]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/ActivityPub/ClientToServer.php
Issue 12977: Ensure to fetch quoted posts
[friendica.git] / src / Protocol / ActivityPub / ClientToServer.php
index 55c20accaec9bfa8471047e01d025bba29bcb275..48a5cfdec5aed3f5ccc23dcbf91769d216723357 100644 (file)
@@ -140,7 +140,7 @@ class ClientToServer
         * @param array $ldactivity
         * @return array
         */
-       private static function updateContent(int $uid, string $object_id, array $application, array $ldactivity):array
+       private static function updateContent(int $uid, string $object_id, array $application, array $ldactivity): array
        {
                $id            = Item::fetchByLink($object_id, $uid);
                $original_post = Post::selectFirst(['uri-id'], ['uid' => $uid, 'origin' => true, 'id' => $id]);
@@ -264,7 +264,7 @@ class ClientToServer
                $item['contact-id'] = $owner['id'];
                $item['author-id']  = $item['owner-id']  = Contact::getPublicIdByUserId($uid);
                $item['title']      = $object_data['name'];
-               $item['body']       = Markdown::toBBCode($object_data['content']);
+               $item['body']       = Markdown::toBBCode($object_data['content'] ?? '');
                $item['app']        = $application['name'] ?? 'API';
 
                if (!empty($object_data['target'][Receiver::TARGET_GLOBAL])) {
@@ -325,7 +325,10 @@ class ClientToServer
         */
        public static function getOutbox(array $owner, int $uid, int $page = null, int $max_id = null, string $requester = ''): array
        {
-               $condition = ['gravity' => [Item::GRAVITY_PARENT, Item::GRAVITY_COMMENT], 'private' => [Item::PUBLIC, Item::UNLISTED]];
+               $condition = [
+                       'gravity' => [Item::GRAVITY_PARENT, Item::GRAVITY_COMMENT],
+                       'private' => [Item::PUBLIC, Item::UNLISTED]
+               ];
 
                if (!empty($requester)) {
                        $requester_id = Contact::getIdForURL($requester, $owner['uid']);
@@ -333,7 +336,7 @@ class ClientToServer
                                $permissionSets = DI::permissionSet()->selectByContactId($requester_id, $owner['uid']);
                                if (!empty($permissionSets)) {
                                        $condition = ['psid' => array_merge($permissionSets->column('id'),
-                                                       [DI::permissionSet()->selectPublicForUser($owner['uid'])])];
+                                               [DI::permissionSet()->selectPublicForUser($owner['uid'])])];
                                }
                        }
                }
@@ -351,6 +354,10 @@ class ClientToServer
 
                $apcontact = APContact::getByURL($owner['url']);
 
+               if (empty($apcontact)) {
+                       throw new \Friendica\Network\HTTPException\NotFoundException();
+               }
+
                return self::getCollection($condition, DI::baseUrl() . '/outbox/' . $owner['nickname'], $page, $max_id, $uid, $apcontact['statuses_count']);
        }
 
@@ -358,15 +365,24 @@ class ClientToServer
        {
                $owner = User::getOwnerDataById($uid);
 
-               $condition = ['gravity' => [Item::GRAVITY_PARENT, Item::GRAVITY_COMMENT], 'network' => [Protocol::ACTIVITYPUB, Protocol::DFRN], 'uid' => $uid];
+               $condition = [
+                       'gravity' => [Item::GRAVITY_PARENT, Item::GRAVITY_COMMENT],
+                       'network' => [Protocol::ACTIVITYPUB, Protocol::DFRN],
+                       'uid'     => $uid
+               ];
 
                return self::getCollection($condition, DI::baseUrl() . '/inbox/' . $owner['nickname'], $page, $max_id, $uid, null);
        }
 
        public static function getPublicInbox(int $uid, int $page = null, int $max_id = null)
        {
-               $condition = ['gravity' => [Item::GRAVITY_PARENT, Item::GRAVITY_COMMENT], 'private' => Item::PUBLIC,
-                       'network' => [Protocol::ACTIVITYPUB, Protocol::DFRN], 'author-blocked' => false, 'author-hidden' => false];
+               $condition = [
+                       'gravity'        => [Item::GRAVITY_PARENT, Item::GRAVITY_COMMENT],
+                       'private'        => Item::PUBLIC,
+                       'network'        => [Protocol::ACTIVITYPUB, Protocol::DFRN],
+                       'author-blocked' => false,
+                       'author-hidden'  => false
+               ];
 
                return self::getCollection($condition, DI::baseUrl() . '/inbox', $page, $max_id, $uid, null);
        }