aboutsummaryrefslogtreecommitdiffstats
path: root/include/items.php
diff options
context:
space:
mode:
Diffstat (limited to 'include/items.php')
-rwxr-xr-xinclude/items.php21
1 files changed, 20 insertions, 1 deletions
diff --git a/include/items.php b/include/items.php
index 1fe98c119..a14e3db3a 100755
--- a/include/items.php
+++ b/include/items.php
@@ -7,6 +7,7 @@
use Zotlabs\Lib\Enotify;
use Zotlabs\Lib\MarkdownSoap;
use Zotlabs\Lib\MessageFilter;
+use Zotlabs\Lib\ThreadListener;
use Zotlabs\Lib\IConfig;
use Zotlabs\Access\PermissionLimits;
use Zotlabs\Access\AccessList;
@@ -141,6 +142,22 @@ function collect_recipients($item, &$private_envelope,$include_groups = true) {
// $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
+ // 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'])) {
+ $r = ThreadListener::fetch_by_target($item['parent_mid']);
+ if($r) {
+ foreach($r as $rv) {
+ $recipients[] = $rv['portable_id'];
+ }
+ }
+ }
+
+
// Add the authors of any posts in this thread, if they are known to us.
// This is specifically designed to forward wall-to-wall posts to the original author,
// in case they aren't a connection but have permission to write on our wall.
@@ -3867,6 +3884,8 @@ function delete_item_lowlevel($item, $stage = DROPITEM_NORMAL, $force = false) {
intval(TERM_OBJ_POST)
);
+ ThreadListener::delete_by_target($item['mid']);
+
/** @FIXME remove notifications for this item */
return true;
@@ -4561,7 +4580,7 @@ function set_linkified_perms($linkified, &$str_contact_allow, &$str_group_allow,
$first_access_tag = true;
foreach($linkified as $x) {
- $access_tag = $x['access_tag'];
+ $access_tag = $x['success']['access_tag'];
if(($access_tag) && (! $parent_item)) {
logger('access_tag: ' . $tag . ' ' . print_r($access_tag,true), LOGGER_DATA);
if ($first_access_tag && (! get_pconfig($profile_uid,'system','no_private_mention_acl_override'))) {