X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FObjects.php;h=558b274919ce33bad609074dec5aac569ceca9e0;hb=f3da5b3a2f98883e4a06c345dfe2880394f7d21d;hp=c52a75196ad16d48877102698c65d673b02b9ca5;hpb=76cdc9e59459ba3c59febac20749e9a37490825c;p=friendica.git diff --git a/src/Module/Objects.php b/src/Module/Objects.php index c52a75196a..558b274919 100644 --- a/src/Module/Objects.php +++ b/src/Module/Objects.php @@ -9,6 +9,7 @@ use Friendica\Protocol\ActivityPub; use Friendica\Core\System; use Friendica\Model\Item; use Friendica\Database\DBA; +use Friendica\Util\HTTPSignature; /** * ActivityPub Objects @@ -24,15 +25,23 @@ class Objects extends BaseModule } if (!ActivityPub::isRequest()) { - goaway(str_replace('objects/', 'display/', $a->query_string)); + $a->internalRedirect(str_replace('objects/', 'display/', $a->query_string)); } - $item = Item::selectFirst(['id'], ['guid' => $a->argv[1], 'wall' => true, 'private' => false]); + /// @todo Add Authentication to enable fetching of non public content + // $requester = HTTPSignature::getSigner('', $_SERVER); + + // At first we try the original post with that guid + $item = Item::selectFirst(['id'], ['guid' => $a->argv[1], 'origin' => true, 'private' => false]); if (!DBA::isResult($item)) { - System::httpExit(404); + // If no original post could be found, it could possibly be a forum post, there we remove the "origin" field. + $item = Item::selectFirst(['id', 'author-link'], ['guid' => $a->argv[1], 'private' => false]); + if (!DBA::isResult($item) || !strstr($item['author-link'], System::baseUrl())) { + System::httpExit(404); + } } - $data = ActivityPub::createObjectFromItemID($item['id']); + $data = ActivityPub\Transmitter::createObjectFromItemID($item['id']); header('Content-Type: application/activity+json'); echo json_encode($data);