mirror of
https://github.com/friendica/friendica
synced 2025-04-26 13:50:11 +00:00
Merge pull request #8611 from annando/issue-8610
Issue 8610: Implicit mentions work again
This commit is contained in:
commit
d35dc64660
4 changed files with 38 additions and 81 deletions
|
@ -359,9 +359,7 @@ class Processor
|
|||
return false;
|
||||
}
|
||||
|
||||
$potential_implicit_mentions = self::getImplicitMentionList($parent);
|
||||
$content = self::removeImplicitMentionsFromBody($content, $potential_implicit_mentions);
|
||||
$activity['tags'] = self::convertImplicitMentionsInTags($activity['tags'], $potential_implicit_mentions);
|
||||
$content = self::removeImplicitMentionsFromBody($content, $parent);
|
||||
}
|
||||
$item['content-warning'] = HTML::toBBCode($activity['summary']);
|
||||
$item['body'] = $content;
|
||||
|
@ -971,10 +969,6 @@ class Processor
|
|||
*/
|
||||
private static function getImplicitMentionList(array $parent)
|
||||
{
|
||||
if (DI::config()->get('system', 'disable_implicit_mentions')) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$parent_terms = Tag::getByURIId($parent['uri-id'], [Tag::MENTION, Tag::IMPLICIT_MENTION, Tag::EXCLUSIVE_MENTION]);
|
||||
|
||||
$parent_author = Contact::getDetailsByURL($parent['author-link'], 0);
|
||||
|
@ -1008,15 +1002,17 @@ class Processor
|
|||
* Strips from the body prepended implicit mentions
|
||||
*
|
||||
* @param string $body
|
||||
* @param array $potential_mentions
|
||||
* @param array $parent
|
||||
* @return string
|
||||
*/
|
||||
private static function removeImplicitMentionsFromBody($body, array $potential_mentions)
|
||||
private static function removeImplicitMentionsFromBody(string $body, array $parent)
|
||||
{
|
||||
if (DI::config()->get('system', 'disable_implicit_mentions')) {
|
||||
return $body;
|
||||
}
|
||||
|
||||
$potential_mentions = self::getImplicitMentionList($parent);
|
||||
|
||||
$kept_mentions = [];
|
||||
|
||||
// Extract one prepended mention at a time from the body
|
||||
|
@ -1033,24 +1029,4 @@ class Processor
|
|||
|
||||
return implode('', $kept_mentions);
|
||||
}
|
||||
|
||||
private static function convertImplicitMentionsInTags($activity_tags, array $potential_mentions)
|
||||
{
|
||||
if (DI::config()->get('system', 'disable_implicit_mentions')) {
|
||||
return $activity_tags;
|
||||
}
|
||||
|
||||
foreach ($activity_tags as $index => $tag) {
|
||||
if (in_array($tag['href'], $potential_mentions)) {
|
||||
$activity_tags[$index]['name'] = preg_replace(
|
||||
'/' . preg_quote(Tag::TAG_CHARACTER[Tag::MENTION], '/') . '/',
|
||||
Tag::TAG_CHARACTER[Tag::IMPLICIT_MENTION],
|
||||
$activity_tags[$index]['name'],
|
||||
1
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return $activity_tags;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,22 +1843,18 @@ 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;
|
||||
}
|
||||
|
||||
$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]';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue