X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FObjects.php;h=5538be18889910c035ec0c83275ef69d6e3b7035;hb=fd706cf9a7a0c4700838a1f00b12d8fd37323b7c;hp=ba9dace2e567295d825c908e364a6cf533a5e561;hpb=3ab837f3c783e14e2c8836e73c898041c47f2fd0;p=friendica.git diff --git a/src/Module/Objects.php b/src/Module/Objects.php index ba9dace2e5..5538be1888 100644 --- a/src/Module/Objects.php +++ b/src/Module/Objects.php @@ -5,31 +5,41 @@ namespace Friendica\Module; use Friendica\BaseModule; -use Friendica\Protocol\ActivityPub; use Friendica\Core\System; -use Friendica\Model\Item; use Friendica\Database\DBA; +use Friendica\Model\Item; +use Friendica\Protocol\ActivityPub; /** * ActivityPub Objects */ class Objects extends BaseModule { - public static function rawContent() + public static function rawContent(array $parameters = []) { $a = self::getApp(); if (empty($a->argv[1])) { - System::httpExit(404); + throw new \Friendica\Network\HTTPException\NotFoundException(); } 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 + // @TODO: Replace with parameter from router + $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. + // @TODO: Replace with parameter from router + $item = Item::selectFirst(['id', 'author-link'], ['guid' => $a->argv[1], 'private' => false]); + if (!DBA::isResult($item) || !strstr($item['author-link'], System::baseUrl())) { + throw new \Friendica\Network\HTTPException\NotFoundException(); + } } $data = ActivityPub\Transmitter::createObjectFromItemID($item['id']);