Fix: Fetching content via the "objects" endpoint behaved wrong

This commit is contained in:
Michael Vogel 2020-03-26 07:52:48 +01:00
parent 3b3085369c
commit fcb0fa4cfa
2 changed files with 6 additions and 2 deletions

View file

@ -49,17 +49,19 @@ class Objects extends BaseModule
// At first we try the original post with that guid // At first we try the original post with that guid
// @TODO: Replace with parameter from router // @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 (!DBA::isResult($item)) {
// If no original post could be found, it could possibly be a forum post, there we remove the "origin" field. // 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 // @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())) { if (!DBA::isResult($item) || !strstr($item['author-link'], DI::baseUrl()->get())) {
throw new \Friendica\Network\HTTPException\NotFoundException(); throw new \Friendica\Network\HTTPException\NotFoundException();
} }
} }
$activity = ActivityPub\Transmitter::createActivityFromItem($item['id'], true); $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 // Only display "Create" activity objects here, no reshares or anything else
if (!is_array($activity['object']) || ($activity['type'] != 'Create')) { if (!is_array($activity['object']) || ($activity['type'] != 'Create')) {
throw new \Friendica\Network\HTTPException\NotFoundException(); throw new \Friendica\Network\HTTPException\NotFoundException();

View file

@ -193,6 +193,8 @@ class Transmitter
$items = Item::select(['id'], $condition, ['limit' => [($page - 1) * 20, 20], 'order' => ['created' => true]]); $items = Item::select(['id'], $condition, ['limit' => [($page - 1) * 20, 20], 'order' => ['created' => true]]);
while ($item = Item::fetch($items)) { while ($item = Item::fetch($items)) {
$activity = self::createActivityFromItem($item['id'], true); $activity = self::createActivityFromItem($item['id'], true);
$activity['type'] = $activity['type'] == 'Update' ? 'Create' : $activity['type'];
// Only list "Create" activity objects here, no reshares // Only list "Create" activity objects here, no reshares
if (is_array($activity['object']) && ($activity['type'] == 'Create')) { if (is_array($activity['object']) && ($activity['type'] == 'Create')) {
$list[] = $activity['object']; $list[] = $activity['object'];