add sys channel to receiveres for public items

This commit is contained in:
Mario Vavti
2023-01-02 20:38:56 +01:00
parent 37b539eaa5
commit 0e71bfe222
2 changed files with 9 additions and 7 deletions

View File

@@ -509,6 +509,7 @@ class Notifier {
// public posts won't make it to the local public stream unless there's a recipient on this site.
// This code block sees if it's a public post and localhost is missing, and if so adds an entry for the local sys channel to the $hubs list
/* sys channel is now added in collect recipients
if (!self::$private) {
$found_localhost = false;
if ($hubs) {
@@ -529,6 +530,7 @@ class Notifier {
}
}
}
*/
if (!$hubs) {
logger('notifier: no hubs', LOGGER_NORMAL, LOG_NOTICE);

View File

@@ -97,7 +97,6 @@ function collect_recipients($item, &$private_envelope,$include_groups = true) {
$private_envelope = false;
require_once('include/channel.php');
//$sys = get_sys_channel();
if(array_key_exists('public_policy',$item) && $item['public_policy'] !== 'self') {
@@ -114,7 +113,7 @@ function collect_recipients($item, &$private_envelope,$include_groups = true) {
$r = $hookinfo['recipients'];
} else {
$r = q("select abook_xchan, xchan_network from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and abook_self = 0 and abook_pending = 0 and abook_archived = 0 ",
intval($item['uid'])
intval($item['uid'])
);
}
@@ -141,18 +140,19 @@ function collect_recipients($item, &$private_envelope,$include_groups = true) {
}
}
}
// we probably want to check that discovery channel delivery is allowed before uncommenting this.
// if($policy === 'pub')
// $recipients[] = $sys['xchan_hash'];
}
// Forward to thread listeners, *unless* there is even a remote hint that the item
// might have some privacy attached. This could be (for instance) an ActivityPub DM
// Forward to thread listeners and pubstream (sys channel), *unless* there is even
// a remote hint that the item might have some privacy attached.
// This could be (for instance) an ActivityPub DM
// in the middle of a public thread. Unless we can guarantee beyond all doubt that
// this is public, don't allow it to go to thread listeners.
if(! intval($item['item_private'])) {
$sys = get_sys_channel();
$recipients[] = $sys['xchan_hash'];
$r = ThreadListener::fetch_by_target($item['parent_mid']);
if($r) {
foreach($r as $rv) {