Issue 8610: Implicit mentions work again

This commit is contained in:
Michael
2020-05-09 06:33:59 +00:00
parent e53e471b6b
commit d5f64e1156
3 changed files with 36 additions and 28 deletions
+21
View File
@@ -325,6 +325,27 @@ class Tag
}
}
/**
* Create implicit mentions for a given post
*
* @param integer $uri_id
* @param integer $parent_uri_id
*/
public static function createImplicitMentions(int $uri_id, int $parent_uri_id)
{
if (DI::config()->get('system', 'disable_implicit_mentions')) {
return;
}
$tags = DBA::select('tag-view', ['name', 'url'], ['uri-id' => $parent_uri_id]);
while ($tag = DBA::fetch($tags)) {
self::store($uri_id, self::IMPLICIT_MENTION, $tag['name'], $tag['url']);
}
$parent = Item::selectFirst(['author-link', 'author-name'], ['uri-id' => $parent_uri_id]);
self::store($uri_id, self::IMPLICIT_MENTION, $parent['author-name'], $parent['author-link']);
}
/**
* Retrieves the terms from the provided type(s) associated with the provided item ID.
*
+6 -6
View File
@@ -1294,7 +1294,7 @@ class Transmitter
$body = $item['body'];
if (empty($item['uid']) || !Feature::isEnabled($item['uid'], 'explicit_mentions')) {
$body = self::prependMentions($body, $permission_block);
$body = self::prependMentions($body, $item['uri-id']);
}
if ($type == 'Note') {
@@ -1843,7 +1843,7 @@ class Transmitter
HTTPSignature::transmit($signed, $profile['inbox'], $uid);
}
private static function prependMentions($body, array $permission_block)
private static function prependMentions($body, int $uriid)
{
if (DI::config()->get('system', 'disable_implicit_mentions')) {
return $body;
@@ -1851,14 +1851,14 @@ class Transmitter
$mentions = [];
foreach ($permission_block['to'] as $profile_url) {
$profile = Contact::getDetailsByURL($profile_url);
foreach (Tag::getByURIId($uriid, [Tag::IMPLICIT_MENTION]) as $tag) {
$profile = Contact::getDetailsByURL($tag['url']);
if (!empty($profile['addr'])
&& $profile['contact-type'] != Contact::TYPE_COMMUNITY
&& !strstr($body, $profile['addr'])
&& !strstr($body, $profile_url)
&& !strstr($body, $tag['url'])
) {
$mentions[] = '@[url=' . $profile_url . ']' . $profile['nick'] . '[/url]';
$mentions[] = '@[url=' . $tag['url'] . ']' . $profile['nick'] . '[/url]';
}
}