parent
cd7a663733
commit
30f31828ae
|
@ -1245,6 +1245,42 @@ class BBCode
|
||||||
return $match[1] . '[url=' . $data['url'] . ']' . $data['nick'] . '[/url]';
|
return $match[1] . '[url=' . $data['url'] . ']' . $data['nick'] . '[/url]';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replace mention links
|
||||||
|
*
|
||||||
|
* @param string $body HTML/BBCode
|
||||||
|
* @return string Body with replaced mentions
|
||||||
|
*/
|
||||||
|
public static function setMentionsToAddr(string $body): string
|
||||||
|
{
|
||||||
|
DI::profiler()->startRecording('rendering');
|
||||||
|
$regexp = "/([@!])\[url\=([^\[\]]*)\].*?\[\/url\]/ism";
|
||||||
|
$body = preg_replace_callback($regexp, [self::class, 'mentionToAddrCallback'], $body);
|
||||||
|
DI::profiler()->stopRecording();
|
||||||
|
return $body;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback function to replace a Friendica style mention in a mention with the addr
|
||||||
|
*
|
||||||
|
* @param array $match Matching values for the callback
|
||||||
|
* @return string Replaced mention or empty string
|
||||||
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
|
*/
|
||||||
|
private static function mentionToAddrCallback(array $match): string
|
||||||
|
{
|
||||||
|
if (empty($match[2])) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = Contact::getByURL($match[2], false, ['url', 'nick', 'addr']);
|
||||||
|
if (empty($data['nick'])) {
|
||||||
|
return $match[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $match[1] . ($data['addr'] ?: $data['nick']);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Normalize links to Youtube and Vimeo to a unified format.
|
* Normalize links to Youtube and Vimeo to a unified format.
|
||||||
*
|
*
|
||||||
|
|
|
@ -38,10 +38,14 @@ class StatusSource extends BaseFactory
|
||||||
*/
|
*/
|
||||||
public function createFromUriId(int $uriId, int $uid): \Friendica\Object\Api\Mastodon\StatusSource
|
public function createFromUriId(int $uriId, int $uid): \Friendica\Object\Api\Mastodon\StatusSource
|
||||||
{
|
{
|
||||||
$post = Post::selectOriginal(['uri-id', 'raw-body', 'body', 'title'], ['uri-id' => $uriId, 'uid' => [0, $uid]]);
|
$post = Post::selectOriginal(['uri-id', 'raw-body', 'body', 'title', 'content-warning'], ['uri-id' => $uriId, 'uid' => [0, $uid]]);
|
||||||
|
|
||||||
$spoiler_text = $post['title'] ?: BBCode::toPlaintext(BBCode::getAbstract($post['body'], Protocol::ACTIVITYPUB));
|
$spoiler_text = $post['title'] ?: $post['content-warning'] ?: BBCode::toPlaintext(BBCode::getAbstract($post['body'], Protocol::ACTIVITYPUB));
|
||||||
$body = BBCode::toMarkdown(Post\Media::removeFromEndOfBody($post['body']));
|
|
||||||
|
$body = Post\Media::removeFromEndOfBody($post['body']);
|
||||||
|
$body = Post\Media::addHTMLLinkToBody($uriId, $body);
|
||||||
|
$body = BBCode::setMentionsToAddr($body);
|
||||||
|
$body = BBCode::toPlaintext($body);
|
||||||
|
|
||||||
return new \Friendica\Object\Api\Mastodon\StatusSource($post['uri-id'], $body, $spoiler_text);
|
return new \Friendica\Object\Api\Mastodon\StatusSource($post['uri-id'], $body, $spoiler_text);
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,7 +82,7 @@ class Markers extends BaseApi
|
||||||
$values->{$marker['timeline']} = [
|
$values->{$marker['timeline']} = [
|
||||||
'last_read_id' => $marker['last_read_id'],
|
'last_read_id' => $marker['last_read_id'],
|
||||||
'version' => $marker['version'],
|
'version' => $marker['version'],
|
||||||
'updated_at' => $marker['updated_at']
|
'updated_at' => DateTimeFormat::utc($marker['updated_at'], DateTimeFormat::JSON)
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
return $values;
|
return $values;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user