From 78271e88f5131b72b600a9a769ffa29c31307552 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 11 May 2018 05:44:31 +0000 Subject: [PATCH] Insert a gcontact on probing, but not insert a contact --- src/Network/Probe.php | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/src/Network/Probe.php b/src/Network/Probe.php index d31a222f8..4abfac44d 100644 --- a/src/Network/Probe.php +++ b/src/Network/Probe.php @@ -20,7 +20,7 @@ use Friendica\Protocol\Feed; use Friendica\Util\Crypto; use Friendica\Util\Network; use Friendica\Util\XML; - +use Friendica\Util\DateTimeFormat; use dba; use DOMXPath; use DOMDocument; @@ -357,11 +357,11 @@ class Probe } } - if (self::$baseurl != "") { + if (!empty(self::$baseurl)) { $data["baseurl"] = self::$baseurl; } - if (!isset($data["network"])) { + if (empty($data["network"])) { $data["network"] = NETWORK_PHANTOM; } @@ -411,6 +411,17 @@ class Probe $old_fields = dba::selectFirst('gcontact', $fieldnames, $condition); + // When the gcontact doesn't exist, the value "true" will trigger an insert. + // In difference to the public contacts we want to have every contact + // in the world in our global contacts. + if (!$old_fields) { + $old_fields = true; + + // These values have to be set only on insert + $fields['photo'] = $data['photo']; + $fields['created'] = DateTimeFormat::utcNow(); + } + dba::update('gcontact', $fields, $condition, $old_fields); $fields = ['name' => $data['name'], @@ -428,7 +439,10 @@ class Probe 'confirm' => $data['confirm'], 'poco' => $data['poco'], 'network' => $data['network'], - 'success_update' => DBM::date()]; + 'pubkey' => $data['pubkey'], + 'priority' => $data['priority'], + 'writable' => true, + 'rel' => CONTACT_IS_SHARING]; $fieldnames = []; @@ -442,14 +456,15 @@ class Probe $condition = ['nurl' => normalise_link($data["url"]), 'self' => false, 'uid' => 0]; + // "$old_fields" will return a "false" when the contact doesn't exist. + // This won't trigger an insert. This is intended, since we only need + // public contacts for everyone we store items from. + // We don't need to store every contact on the planet. $old_fields = dba::selectFirst('contact', $fieldnames, $condition); - // When the contact doesn't exist, the value "true" will trigger an insert - if (!$old_fields) { - $old_fields = true; - $fields['blocked'] = false; - $fields['pending'] = false; - } + $fields['name-date'] = DateTimeFormat::utcNow(); + $fields['uri-date'] = DateTimeFormat::utcNow(); + $fields['success_update'] = DateTimeFormat::utcNow(); dba::update('contact', $fields, $condition, $old_fields); }