From 274788807d4c9304d734aa4aee603b5ed34f40be Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 5 Jan 2020 17:19:37 +0000 Subject: [PATCH 1/2] Fix a missing ")" --- src/Module/Admin/Site.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Module/Admin/Site.php b/src/Module/Admin/Site.php index cb97725613..3302e0dc16 100644 --- a/src/Module/Admin/Site.php +++ b/src/Module/Admin/Site.php @@ -585,7 +585,7 @@ class Site extends BaseAdminModule '$banner' => ['banner', L10n::t('Banner/Logo'), $banner, ''], '$shortcut_icon' => ['shortcut_icon', L10n::t('Shortcut icon'), Config::get('system', 'shortcut_icon'), L10n::t('Link to an icon that will be used for browsers.')], '$touch_icon' => ['touch_icon', L10n::t('Touch icon'), Config::get('system', 'touch_icon'), L10n::t('Link to an icon that will be used for tablets and mobiles.')], - '$additional_info' => ['additional_info', L10n::t('Additional Info'), $additional_info, L10n::t('For public servers: you can add additional information here that will be listed at %s/servers.', Search::getGlobalDirectory()], + '$additional_info' => ['additional_info', L10n::t('Additional Info'), $additional_info, L10n::t('For public servers: you can add additional information here that will be listed at %s/servers.', Search::getGlobalDirectory())], '$language' => ['language', L10n::t('System language'), Config::get('system', 'language'), '', $lang_choices], '$theme' => ['theme', L10n::t('System theme'), Config::get('system', 'theme'), L10n::t('Default system theme - may be over-ridden by user profiles - Change default theme settings'), $theme_choices], '$theme_mobile' => ['theme_mobile', L10n::t('Mobile system theme'), Config::get('system', 'mobile-theme', '---'), L10n::t('Theme for mobile devices'), $theme_choices_mobile], From ab43d3ddc41db39003c900d04ab0a19a6fb81293 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 5 Jan 2020 17:20:23 +0000 Subject: [PATCH 2/2] AP: ensure that incoming posts are reaching all receivers --- src/Protocol/ActivityPub/Processor.php | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index ad1b9d8bdf..c96a4e704c 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -176,6 +176,9 @@ class Processor } else { $item['gravity'] = GRAVITY_COMMENT; $item['object-type'] = Activity\ObjectType::COMMENT; + + // Ensure that the comment reaches all receivers of the referring post + $activity['receiver'] = self::addReceivers($activity); } if (empty($activity['directmessage']) && ($activity['id'] != $activity['reply-to-id']) && !Item::exists(['uri' => $activity['reply-to-id']])) { @@ -240,6 +243,35 @@ class Processor } } + /** + * Add users to the receiver list of the given public activity. + * This is used to ensure that the activity will be stored in every thread. + * + * @param array $activity Activity array + * @return array Modified receiver list + */ + private static function addReceivers(array $activity) + { + if (!in_array(0, $activity['receiver'])) { + // Private activities will not be modified + return $activity['receiver']; + } + + // Add all owners of the referring item to the receivers + $original = $receivers = $activity['receiver']; + $items = Item::select(['uid'], ['uri' => $activity['object_id']]); + while ($item = DBA::fetch($items)) { + $receivers['uid:' . $item['uid']] = $item['uid']; + } + DBA::close($items); + + if (count($original) != count($receivers)) { + Logger::info('Improved data', ['id' => $activity['id'], 'object' => $activity['object_id'], 'original' => $original, 'improved' => $receivers]); + } + + return $receivers; + } + /** * Prepare the item array for an activity * @@ -258,6 +290,8 @@ class Processor $item['diaspora_signed_text'] = $activity['diaspora:like'] ?? ''; + $activity['receiver'] = self::addReceivers($activity); + self::postItem($activity, $item); }