From a6cb144c1e572d3970517858da282d67da3ff8ef Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 1 Sep 2020 02:38:44 +0000 Subject: [PATCH] Don't add the type to the id in case of an activity --- src/Module/Objects.php | 8 ++++---- src/Protocol/ActivityPub/Transmitter.php | 7 ++++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/Module/Objects.php b/src/Module/Objects.php index 4262e4e005..991106def9 100644 --- a/src/Module/Objects.php +++ b/src/Module/Objects.php @@ -47,7 +47,7 @@ class Objects extends BaseModule DI::baseUrl()->redirect(str_replace('objects/', 'display/', DI::args()->getQueryString())); } - $item = Item::selectFirst(['id', 'uid', 'origin', 'author-link', 'changed', 'private', 'psid'], + $item = Item::selectFirst(['id', 'uid', 'origin', 'author-link', 'changed', 'private', 'psid', 'gravity'], ['guid' => $parameters['guid']], ['order' => ['origin' => true]]); if (!DBA::isResult($item)) { @@ -80,7 +80,7 @@ class Objects extends BaseModule $last_modified = $item['changed']; Network::checkEtagModified($etag, $last_modified); - if (empty($parameters['activity'])) { + if (empty($parameters['activity']) && ($item['gravity'] != GRAVITY_ACTIVITY)) { $activity = ActivityPub\Transmitter::createActivityFromItem($item['id'], true); $activity['type'] = $activity['type'] == 'Update' ? 'Create' : $activity['type']; @@ -92,12 +92,12 @@ class Objects extends BaseModule $data = ['@context' => ActivityPub::CONTEXT]; $data = array_merge($data, $activity['object']); } elseif (in_array($parameters['activity'], ['Create', 'Announce', 'Update', - 'Like', 'Dislike', 'Accept', 'Reject', 'TentativeAccept', 'Follow', 'Add'])) { + 'Like', 'Dislike', 'Accept', 'Reject', 'TentativeAccept', 'Follow', 'Add', ''])) { $data = ActivityPub\Transmitter::createActivityFromItem($item['id']); if (empty($data)) { throw new HTTPException\NotFoundException(); } - if ($parameters['activity'] != 'Create') { + if (!in_array($parameters['activity'], ['Create', ''])) { $data['type'] = $parameters['activity']; $data['id'] = str_replace('/Create', '/' . $parameters['activity'], $data['id']); } diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index c798e619ec..91042c06bb 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -981,7 +981,12 @@ class Transmitter $data = []; } - $data['id'] = $item['uri'] . '/' . $type; + if (($item['gravity'] == GRAVITY_ACTIVITY) && ($type != 'Undo')) { + $data['id'] = $item['uri']; + } else { + $data['id'] = $item['uri'] . '/' . $type; + } + $data['type'] = $type; if (($type != 'Announce') || ($item['gravity'] != GRAVITY_PARENT)) {