* 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');
}
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"]]);
}
--- /dev/null
+<?php
+/**
+ * @file src/Module/Object.php
+ */
+namespace Friendica\Module;
+
+use Friendica\BaseModule;
+use Friendica\Protocol\ActivityPub;
+use Friendica\Core\System;
+use Friendica\Model\Item;
+use Friendica\Database\DBA;
+
+/**
+ * ActivityPub Object
+ */
+class Object extends BaseModule
+{
+ public static function init()
+ {
+ $a = self::getApp();
+
+ if (empty($a->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();
+ }
+}