- /**
- * Have a look at all contact tables for a given profile url.
- * This function works as a replacement for probing the contact.
- *
- * @param string $url Contact URL
- * @param integer $cid Contact ID
- *
- * @return array Contact array in the "probe" structure
- */
- private static function getProbeDataFromDatabase($url, $cid = null)
- {
- // The link could be provided as http although we stored it as https
- $ssl_url = str_replace('http://', 'https://', $url);
-
- $fields = ['id', 'uid', 'url', 'addr', 'alias', 'notify', 'poll', 'name', 'nick',
- 'photo', 'keywords', 'location', 'about', 'network',
- 'priority', 'batch', 'request', 'confirm', 'poco'];
-
- if (!empty($cid)) {
- $data = DBA::selectFirst('contact', $fields, ['id' => $cid]);
- if (DBA::isResult($data)) {
- return $data;
- }
- }
-
- $data = DBA::selectFirst('contact', $fields, ['nurl' => Strings::normaliseLink($url)]);
-
- if (!DBA::isResult($data)) {
- $condition = ['alias' => [$url, Strings::normaliseLink($url), $ssl_url]];
- $data = DBA::selectFirst('contact', $fields, $condition);
- }
-
- if (DBA::isResult($data)) {
- // For security reasons we don't fetch key data from our users
- $data["pubkey"] = '';
- return $data;
- }
-
- $fields = ['url', 'addr', 'alias', 'notify', 'name', 'nick',
- 'photo', 'keywords', 'location', 'about', 'network'];
- $condition = ['alias' => [$url, Strings::normaliseLink($url), $ssl_url]];
- $data = DBA::selectFirst('contact', $fields, $condition);
-
- if (DBA::isResult($data)) {
- $data["pubkey"] = '';
- $data["poll"] = '';
- $data["priority"] = 0;
- $data["batch"] = '';
- $data["request"] = '';
- $data["confirm"] = '';
- $data["poco"] = '';
- return $data;
- }
-
- $data = ActivityPub::probeProfile($url, false);
- if (!empty($data)) {
- return $data;
- }
-
- $fields = ['url', 'addr', 'alias', 'notify', 'poll', 'name', 'nick',
- 'photo', 'network', 'priority', 'batch', 'request', 'confirm'];
- $data = DBA::selectFirst('fcontact', $fields, ['url' => $url]);
-
- if (!DBA::isResult($data)) {
- $condition = ['alias' => [$url, Strings::normaliseLink($url), $ssl_url]];
- $data = DBA::selectFirst('contact', $fields, $condition);
- }
-
- if (DBA::isResult($data)) {
- $data["pubkey"] = '';
- $data["keywords"] = '';
- $data["location"] = '';
- $data["about"] = '';
- $data["poco"] = '';
- return $data;
- }
-
- return [];
- }
-