if (empty($data)) {
$data = Probe::uri($url, "", $uid);
- // Ensure that there is a gserver entry
- if (!empty($data['baseurl']) && ($data['network'] != Protocol::PHANTOM)) {
- $data['gsid'] = GServer::getID($data['baseurl']);
- }
}
// Take the default values when probing failed
return 0;
}
+ if (!empty($data['baseurl'])) {
+ $data['baseurl'] = GServer::cleanURL($data['baseurl']);
+ }
+
+ if (!empty($data['baseurl']) && empty($data['gsid'])) {
+ $data['gsid'] = GServer::getID($data['baseurl']);
+ }
+
if (!$contact_id && !empty($data['alias']) && ($data['alias'] != $url) && !$in_loop) {
$contact_id = self::getIdForURL($data["alias"], $uid, true, $default, true);
}
}
}
} else {
- $fields = ['url', 'nurl', 'addr', 'alias', 'name', 'nick', 'keywords', 'location', 'about', 'avatar-date', 'baseurl'];
+ $fields = ['url', 'nurl', 'addr', 'alias', 'name', 'nick', 'keywords', 'location', 'about', 'avatar-date', 'baseurl', 'gsid'];
$contact = DBA::selectFirst('contact', $fields, ['id' => $contact_id]);
// This condition should always be true
'updated' => DateTimeFormat::utcNow()
];
- $fields = ['addr', 'alias', 'name', 'nick', 'keywords', 'location', 'about', 'baseurl'];
+ $fields = ['addr', 'alias', 'name', 'nick', 'keywords', 'location', 'about', 'baseurl', 'gsid'];
foreach ($fields as $field) {
$updated[$field] = ($data[$field] ?? '') ?: $contact[$field];
// These fields aren't updated by this routine:
// 'xmpp', 'sensitive'
- $fields = ['uid', 'avatar', 'name', 'nick', 'location', 'keywords', 'about',
+ $fields = ['uid', 'avatar', 'name', 'nick', 'location', 'keywords', 'about', 'subscribe',
'unsearchable', 'url', 'addr', 'batch', 'notify', 'poll', 'request', 'confirm', 'poco',
'network', 'alias', 'baseurl', 'gsid', 'forum', 'prv', 'contact-type', 'pubkey'];
$contact = DBA::selectFirst('contact', $fields, ['id' => $id]);
}
}
- if (!empty($ret['baseurl']) && empty($contact['gsid'])) {
- $ret['gsid'] = GServer::getID($ret['baseurl']);
- }
-
$new_pubkey = $ret['pubkey'];
$update = false;
$ret = Probe::uri($url, $network, $uid, false);
}
- if (!empty($ret['baseurl'])) {
- $ret['gsid'] = GServer::getID($ret['baseurl']);
- }
-
if (($network != '') && ($ret['network'] != $network)) {
Logger::log('Expected network ' . $network . ' does not match actual network ' . $ret['network']);
return $result;