X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FContact.php;h=9d609786e96a1880ec0c63d0ab31f29fdc587be6;hb=6b93becf7b57f9766cb15f95377f27b3473ffeb8;hp=4898ec56783e57368fab52a946457eeacb5f9d1b;hpb=214a0524ddc069f71c896eef8ccf031033125932;p=friendica.git diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 4898ec5678..9d609786e9 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1,6 +1,6 @@ $id]); } + /** + * Fetch the first contact with the provided uri-id. + * + * @param integer $uri_id uri-id of the contact + * @param array $fields Array of selected fields, empty for all + * @return array|boolean Contact record if it exists, false otherwise + * @throws \Exception + */ + public static function getByUriId($uri_id, $fields = []) + { + return DBA::selectFirst('contact', $fields, ['uri-id' => $uri_id], ['order' => ['uid']]); + } + /** * Fetches a contact by a given url * @@ -674,7 +687,7 @@ class Contact { $fields = ['id', 'name', 'nick', 'location', 'about', 'keywords', 'avatar', 'prvkey', 'pubkey', 'xmpp', 'matrix', 'contact-type', 'forum', 'prv', 'avatar-date', 'url', 'nurl', 'unsearchable', - 'photo', 'thumb', 'micro', 'addr', 'request', 'notify', 'poll', 'confirm', 'poco', 'network']; + 'photo', 'thumb', 'micro', 'header', 'addr', 'request', 'notify', 'poll', 'confirm', 'poco', 'network']; $self = DBA::selectFirst('contact', $fields, ['uid' => $uid, 'self' => true]); if (!DBA::isResult($self)) { return false; @@ -740,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']; @@ -1228,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 @@ -1642,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 * @@ -2063,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); }