X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FContact.php;h=f35808f050c9843986cabf3be7f3f25d6bf0c1b7;hb=4f332e3b5202f39809a14aaf5df2bbca2417af11;hp=cfd25a1333a8267246c85d13c7e180c3bb205177;hpb=6749ace4b72ed6062a75a4ea01e809ee1804983c;p=friendica.git diff --git a/src/Model/Contact.php b/src/Model/Contact.php index cfd25a1333..f35808f050 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -570,7 +570,7 @@ class Contact { if (!parse_url($url, PHP_URL_SCHEME)) { $addr_parts = explode('@', $url); - return (count($addr_parts) == 2) && ($addr_parts[1] == DI::baseUrl()->getHostname()); + return (count($addr_parts) == 2) && ($addr_parts[1] == DI::baseUrl()->getHost()); } return Strings::compareLink(self::getBasepath($url, true), DI::baseUrl()); @@ -2204,20 +2204,38 @@ class Contact return; } + if (!Network::isValidHttpUrl($avatar)) { + Logger::warning('Invalid avatar', ['cid' => $cid, 'avatar' => $avatar]); + $avatar = ''; + } + $uid = $contact['uid']; // Only update the cached photo links of public contacts when they already are cached if (($uid == 0) && !$force && empty($contact['thumb']) && empty($contact['micro']) && !$create_cache) { if (($contact['avatar'] != $avatar) || empty($contact['blurhash'])) { $update_fields = ['avatar' => $avatar]; - $fetchResult = HTTPSignature::fetchRaw($avatar, 0, [HttpClientOptions::ACCEPT_CONTENT => [HttpClientAccept::IMAGE]]); - - $img_str = $fetchResult->getBody(); - if (!empty($img_str)) { - $image = new Image($img_str, Images::getMimeTypeByData($img_str)); - if ($image->isValid()) { - $update_fields['blurhash'] = $image->getBlurHash(); + if (!Network::isLocalLink($avatar)) { + try { + $fetchResult = HTTPSignature::fetchRaw($avatar, 0, [HttpClientOptions::ACCEPT_CONTENT => [HttpClientAccept::IMAGE]]); + + $img_str = $fetchResult->getBody(); + if (!empty($img_str)) { + $image = new Image($img_str, Images::getMimeTypeByData($img_str)); + if ($image->isValid()) { + $update_fields['blurhash'] = $image->getBlurHash(); + } else { + return; + } + } + } catch (\Exception $exception) { + Logger::notice('Error fetching avatar', ['avatar' => $avatar, 'exception' => $exception]); + return; } + } elseif (!empty($contact['blurhash'])) { + $update_fields['blurhash'] = null; + } else { + return; } self::update($update_fields, ['id' => $cid]); @@ -2968,7 +2986,7 @@ class Contact } // check if we already have a contact - $condition = ['uid' => $uid, 'nurl' => Strings::normaliseLink($ret['url'])]; + $condition = ['uid' => $uid, 'nurl' => Strings::normaliseLink($ret['url']), 'deleted' => false]; $contact = DBA::selectFirst('contact', ['id', 'rel', 'url', 'pending', 'hub-verify'], $condition); $protocol = self::getProtocol($ret['url'], $ret['network']);