'schema' => 'http://schema.org#',
'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers',
'sensitive' => 'as:sensitive', 'Hashtag' => 'as:Hashtag',
+ 'quoteUrl' => 'as:quoteUrl',
+ 'conversation' => 'ostatus:conversation',
'directMessage' => 'litepub:directMessage',
'discoverable' => 'toot:discoverable',
'PropertyValue' => 'schema:PropertyValue',
/**
* Returns a tag array for a given item array
*
- * @param array $item Item array
+ * @param array $item Item array
+ * @param string $quote_url Url of the attached quote link
* @return array of tags
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
- private static function createTagList(array $item): array
+ private static function createTagList(array $item, string $quote_url): array
{
$tags = [];
$tags[] = ['type' => 'Mention', 'href' => $announce['actor']['url'], 'name' => '@' . $announce['actor']['addr']];
}
+ // @see https://codeberg.org/fediverse/fep/src/branch/main/feps/fep-e232.md
+ if (!empty($quote_url)) {
+ $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)
+ ];
+ }
+
return $tags;
}
$body = BBCode::setMentionsToNicknames($body);
+ $shared = BBCode::fetchShareAttributes($body);
+ if (!empty($shared['link']) && !empty($shared['guid']) && !empty($shared['comment'])) {
+ $body = self::ReplaceSharedData($body);
+ $data['quoteUrl'] = $shared['link'];
+ }
+
$data['content'] = BBCode::convertForUriId($item['uri-id'], $body, BBCode::ACTIVITYPUB);
}
}
$data['attachment'] = self::createAttachmentList($item, $type);
- $data['tag'] = self::createTagList($item);
+ $data['tag'] = self::createTagList($item, $data['quoteUrl'] ?? '');
if (empty($data['location']) && (!empty($item['coord']) || !empty($item['location']))) {
$data['location'] = self::createLocation($item);
return $data;
}
+ /**
+ * Replace the share block with a link
+ *
+ * @param string $body
+ * @return string
+ */
+ private static function ReplaceSharedData(string $body): string
+ {
+ return BBCode::convertShare(
+ $body,
+ function (array $attributes) {
+ return $attributes['link'];
+ }
+ );
+ }
+
/**
* Fetches the language from the post, the user or the system.
*