- // Fallback
- if (!$contact) {
- if ($parent_guid != '') {
- return "https://" . substr($addr, strpos($addr, "@") + 1) . "/posts/" . $parent_guid . "#" . $guid;
- } else {
- return "https://" . substr($addr, strpos($addr, "@") + 1) . "/posts/" . $guid;
+ if (empty($contact['baseurl'])) {
+ $contact['baseurl'] = 'https://' . substr($addr, strpos($addr, '@') + 1);
+ Logger::info('Create baseurl from address', ['baseurl' => $contact['baseurl'], 'url' => $contact['url']]);
+ }
+
+ $platform = '';
+ $gserver = DBA::selectFirst('gserver', ['platform'], ['nurl' => Strings::normaliseLink($contact['baseurl'])]);
+ if (!empty($gserver['platform'])) {
+ $platform = strtolower($gserver['platform']);
+ Logger::info('Detected platform', ['platform' => $platform, 'url' => $contact['url']]);
+ }
+
+ if (!in_array($platform, ['diaspora', 'friendica', 'hubzilla', 'socialhome'])) {
+ if (self::isHubzilla($contact['url'])) {
+ Logger::info('Detected unknown platform as Hubzilla', ['platform' => $platform, 'url' => $contact['url']]);
+ $platform = 'hubzilla';
+ } elseif ($contact['network'] == Protocol::DFRN) {
+ Logger::info('Detected unknown platform as Friendica', ['platform' => $platform, 'url' => $contact['url']]);
+ $platform = 'friendica';