From fcb0fa4cfab00909130b3f180697c6ef0098e81d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 26 Mar 2020 07:52:48 +0100 Subject: [PATCH] Fix: Fetching content via the "objects" endpoint behaved wrong --- src/Module/Objects.php | 6 ++++-- src/Protocol/ActivityPub/Transmitter.php | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Module/Objects.php b/src/Module/Objects.php index 023ced08ce..264f3dbd64 100644 --- a/src/Module/Objects.php +++ b/src/Module/Objects.php @@ -49,17 +49,19 @@ class Objects extends BaseModule // At first we try the original post with that guid // @TODO: Replace with parameter from router - $item = Item::selectFirst(['id'], ['guid' => $a->argv[1], 'origin' => true, 'private' => [item::PRIVATE, Item::UNLISTED]]); + $item = Item::selectFirst(['id'], ['guid' => $a->argv[1], 'origin' => true, 'private' => [item::PUBLIC, Item::UNLISTED]]); if (!DBA::isResult($item)) { // If no original post could be found, it could possibly be a forum post, there we remove the "origin" field. // @TODO: Replace with parameter from router - $item = Item::selectFirst(['id', 'author-link'], ['guid' => $a->argv[1], 'private' => [item::PRIVATE, Item::UNLISTED]]); + $item = Item::selectFirst(['id', 'author-link'], ['guid' => $a->argv[1], 'private' => [item::PUBLIC, Item::UNLISTED]]); if (!DBA::isResult($item) || !strstr($item['author-link'], DI::baseUrl()->get())) { throw new \Friendica\Network\HTTPException\NotFoundException(); } } $activity = ActivityPub\Transmitter::createActivityFromItem($item['id'], true); + $activity['type'] = $activity['type'] == 'Update' ? 'Create' : $activity['type']; + // Only display "Create" activity objects here, no reshares or anything else if (!is_array($activity['object']) || ($activity['type'] != 'Create')) { throw new \Friendica\Network\HTTPException\NotFoundException(); diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index f6c9311fcc..e39a4f9581 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -193,6 +193,8 @@ class Transmitter $items = Item::select(['id'], $condition, ['limit' => [($page - 1) * 20, 20], 'order' => ['created' => true]]); while ($item = Item::fetch($items)) { $activity = self::createActivityFromItem($item['id'], true); + $activity['type'] = $activity['type'] == 'Update' ? 'Create' : $activity['type']; + // Only list "Create" activity objects here, no reshares if (is_array($activity['object']) && ($activity['type'] == 'Create')) { $list[] = $activity['object'];