$original_contact_id = $contact_id;
if (!$toplevel_item_id && !empty($forum_contact) && ($private_forum || $only_to_forum)) {
- // we tagged a forum in a top level post. Now we change the post
- $private = $private_forum;
+ // we tagged a forum in a top level post. Now we change the post
+ $private = $private_forum ? Item::PRIVATE : Item::UNLISTED;
if ($only_to_forum) {
$postopts = '';
// also reset all the privacy bits to the forum default permissions
- $private = ($user['allow_cid'] || $user['allow_gid'] || $user['deny_cid'] || $user['deny_gid']) ? self::PRIVATE : self::PUBLIC;
+ $private = ($user['allow_cid'] || $user['allow_gid'] || $user['deny_cid'] || $user['deny_gid']) ? self::PRIVATE : self::UNLISTED;
$psid = PermissionSet::getIdFromACL(
$user['uid'],
$actor_profile = APContact::getByURL($item['author-link']);
}
+ $exclusive = false;
+
$terms = Tag::getByURIId($item['uri-id'], [Tag::MENTION, Tag::IMPLICIT_MENTION, Tag::EXCLUSIVE_MENTION]);
if ($item['private'] != Item::PRIVATE) {
foreach ($terms as $term) {
$profile = APContact::getByURL($term['url'], false);
if (!empty($profile)) {
+ if ($term['type'] == Tag::EXCLUSIVE_MENTION) {
+ $exclusive = true;
+ }
$data['to'][] = $profile['url'];
}
}
$data['cc'][] = $actor_profile['followers'];
}
}
- } else {
+ } elseif (!$exclusive) {
// Public thread parent post always are directed to the followers
if (($item['private'] != Item::PRIVATE) && !$forum_mode) {
$data['cc'][] = $actor_profile['followers'];
}
Logger::log('Notify ' . $target_item["guid"] .' via PuSH: ' . ($push_notify ? "Yes":"No"), Logger::DEBUG);
+ } elseif ($targets = Tag::getByURIId($target_item['uri-id'], [Tag::EXCLUSIVE_MENTION])) {
+ $followup = true;
+
+ foreach ($targets as $target) {
+ $cid = Contact::getIdForURL($target['url'], $uid, false);
+ if ($cid) {
+ $recipients_followup[] = $cid;
+ Logger::info('Exclusively delivering', ['guid' => $target_item['guid'], 'uri-id' => $target_item['uri-id'], 'url' => $target['url']]);
+ }
+ }
} else {
$followup = false;