diff --git a/index.php b/index.php index a62b7a2ea1..8b0bd47251 100644 --- a/index.php +++ b/index.php @@ -215,10 +215,6 @@ if (strlen($a->module)) { * First see if we have an addon which is masquerading as a module. */ - if ($a->module == 'object') { - $a->module = 'display'; - } - // Compatibility with the Android Diaspora client if ($a->module == 'stream') { goaway('network?f=&order=post'); diff --git a/mod/display.php b/mod/display.php index ff98e689d3..25bda99d01 100644 --- a/mod/display.php +++ b/mod/display.php @@ -78,13 +78,9 @@ function display_init(App $a) } if (ActivityPub::isRequest()) { - $wall_item = Item::selectFirst(['id', 'uid'], ['guid' => $item['guid'], 'wall' => true]); - if (DBA::isResult($wall_item)) { - $data = ActivityPub::createObjectFromItemID($wall_item['id']); - echo json_encode($data); - exit(); - } + goaway(str_replace('display/', 'object/', $a->query_string)); } + if ($item["id"] != $item["parent"]) { $item = Item::selectFirstForUser(local_user(), $fields, ['id' => $item["parent"]]); } diff --git a/src/Module/Object.php b/src/Module/Object.php new file mode 100644 index 0000000000..557b906d2b --- /dev/null +++ b/src/Module/Object.php @@ -0,0 +1,41 @@ +argv[1])) { + System::httpExit(404); + } + + if (!ActivityPub::isRequest()) { + goaway(str_replace('object/', 'display/', $a->query_string)); + } + + $item = Item::selectFirst(['id'], ['guid' => $a->argv[1], 'wall' => true, 'private' => false]); + if (!DBA::isResult($item)) { + System::httpExit(404); + } + + $data = ActivityPub::createObjectFromItemID($item['id']); + + header('Content-Type: application/activity+json'); + echo json_encode($data); + exit(); + } +}