mirror of
https://github.com/friendica/friendica
synced 2024-11-11 05:42:53 +00:00
Fix receiver list for mails / only deliver mail via DFRN to legacy contacts
This commit is contained in:
parent
f0c1f3e7f1
commit
f3c2eb5b11
2 changed files with 38 additions and 36 deletions
|
@ -422,46 +422,48 @@ class Transmitter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$parents = Item::select(['id', 'author-link', 'owner-link', 'gravity', 'uri'], ['parent' => $item['parent']]);
|
if (!empty($item['parent'])) {
|
||||||
while ($parent = Item::fetch($parents)) {
|
$parents = Item::select(['id', 'author-link', 'owner-link', 'gravity', 'uri'], ['parent' => $item['parent']]);
|
||||||
if ($parent['gravity'] == GRAVITY_PARENT) {
|
while ($parent = Item::fetch($parents)) {
|
||||||
$profile = APContact::getByURL($parent['owner-link'], false);
|
if ($parent['gravity'] == GRAVITY_PARENT) {
|
||||||
if (!empty($profile)) {
|
$profile = APContact::getByURL($parent['owner-link'], false);
|
||||||
if ($item['gravity'] != GRAVITY_PARENT) {
|
if (!empty($profile)) {
|
||||||
// Comments to forums are directed to the forum
|
if ($item['gravity'] != GRAVITY_PARENT) {
|
||||||
// But comments to forums aren't directed to the followers collection
|
// Comments to forums are directed to the forum
|
||||||
if ($profile['type'] == 'Group') {
|
// But comments to forums aren't directed to the followers collection
|
||||||
$data['to'][] = $profile['url'];
|
if ($profile['type'] == 'Group') {
|
||||||
|
$data['to'][] = $profile['url'];
|
||||||
|
} else {
|
||||||
|
$data['cc'][] = $profile['url'];
|
||||||
|
if (!$item['private']) {
|
||||||
|
$data['cc'][] = $actor_profile['followers'];
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$data['cc'][] = $profile['url'];
|
// Public thread parent post always are directed to the followes
|
||||||
if (!$item['private']) {
|
if (!$item['private'] && !$forum_mode) {
|
||||||
$data['cc'][] = $actor_profile['followers'];
|
$data['cc'][] = $actor_profile['followers'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Don't include data from future posts
|
||||||
|
if ($parent['id'] >= $last_id) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$profile = APContact::getByURL($parent['author-link'], false);
|
||||||
|
if (!empty($profile)) {
|
||||||
|
if (($profile['type'] == 'Group') || ($parent['uri'] == $item['thr-parent'])) {
|
||||||
|
$data['to'][] = $profile['url'];
|
||||||
} else {
|
} else {
|
||||||
// Public thread parent post always are directed to the followes
|
$data['cc'][] = $profile['url'];
|
||||||
if (!$item['private'] && !$forum_mode) {
|
|
||||||
$data['cc'][] = $actor_profile['followers'];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DBA::close($parents);
|
||||||
// Don't include data from future posts
|
|
||||||
if ($parent['id'] >= $last_id) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$profile = APContact::getByURL($parent['author-link'], false);
|
|
||||||
if (!empty($profile)) {
|
|
||||||
if (($profile['type'] == 'Group') || ($parent['uri'] == $item['thr-parent'])) {
|
|
||||||
$data['to'][] = $profile['url'];
|
|
||||||
} else {
|
|
||||||
$data['cc'][] = $profile['url'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
DBA::close($parents);
|
|
||||||
|
|
||||||
$data['to'] = array_unique($data['to']);
|
$data['to'] = array_unique($data['to']);
|
||||||
$data['cc'] = array_unique($data['cc']);
|
$data['cc'] = array_unique($data['cc']);
|
||||||
|
|
|
@ -78,7 +78,7 @@ class Notifier
|
||||||
$recipients[] = $message['contact-id'];
|
$recipients[] = $message['contact-id'];
|
||||||
|
|
||||||
$mail = ActivityPub\Transmitter::ItemArrayFromMail($target_id);
|
$mail = ActivityPub\Transmitter::ItemArrayFromMail($target_id);
|
||||||
$inboxes = ActivityPub\Transmitter::fetchTargetInboxes($mail, §uid, true);
|
$inboxes = ActivityPub\Transmitter::fetchTargetInboxes($mail, $uid, true);
|
||||||
foreach ($inboxes as $inbox) {
|
foreach ($inboxes as $inbox) {
|
||||||
Logger::info('Delivery via ActivityPub', ['cmd' => $cmd, 'id' => $target_id, 'inbox' => $inbox]);
|
Logger::info('Delivery via ActivityPub', ['cmd' => $cmd, 'id' => $target_id, 'inbox' => $inbox]);
|
||||||
Worker::add(['priority' => PRIORITY_HIGH, 'created' => $a->queue['created'], 'dont_fork' => true],
|
Worker::add(['priority' => PRIORITY_HIGH, 'created' => $a->queue['created'], 'dont_fork' => true],
|
||||||
|
@ -441,8 +441,8 @@ class Notifier
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($rr['network'] == Protocol::DFRN) && ($rr['protocol'] == Protocol::ACTIVITYPUB) &&
|
if (in_array($rr['network'], [Protocol::DFRN, Protocol::DIASPORA]) && ($rr['protocol'] == Protocol::ACTIVITYPUB) &&
|
||||||
!in_array($cmd, [Delivery::MAIL, Delivery::SUGGESTION, Delivery::REMOVAL, Delivery::RELOCATION])) {
|
!in_array($cmd, [Delivery::SUGGESTION, Delivery::REMOVAL, Delivery::RELOCATION])) {
|
||||||
Logger::info('Contact is Friendica AP, so skipping delivery via legacy DFRN', ['url' => $rr['url']]);
|
Logger::info('Contact is Friendica AP, so skipping delivery via legacy DFRN', ['url' => $rr['url']]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -481,8 +481,8 @@ class Notifier
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($contact['network'] == Protocol::DFRN) && ($contact['protocol'] == Protocol::ACTIVITYPUB) &&
|
if (in_array($contact['network'], [Protocol::DFRN, Protocol::DIASPORA]) && ($contact['protocol'] == Protocol::ACTIVITYPUB) &&
|
||||||
!in_array($cmd, [Delivery::MAIL, Delivery::SUGGESTION, Delivery::REMOVAL, Delivery::RELOCATION])) {
|
!in_array($cmd, [Delivery::SUGGESTION, Delivery::REMOVAL, Delivery::RELOCATION])) {
|
||||||
Logger::info('Contact is Friendica AP, so skipping delivery via legacy DFRN', ['url' => $contact['url']]);
|
Logger::info('Contact is Friendica AP, so skipping delivery via legacy DFRN', ['url' => $contact['url']]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue