Avoid thread completion on activities

This commit is contained in:
Michael 2022-02-12 13:05:56 +00:00
parent 1b73e4d267
commit cdee2b44db
2 changed files with 18 additions and 5 deletions

View file

@ -642,11 +642,17 @@ class Processor
continue; continue;
} }
if (!($item['isForum'] ?? false) && ($receiver != 0) && ($item['gravity'] == GRAVITY_PARENT) && if (!($item['isForum'] ?? false) && ($receiver != 0) && ($item['gravity'] == GRAVITY_PARENT) && !Contact::isSharingByURL($activity['author'], $receiver)) {
($item['post-reason'] == Item::PR_BCC) && !Contact::isSharingByURL($activity['author'], $receiver)) { if ($item['post-reason'] == Item::PR_BCC) {
Logger::info('Top level post via BCC from a non sharer, ignoring', ['uid' => $receiver, 'contact' => $item['contact-id']]); Logger::info('Top level post via BCC from a non sharer, ignoring', ['uid' => $receiver, 'contact' => $item['contact-id']]);
continue; continue;
} }
if (!empty($activity['thread-children-type']) && in_array($activity['thread-children-type'], Receiver::ACTIVITY_TYPES)) {
Logger::info('Top level post from thread completion from a non sharer had been initiated via an activity, ignoring',
['type' => $activity['thread-children-type'], 'user' => $item['uid'], 'causer' => $item['causer-link'], 'author' => $activity['author'], 'url' => $item['uri']]);
continue;
}
}
$is_forum = false; $is_forum = false;
@ -887,6 +893,10 @@ class Processor
$ldactivity['thread-completion'] = Contact::getIdForURL($actor); $ldactivity['thread-completion'] = Contact::getIdForURL($actor);
} }
if (!empty($child['type'])) {
$ldactivity['thread-children-type'] = $child['type'];
}
if (!empty($relay_actor) && !self::acceptIncomingMessage($ldactivity, $object['id'])) { if (!empty($relay_actor) && !self::acceptIncomingMessage($ldactivity, $object['id'])) {
return ''; return '';
} }

View file

@ -515,6 +515,9 @@ class Receiver
if (!empty($activity['thread-completion'])) { if (!empty($activity['thread-completion'])) {
$object_data['thread-completion'] = $activity['thread-completion']; $object_data['thread-completion'] = $activity['thread-completion'];
} }
if (!empty($activity['thread-children-type'])) {
$object_data['thread-children-type'] = $activity['thread-children-type'];
}
// Internal flag for posts that arrived via relay // Internal flag for posts that arrived via relay
if (!empty($activity['from-relay'])) { if (!empty($activity['from-relay'])) {