diff --git a/CHANGELOG.md b/CHANGELOG.md index cae07819..ad639f54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - Add storage flags to admin dashboard diagnostics ([#3444](https://github.com/pixelfed/pixelfed/pull/3444)) - Hardcode UTC application timezone to prevent timezone issues ([b0d2c5e1](https://github.com/pixelfed/pixelfed/commit/b0d2c5e1)) - Remove arbitrary metro url redirect timeout ([84209c24](https://github.com/pixelfed/pixelfed/commit/84209c24)) +- Fix JSON-LD contexts ([#3464](https://github.com/pixelfed/pixelfed/pull/3464)) - Fix json-ld attributes, fixes #3423 ([95f902b1](https://github.com/pixelfed/pixelfed/commit/95f902b1)) - Add trusted proxies flag to admin dashboard diagnostics ([#3450](https://github.com/pixelfed/pixelfed/pull/3450)) - Fix json-ld attributes, fixes #3423 ([95f902b1](https://github.com/pixelfed/pixelfed/commit/95f902b1)) diff --git a/app/Http/Controllers/DirectMessageController.php b/app/Http/Controllers/DirectMessageController.php index 8de1694f..5a1afbc8 100644 --- a/app/Http/Controllers/DirectMessageController.php +++ b/app/Http/Controllers/DirectMessageController.php @@ -796,13 +796,8 @@ class DirectMessageController extends Controller $body = [ '@context' => [ - 'https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1', - [ - 'sc' => 'http://schema.org#', - 'Hashtag' => 'as:Hashtag', - 'sensitive' => 'as:sensitive', - ] + 'https://www.w3.org/ns/activitystreams', ], 'id' => $dm->status->permalink(), 'type' => 'Create', @@ -845,12 +840,6 @@ class DirectMessageController extends Controller $body = [ '@context' => [ 'https://www.w3.org/ns/activitystreams', - 'https://w3id.org/security/v1', - [ - 'sc' => 'http://schema.org#', - 'Hashtag' => 'as:Hashtag', - 'sensitive' => 'as:sensitive', - ] ], 'id' => $dm->status->permalink('#delete'), 'to' => [ diff --git a/app/Transformer/ActivityPub/ProfileTransformer.php b/app/Transformer/ActivityPub/ProfileTransformer.php index cea87875..76d398ce 100644 --- a/app/Transformer/ActivityPub/ProfileTransformer.php +++ b/app/Transformer/ActivityPub/ProfileTransformer.php @@ -11,13 +11,10 @@ class ProfileTransformer extends Fractal\TransformerAbstract { return [ '@context' => [ - 'https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1', + 'https://www.w3.org/ns/activitystreams', [ 'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers', - 'PropertyValue' => 'schema:PropertyValue', - 'schema' => 'http://schema.org#', - 'value' => 'schema:value' ], ], 'id' => $profile->permalink(), diff --git a/app/Transformer/ActivityPub/Verb/CreateNote.php b/app/Transformer/ActivityPub/Verb/CreateNote.php index 6a1a0e67..b32190c9 100644 --- a/app/Transformer/ActivityPub/Verb/CreateNote.php +++ b/app/Transformer/ActivityPub/Verb/CreateNote.php @@ -53,17 +53,32 @@ class CreateNote extends Fractal\TransformerAbstract return [ '@context' => [ - 'https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1', + 'https://www.w3.org/ns/activitystreams', [ - 'sc' => 'http://schema.org#', 'Hashtag' => 'as:Hashtag', 'sensitive' => 'as:sensitive', - 'commentsEnabled' => 'sc:Boolean', - '@capabilities' => [ - '@announce' => '@id', - '@like' => '@id', - '@reply' => '@id', + 'schema' => 'http://schema.org/', + 'pixelfed' => 'http://pixelfed.org/ns#' + 'commentsEnabled' => [ + '@id' => 'pixelfed:commentsEnabled', + '@type' => 'schema:Boolean' + ], + 'capabilities' => [ + '@id' => 'pixelfed:capabilities', + '@container' => '@set' + ], + 'announce' => [ + '@id' => 'pixelfed:canAnnounce', + '@type' => '@id' + ], + 'like' => [ + '@id' => 'pixelfed:canLike', + '@type' => '@id' + ], + 'reply' => [ + '@id' => 'pixelfed:canReply', + '@type' => '@id' ], 'toot' => 'http://joinmastodon.org/ns#', 'Emoji' => 'toot:Emoji' diff --git a/app/Transformer/ActivityPub/Verb/CreateQuestion.php b/app/Transformer/ActivityPub/Verb/CreateQuestion.php index 1ef2efc4..4452cecb 100644 --- a/app/Transformer/ActivityPub/Verb/CreateQuestion.php +++ b/app/Transformer/ActivityPub/Verb/CreateQuestion.php @@ -16,18 +16,35 @@ class CreateQuestion extends Fractal\TransformerAbstract { return [ '@context' => [ - 'https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1', + 'https://www.w3.org/ns/activitystreams', [ - 'sc' => 'http://schema.org#', 'Hashtag' => 'as:Hashtag', 'sensitive' => 'as:sensitive', - 'commentsEnabled' => 'sc:Boolean', - '@capabilities' => [ - '@announce' => '@id', - '@like' => '@id', - '@reply' => '@id', + 'schema' => 'http://schema.org/', + 'pixelfed' => 'http://pixelfed.org/ns#' + 'commentsEnabled' => [ + '@id' => 'pixelfed:commentsEnabled', + '@type' => 'schema:Boolean' ], + 'capabilities' => [ + '@id' => 'pixelfed:capabilities', + '@container' => '@set' + ], + 'announce' => [ + '@id' => 'pixelfed:canAnnounce', + '@type' => '@id' + ], + 'like' => [ + '@id' => 'pixelfed:canLike', + '@type' => '@id' + ], + 'reply' => [ + '@id' => 'pixelfed:canReply', + '@type' => '@id' + ], + 'toot' => 'http://joinmastodon.org/ns#', + 'Emoji' => 'toot:Emoji' ] ], 'id' => $status->permalink(), diff --git a/app/Transformer/ActivityPub/Verb/Note.php b/app/Transformer/ActivityPub/Verb/Note.php index 464bf6df..2f7cbf2f 100644 --- a/app/Transformer/ActivityPub/Verb/Note.php +++ b/app/Transformer/ActivityPub/Verb/Note.php @@ -54,17 +54,32 @@ class Note extends Fractal\TransformerAbstract return [ '@context' => [ - 'https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1', + 'https://www.w3.org/ns/activitystreams', [ - 'sc' => 'http://schema.org#', 'Hashtag' => 'as:Hashtag', 'sensitive' => 'as:sensitive', - 'commentsEnabled' => 'sc:Boolean', - '@capabilities' => [ - '@announce' => '@id', - '@like' => '@id', - '@reply' => '@id', + 'schema' => 'http://schema.org/', + 'pixelfed' => 'http://pixelfed.org/ns#' + 'commentsEnabled' => [ + '@id' => 'pixelfed:commentsEnabled', + '@type' => 'schema:Boolean' + ], + 'capabilities' => [ + '@id' => 'pixelfed:capabilities', + '@container' => '@set' + ], + 'announce' => [ + '@id' => 'pixelfed:canAnnounce', + '@type' => '@id' + ], + 'like' => [ + '@id' => 'pixelfed:canLike', + '@type' => '@id' + ], + 'reply' => [ + '@id' => 'pixelfed:canReply', + '@type' => '@id' ], 'toot' => 'http://joinmastodon.org/ns#', 'Emoji' => 'toot:Emoji' diff --git a/app/Transformer/ActivityPub/Verb/Question.php b/app/Transformer/ActivityPub/Verb/Question.php index 32898d13..ab207bcc 100644 --- a/app/Transformer/ActivityPub/Verb/Question.php +++ b/app/Transformer/ActivityPub/Verb/Question.php @@ -32,58 +32,75 @@ class Question extends Fractal\TransformerAbstract $tags = array_merge($mentions, $hashtags); return [ - '@context' => [ - 'https://www.w3.org/ns/activitystreams', - 'https://w3id.org/security/v1', - [ - 'sc' => 'http://schema.org#', - 'Hashtag' => 'as:Hashtag', - 'sensitive' => 'as:sensitive', - 'commentsEnabled' => 'sc:Boolean', - '@capabilities' => [ - '@announce' => '@id', - '@like' => '@id', - '@reply' => '@id', - ], + '@context' => [ + 'https://w3id.org/security/v1', + 'https://www.w3.org/ns/activitystreams', + [ + 'Hashtag' => 'as:Hashtag', + 'sensitive' => 'as:sensitive', + 'schema' => 'http://schema.org/', + 'pixelfed' => 'http://pixelfed.org/ns#' + 'commentsEnabled' => [ + '@id' => 'pixelfed:commentsEnabled', + '@type' => 'schema:Boolean' + ], + 'capabilities' => [ + '@id' => 'pixelfed:capabilities', + '@container' => '@set' + ], + 'announce' => [ + '@id' => 'pixelfed:canAnnounce', + '@type' => '@id' + ], + 'like' => [ + '@id' => 'pixelfed:canLike', + '@type' => '@id' + ], + 'reply' => [ + '@id' => 'pixelfed:canReply', + '@type' => '@id' + ], + 'toot' => 'http://joinmastodon.org/ns#', + 'Emoji' => 'toot:Emoji' + ] + ], + 'id' => $status->url(), + 'type' => 'Question', + 'summary' => null, + 'content' => $status->rendered ?? $status->caption, + 'inReplyTo' => $status->in_reply_to_id ? $status->parent()->url() : null, + 'published' => $status->created_at->toAtomString(), + 'url' => $status->url(), + 'attributedTo' => $status->profile->permalink(), + 'to' => $status->scopeToAudience('to'), + 'cc' => $status->scopeToAudience('cc'), + 'sensitive' => (bool) $status->is_nsfw, + 'attachment' => [], + 'tag' => $tags, + 'commentsEnabled' => (bool) !$status->comments_disabled, + 'capabilities' => [ + 'announce' => 'https://www.w3.org/ns/activitystreams#Public', + 'like' => 'https://www.w3.org/ns/activitystreams#Public', + 'reply' => $status->comments_disabled == true ? null : 'https://www.w3.org/ns/activitystreams#Public' + ], + 'location' => $status->place_id ? [ + 'type' => 'Place', + 'name' => $status->place->name, + 'longitude' => $status->place->long, + 'latitude' => $status->place->lat, + 'country' => $status->place->country + ] : null, + 'endTime' => $status->poll->expires_at->toAtomString(), + 'oneOf' => collect($status->poll->poll_options)->map(function($option, $index) use($status) { + return [ + 'type' => 'Note', + 'name' => $option, + 'replies' => [ + 'type' => 'Collection', + 'totalItems' => $status->poll->cached_tallies[$index] ] - ], - 'id' => $status->url(), - 'type' => 'Question', - 'summary' => null, - 'content' => $status->rendered ?? $status->caption, - 'inReplyTo' => $status->in_reply_to_id ? $status->parent()->url() : null, - 'published' => $status->created_at->toAtomString(), - 'url' => $status->url(), - 'attributedTo' => $status->profile->permalink(), - 'to' => $status->scopeToAudience('to'), - 'cc' => $status->scopeToAudience('cc'), - 'sensitive' => (bool) $status->is_nsfw, - 'attachment' => [], - 'tag' => $tags, - 'commentsEnabled' => (bool) !$status->comments_disabled, - 'capabilities' => [ - 'announce' => 'https://www.w3.org/ns/activitystreams#Public', - 'like' => 'https://www.w3.org/ns/activitystreams#Public', - 'reply' => $status->comments_disabled == true ? null : 'https://www.w3.org/ns/activitystreams#Public' - ], - 'location' => $status->place_id ? [ - 'type' => 'Place', - 'name' => $status->place->name, - 'longitude' => $status->place->long, - 'latitude' => $status->place->lat, - 'country' => $status->place->country - ] : null, - 'endTime' => $status->poll->expires_at->toAtomString(), - 'oneOf' => collect($status->poll->poll_options)->map(function($option, $index) use($status) { - return [ - 'type' => 'Note', - 'name' => $option, - 'replies' => [ - 'type' => 'Collection', - 'totalItems' => $status->poll->cached_tallies[$index] - ] - ]; - }) - ]; + ]; + }) + ]; } }