Fix implicit mentions in outgoing ActivityPub posts

- Add usage of system.disable_implicit_mentions to disable implicit mention behavior
- Add usage of item own implicit mentions to be prepended to the outgoing body
This commit is contained in:
Hypolite Petovan 2019-02-22 23:43:32 -05:00
parent 3ac8576c8e
commit cb78e77850

View file

@ -343,7 +343,7 @@ class Transmitter
$actor_profile = APContact::getByURL($item['author-link']); $actor_profile = APContact::getByURL($item['author-link']);
} }
$terms = Term::tagArrayFromItemId($item['id'], TERM_MENTION); $terms = Term::tagArrayFromItemId($item['id'], [Term::MENTION, Term::IMPLICIT_MENTION]);
if (!$item['private']) { if (!$item['private']) {
$data = array_merge($data, self::fetchPermissionBlockFromConversation($item)); $data = array_merge($data, self::fetchPermissionBlockFromConversation($item));
@ -807,12 +807,12 @@ class Transmitter
{ {
$tags = []; $tags = [];
$terms = Term::tagArrayFromItemId($item['id']); $terms = Term::tagArrayFromItemId($item['id'], [Term::HASHTAG, Term::MENTION, Term::IMPLICIT_MENTION]);
foreach ($terms as $term) { foreach ($terms as $term) {
if ($term['type'] == TERM_HASHTAG) { if ($term['type'] == Term::HASHTAG) {
$url = System::baseUrl() . '/search?tag=' . urlencode($term['term']); $url = System::baseUrl() . '/search?tag=' . urlencode($term['term']);
$tags[] = ['type' => 'Hashtag', 'href' => $url, 'name' => '#' . $term['term']]; $tags[] = ['type' => 'Hashtag', 'href' => $url, 'name' => '#' . $term['term']];
} elseif ($term['type'] == TERM_MENTION) { } elseif ($term['type'] == Term::MENTION || $term['type'] == Term::IMPLICIT_MENTION) {
$contact = Contact::getDetailsByURL($term['url']); $contact = Contact::getDetailsByURL($term['url']);
if (!empty($contact['addr'])) { if (!empty($contact['addr'])) {
$mention = '@' . $contact['addr']; $mention = '@' . $contact['addr'];
@ -1439,6 +1439,10 @@ class Transmitter
private static function prependMentions($body, array $permission_block) private static function prependMentions($body, array $permission_block)
{ {
if (Config::get('system', 'disable_implicit_mentions')) {
return $body;
}
$mentions = []; $mentions = [];
foreach ($permission_block['to'] as $profile_url) { foreach ($permission_block['to'] as $profile_url) {