From e5704eb05ab395fdd842614f49eaaf7b8f8bfaa0 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 4 Nov 2020 08:57:21 +0000 Subject: [PATCH] Fix: Posts sent to forums had been rejected --- src/Protocol/ActivityPub/Transmitter.php | 12 +----------- src/Protocol/DFRN.php | 11 ++++++++--- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index 54df8e059..0044b5240 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -462,14 +462,12 @@ class Transmitter } $always_bcc = false; - $isforum = false; // Check if we should always deliver our stuff via BCC if (!empty($item['uid'])) { $profile = User::getOwnerDataById($item['uid']); if (!empty($profile)) { $always_bcc = $profile['hide-friends']; - $isforum = $profile['account-type'] == User::ACCOUNT_TYPE_COMMUNITY; } } @@ -477,7 +475,7 @@ class Transmitter $always_bcc = true; } - if ((self::isAnnounce($item) && !$isforum) || DI::config()->get('debug', 'total_ap_delivery')) { + if (self::isAnnounce($item) || DI::config()->get('debug', 'total_ap_delivery')) { // Will be activated in a later step $networks = Protocol::FEDERATED; } else { @@ -531,10 +529,6 @@ class Transmitter continue; } - if ($isforum && DBA::isResult($contact) && ($contact['dfrn'] == Protocol::DFRN)) { - continue; - } - if (!empty($profile = APContact::getByURL($contact['url'], false))) { $data['to'][] = $profile['url']; } @@ -547,10 +541,6 @@ class Transmitter continue; } - if ($isforum && DBA::isResult($contact) && ($contact['dfrn'] == Protocol::DFRN)) { - continue; - } - if (!empty($profile = APContact::getByURL($contact['url'], false))) { if ($contact['hidden'] || $always_bcc) { $data['bcc'][] = $profile['url']; diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 218608102..b6f7f1cb2 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -1500,15 +1500,20 @@ class DFRN $fields = ['id', 'uid', 'url', 'network', 'avatar-date', 'avatar', 'name-date', 'uri-date', 'addr', 'name', 'nick', 'about', 'location', 'keywords', 'xmpp', 'bdyear', 'bd', 'hidden', 'contact-type']; - $condition = ["`uid` = ? AND `nurl` = ? AND `network` != ? AND NOT `pending` AND NOT `blocked` AND `rel` IN (?, ?)", - $importer["importer_uid"], Strings::normaliseLink($author["link"]), Protocol::STATUSNET, - Contact::SHARING, Contact::FRIEND]; + $condition = ["`uid` = ? AND `nurl` = ? AND `network` != ? AND NOT `pending` AND NOT `blocked`", + $importer["importer_uid"], Strings::normaliseLink($author["link"]), Protocol::STATUSNET]; + + if ($importer['account-type'] != User::ACCOUNT_TYPE_COMMUNITY) { + $condition = DBA::mergeConditions($condition, ['rel' => [Contact::SHARING, Contact::FRIEND]]); + } + $contact_old = DBA::selectFirst('contact', $fields, $condition); if (DBA::isResult($contact_old)) { $author["contact-id"] = $contact_old["id"]; $author["network"] = $contact_old["network"]; } else { + Logger::info('Blubb', ['condition' => $condition]); if (!$onlyfetch) { Logger::debug("Contact ".$author["link"]." wasn't found for user ".$importer["importer_uid"]." XML: ".$xml); }