diff --git a/database.sql b/database.sql index ae71114e5b..b4f18a2685 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 2024.03-rc (Yellow Archangel) --- DB_UPDATE_VERSION 1556 +-- DB_UPDATE_VERSION 1557 -- ------------------------------------------ diff --git a/src/Model/APContact.php b/src/Model/APContact.php index 392f56ea43..0b8a78a999 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -376,6 +376,9 @@ class APContact } $apcontact['discoverable'] = JsonLD::fetchElement($compacted, 'toot:discoverable', '@value'); + if (is_null($apcontact['discoverable']) && ($apcontact['type'] == 'Application')) { + $apcontact['discoverable'] = false; + } if (!empty($apcontact['photo'])) { $apcontact['photo'] = Network::addBasePath($apcontact['photo'], $apcontact['url']); diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 3b09991cff..a04d1a5382 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1130,7 +1130,7 @@ class Contact { // Always unarchive the relay contact entry if (!empty($contact['batch']) && !empty($contact['term-date']) && ($contact['term-date'] > DBA::NULL_DATETIME)) { - $fields = ['failed' => false, 'term-date' => DBA::NULL_DATETIME, 'archive' => false]; + $fields = ['failed' => false, 'term-date' => DBA::NULL_DATETIME, 'archive' => false, 'unsearchable' => true]; $condition = ['uid' => 0, 'network' => Protocol::FEDERATED, 'batch' => $contact['batch'], 'contact-type' => self::TYPE_RELAY]; if (!DBA::exists('contact', array_merge($condition, $fields))) { self::update($fields, $condition); diff --git a/src/Network/Probe.php b/src/Network/Probe.php index fc5125f259..712c3c6dfd 100644 --- a/src/Network/Probe.php +++ b/src/Network/Probe.php @@ -118,7 +118,8 @@ class Probe 'following', 'followers', 'inbox', 'outbox', 'sharedinbox', 'priority', 'network', 'pubkey', 'manually-approve', 'baseurl', 'gsid']; - $numeric_fields = ['gsid', 'hide', 'account-type', 'manually-approve']; + $numeric_fields = ['gsid', 'account-type']; + $boolean_fields = ['hide', 'manually-approve']; if (!empty($data['photo'])) { $data['photo'] = Network::addBasePath($data['photo'], $data['url']); @@ -134,6 +135,8 @@ class Probe if (isset($data[$field])) { if (in_array($field, $numeric_fields)) { $newdata[$field] = (int)$data[$field]; + } elseif (in_array($field, $boolean_fields)) { + $newdata[$field] = (bool)$data[$field]; } else { $newdata[$field] = trim($data[$field]); } diff --git a/src/Protocol/Relay.php b/src/Protocol/Relay.php index d57cac21bf..8dd5e13c04 100644 --- a/src/Protocol/Relay.php +++ b/src/Protocol/Relay.php @@ -246,13 +246,14 @@ class Relay $fields['contact-type'] = Contact::TYPE_RELAY; Logger::info('Assigning missing data for relay contact', ['server' => $gserver['url'], 'id' => $old['id']]); } - } elseif (empty($fields)) { + } elseif (empty($fields) && $old['unsearchable']) { Logger::info('No content to update, quitting', ['server' => $gserver['url']]); return; } if (DBA::isResult($old)) { - $fields['updated'] = DateTimeFormat::utcNow(); + $fields['updated'] = DateTimeFormat::utcNow(); + $fields['unsearchable'] = true; Logger::info('Update relay contact', ['server' => $gserver['url'], 'id' => $old['id'], 'fields' => $fields]); Contact::update($fields, ['id' => $old['id']], $old); @@ -265,6 +266,7 @@ class Relay 'rel' => Contact::FOLLOWER, 'blocked' => false, 'pending' => false, 'writable' => true, 'gsid' => $gserver['id'], + 'unsearchable' => true, 'baseurl' => $gserver['url'], 'contact-type' => Contact::TYPE_RELAY]; $fields = array_merge($default, $fields); diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index cfda055818..8206ca34fb 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -56,7 +56,7 @@ use Friendica\Database\DBA; // This file is required several times during the test in DbaDefinition which justifies this condition if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1556); + define('DB_UPDATE_VERSION', 1557); } return [ diff --git a/update.php b/update.php index ffdfa55618..5295d0b210 100644 --- a/update.php +++ b/update.php @@ -63,6 +63,7 @@ use Friendica\Protocol\Activity; use Friendica\Protocol\Delivery; use Friendica\Security\PermissionSet\Repository\PermissionSet; use Friendica\Util\DateTimeFormat; +use Friendica\Worker\UpdateContact; // Post-update script of PR 5751 function update_1298() @@ -1447,3 +1448,13 @@ function update_1556() return Update::SUCCESS; } + +function update_1557() +{ + $contacts = DBA::select('account-view', ['id'], ['platform' => 'friendica', 'contact-type' => Contact::TYPE_RELAY]); + while ($contact = DBA::fetch($contacts)) { + UpdateContact::add(Worker::PRIORITY_LOW, $contact['id']); + } + DBA::close($contacts); + return Update::SUCCESS; +}