X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FContent%2FContactSelector.php;h=9035d37e73c01d3c838e35c30bbc662e1507acc0;hb=72a3ab6382551811f22391b7e82e7398628b235b;hp=ec7bcab95cc53adb6b323778dee314a063d3abc4;hpb=0c73531da1d93f218a47c798ae5db1d00144a7be;p=friendica.git diff --git a/src/Content/ContactSelector.php b/src/Content/ContactSelector.php index ec7bcab95c..9035d37e73 100644 --- a/src/Content/ContactSelector.php +++ b/src/Content/ContactSelector.php @@ -1,6 +1,6 @@ $server_url]); + + self::$serverdata[$server_url] = $gserver; + return $gserver; + } + /** * @param string $profile Profile URL * @return string Server URL @@ -68,6 +86,10 @@ class ContactSelector */ private static function getServerURLForProfile($profile) { + if (!empty(self::$server_url[$profile])) { + return self::$server_url[$profile]; + } + $server_url = ''; // Fetch the server url from the contact table @@ -83,6 +105,8 @@ class ContactSelector $server_url = Strings::normaliseLink(Network::unparseURL($parts)); } + self::$server_url[$profile] = $server_url; + return $server_url; } @@ -93,7 +117,7 @@ class ContactSelector * @return string * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function networkToName($network, $profile = '', $protocol = '') + public static function networkToName($network, $profile = '', $protocol = '', $gsid = 0) { $nets = [ Protocol::DFRN => DI::l10n()->t('DFRN'), @@ -123,24 +147,26 @@ class ContactSelector $networkname = str_replace($search, $replace, $network); if ((in_array($network, Protocol::FEDERATED)) && ($profile != "")) { - $server_url = self::getServerURLForProfile($profile); - - // Now query the GServer for the platform name - $gserver = DBA::selectFirst('gserver', ['platform', 'network'], ['nurl' => $server_url]); + if (!empty($gsid) && !empty(self::$serverdata[$gsid])) { + $gserver = self::$serverdata[$gsid]; + } elseif (!empty($gsid)) { + $gserver = DBA::selectFirst('gserver', ['platform', 'network'], ['id' => $gsid]); + self::$serverdata[$gsid] = $gserver; + } else { + $gserver = self::getServerForProfile($profile); + } - if (DBA::isResult($gserver)) { - if (!empty($gserver['platform'])) { - $platform = $gserver['platform']; - } elseif (!empty($gserver['network']) && ($gserver['network'] != Protocol::ACTIVITYPUB)) { - $platform = self::networkToName($gserver['network']); - } + if (!empty($gserver['platform'])) { + $platform = $gserver['platform']; + } elseif (!empty($gserver['network']) && ($gserver['network'] != Protocol::ACTIVITYPUB)) { + $platform = self::networkToName($gserver['network']); + } - if (!empty($platform)) { - $networkname = $platform; + if (!empty($platform)) { + $networkname = $platform; - if ($network == Protocol::ACTIVITYPUB) { - $networkname .= ' (AP)'; - } + if ($network == Protocol::ACTIVITYPUB) { + $networkname .= ' (AP)'; } } } @@ -192,12 +218,8 @@ class ContactSelector $network_icon = str_replace($search, $replace, $network); if ((in_array($network, Protocol::FEDERATED)) && ($profile != "")) { - $server_url = self::getServerURLForProfile($profile); - - // Now query the GServer for the platform name - $gserver = DBA::selectFirst('gserver', ['platform'], ['nurl' => $server_url]); - - if (DBA::isResult($gserver) && !empty($gserver['platform'])) { + $gserver = self::getServerForProfile($profile); + if (!empty($gserver['platform'])) { $network_icon = $platform_icons[strtolower($gserver['platform'])] ?? $network_icon; } }