diff --git a/mod/settings.php b/mod/settings.php index dd3303892b..47505bd726 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -840,7 +840,7 @@ function settings_content(App $a) ]); $unlisted = Renderer::replaceMacros($opt_tpl, [ - '$field' => ['unlisted', DI::l10n()->t('Should public posts be unlisted?'), DI::pConfig()->get(local_user(), 'system', 'unlisted'), DI::l10n()->t('Your public posts will not appear on the community page or in search results, nor will they be transported to relay servers.')], + '$field' => ['unlisted', DI::l10n()->t('Should public posts be unlisted?'), DI::pConfig()->get(local_user(), 'system', 'unlisted'), DI::l10n()->t('Your public posts will not appear on the community page or in search results, nor will they be transported to relay servers. However they can appear on public feeds from other servers.')], ]); $blockwall = Renderer::replaceMacros($opt_tpl, [ diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 078deff7a3..4c88db1d94 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -1052,6 +1052,7 @@ class DFRN if ($item['private']) { // Friendica versions prior to 2020.3 can't handle "unlisted" properly. So we can only transmit public and private XML::addElement($doc, $entry, "dfrn:private", ($item['private'] == Item::PRIVATE ? Item::PRIVATE : Item::PUBLIC)); + XML::addElement($doc, $entry, "dfrn:unlisted", $item['private'] == Item::UNLISTED); } if ($item['extid']) { @@ -2405,6 +2406,11 @@ class DFRN $item["private"] = XML::getFirstNodeValue($xpath, "dfrn:private/text()", $entry); + $unlisted = XML::getFirstNodeValue($xpath, "dfrn:unlisted/text()", $entry); + if (!empty($unlisted) && ($item['private'] != Item::PRIVATE)) { + $item['private'] = Item::UNLISTED; + } + $item["extid"] = XML::getFirstNodeValue($xpath, "dfrn:extid/text()", $entry); if (XML::getFirstNodeValue($xpath, "dfrn:bookmark/text()", $entry) == "true") {