$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'];
$contacts = DBA::select('contact', ['id', 'url', 'network', 'protocol', 'gsid'], $condition);
while ($contact = DBA::fetch($contacts)) {
- if (Contact::isLocal($contact['url'])) {
- continue;
- }
-
if (!self::isAPContact($contact, $networks)) {
continue;
}
$profile = APContact::getByURL($contact['url'], false);
if (!empty($profile)) {
- if (empty($profile['sharedinbox']) || $personal) {
+ if (empty($profile['sharedinbox']) || $personal || Contact::isLocal($contact['url'])) {
$target = $profile['inbox'];
} else {
$target = $profile['sharedinbox'];
if ($item_profile && ($receiver == $item_profile['followers']) && ($uid == $profile_uid)) {
$inboxes = array_merge($inboxes, self::fetchTargetInboxesforUser($uid, $personal, self::isAPPost($last_id)));
} else {
- if (Contact::isLocal($receiver)) {
- continue;
- }
-
$profile = APContact::getByURL($receiver, false);
if (!empty($profile)) {
$contact = Contact::getByURLForUser($receiver, $uid, false, ['id']);
- if (empty($profile['sharedinbox']) || $personal || $blindcopy) {
+ if (empty($profile['sharedinbox']) || $personal || $blindcopy || Contact::isLocal($receiver)) {
$target = $profile['inbox'];
} else {
$target = $profile['sharedinbox'];