X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FContact.php;h=9d609786e96a1880ec0c63d0ab31f29fdc587be6;hb=6b93becf7b57f9766cb15f95377f27b3473ffeb8;hp=8c946502b190fd56c9e4de34bd6300c5320828e3;hpb=29be22ee6a866381257e8b8d68ee7005da30911b;p=friendica.git diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 8c946502b1..9d609786e9 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1,6 +1,6 @@ $uid, 'self' => true]); if (!DBA::isResult($self)) { return false; @@ -753,6 +753,7 @@ class Contact } $fields['avatar'] = User::getAvatarUrl($user); + $fields['header'] = User::getBannerUrl($user); $fields['forum'] = $user['page-flags'] == User::PAGE_FLAGS_COMMUNITY; $fields['prv'] = $user['page-flags'] == User::PAGE_FLAGS_PRVGROUP; $fields['unsearchable'] = !$profile['net-publish']; @@ -1241,6 +1242,10 @@ class Contact Logger::info('Contact will be updated', ['url' => $url, 'uid' => $uid, 'update' => $update, 'cid' => $contact_id]); } + if ($data['network'] == Protocol::DIASPORA) { + FContact::updateFromProbeArray($data); + } + self::updateFromProbeArray($contact_id, $data); // Don't return a number for a deleted account @@ -1655,6 +1660,59 @@ class Contact return $contact; } + /** + * Fetch the default header for the given contact + * + * @param array $contact contact array + * @return string avatar URL + */ + public static function getDefaultHeader(array $contact): string + { + if (!empty($contact['header'])) { + return $contact['header']; + } + + if (!empty($contact['gsid'])) { + // Use default banners for certain platforms + $gserver = DBA::selectFirst('gserver', ['platform'], ['id' => $contact['gsid']]); + $platform = strtolower($gserver['platform'] ?? ''); + } else { + $platform = ''; + } + + switch ($platform) { + case 'friendica': + case 'friendika': + /** + * Picture credits + * @author Lostinlight + * @license CC0 https://creativecommons.org/share-your-work/public-domain/cc0/ + * @link https://gitlab.com/lostinlight/per_aspera_ad_astra/-/blob/master/friendica-404/friendica-promo-bubbles.jpg + */ + $header = DI::baseUrl() . '/images/friendica-banner.jpg'; + break; + case 'diaspora': + /** + * Picture credits + * @author John Liu + * @license CC BY 2.0 https://creativecommons.org/licenses/by/2.0/ + * @link https://www.flickr.com/photos/8047705@N02/5572197407 + */ + $header = DI::baseUrl() . '/images/diaspora-banner.jpg'; + break; + default: + /** + * Use a random picture. + * The service provides random pictures from Unsplash. + * @license https://unsplash.com/license + */ + $header = 'https://picsum.photos/seed/' . hash('ripemd128', $contact['url']) . '/960/300'; + break; + } + + return $header; + } + /** * Fetch the default avatar for the given contact and size * @@ -2076,6 +2134,11 @@ class Contact } $ret = Probe::uri($contact['url'], $network, $contact['uid']); + + if ($ret['network'] == Protocol::DIASPORA) { + FContact::updateFromProbeArray($ret); + } + return self::updateFromProbeArray($id, $ret); }