*/
public function addShareLink(string $body, int $quote_uri_id): string
{
- $post = Post::selectFirstPost(['uri', 'plink'], ['uri-id' => $quote_uri_id]);
+ $post = Post::selectFirstPost(['uri'], ['uri-id' => $quote_uri_id]);
if (empty($post)) {
return $body;
}
$body = BBCode::removeSharedData($body);
- $body .= "\n♲ " . ($post['plink'] ?: $post['uri']);
+ $body .= "\nRE: " . $post['uri'];
return $body;
}
$element = [
'type' => str_replace('as:', '', JsonLD::fetchElement($tag, '@type') ?? ''),
'href' => JsonLD::fetchElement($tag, 'as:href', '@id'),
- 'name' => JsonLD::fetchElement($tag, 'as:name', '@value')
+ 'name' => JsonLD::fetchElement($tag, 'as:name', '@value'),
+ 'mediaType' => JsonLD::fetchElement($tag, 'as:mediaType', '@value')
];
if (empty($element['type'])) {
}
// Support for quoted posts (Pleroma, Fedibird and Misskey)
- $object_data['quote-url'] = JsonLD::fetchElement($object, 'as:quoteUrl', '@value');
+ $object_data['quote-url'] = JsonLD::fetchElement($object, 'as:quoteUrl', '@id');
if (empty($object_data['quote-url'])) {
- $object_data['quote-url'] = JsonLD::fetchElement($object, 'fedibird:quoteUri', '@value');
+ $object_data['quote-url'] = JsonLD::fetchElement($object, 'fedibird:quoteUri', '@id');
}
if (empty($object_data['quote-url'])) {
- $object_data['quote-url'] = JsonLD::fetchElement($object, 'misskey:_misskey_quote', '@value');
+ $object_data['quote-url'] = JsonLD::fetchElement($object, 'misskey:_misskey_quote', '@id');
+ }
+
+ foreach ($object_data['tags'] as $tag) {
+ if (HTTPSignature::isValidContentType($tag['mediaType'] ?? '', $tag['href'])) {
+ $object_data['quote-url'] = $tag['href'];
+ }
}
// Misskey adds some data to the standard "content" value for quoted posts for backwards compatibility.
$tags[] = ['type' => 'Mention', 'href' => $announce['actor']['url'], 'name' => '@' . $announce['actor']['addr']];
}
- // @see https://codeberg.org/fediverse/fep/src/branch/main/feps/fep-e232.md
+ // @see https://codeberg.org/fediverse/fep/src/branch/main/fep/e232/fep-e232.md
if (!empty($quote_url)) {
- // Currently deactivated because of compatibility issues with Pleroma
- //$tags[] = [
- // 'type' => 'Link',
- // 'mediaType' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"',
- // 'href' => $quote_url,
- // 'name' => '♲ ' . BBCode::convertForUriId($item['uri-id'], $quote_url, BBCode::ACTIVITYPUB)
- //];
+ $tags[] = [
+ 'type' => 'Link',
+ 'mediaType' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"',
+ 'href' => $quote_url,
+ 'name' => 'RE: ' . $quote_url,
+ ];
}
return $tags;
if (!empty($item['quote-uri-id']) && ($item['quote-uri-id'] != $item['uri-id'])) {
if (Post::exists(['uri-id' => $item['quote-uri-id'], 'network' => [Protocol::ACTIVITYPUB, Protocol::DFRN]])) {
$real_quote = true;
+ $data['_misskey_content'] = BBCode::removeSharedData($body);
$data['quoteUrl'] = $item['quote-uri'];
$body = DI::contentItem()->addShareLink($body, $item['quote-uri-id']);
} else {