X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FProfile.php;h=9987f86760090181156e359f3a058f1e563f3251;hb=f1d3f60499a325557be866fedd31b46093d477ae;hp=62df630dc8d5d5904cda6a0911b5238a19469b41;hpb=8f460644306bcad39a2bd901eb2b9df388716df9;p=friendica.git diff --git a/src/Model/Profile.php b/src/Model/Profile.php index 62df630dc8..9987f86760 100644 --- a/src/Model/Profile.php +++ b/src/Model/Profile.php @@ -35,12 +35,13 @@ use Friendica\Core\System; use Friendica\Core\Worker; use Friendica\Database\DBA; use Friendica\DI; +use Friendica\Network\HTTPException; use Friendica\Protocol\Activity; use Friendica\Protocol\Diaspora; use Friendica\Util\DateTimeFormat; use Friendica\Util\HTTPSignature; use Friendica\Util\Network; -use Friendica\Util\Proxy as ProxyUtils; +use Friendica\Util\Proxy; use Friendica\Util\Strings; class Profile @@ -204,11 +205,13 @@ class Profile * the theme is chosen before the _init() function of a theme is run, which will usually * load a lot of theme-specific content * - * @param App $a - * @param string $nickname string - * + * @param App $a + * @param string $nickname string + * @param bool $show_contacts * @return array Profile - * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * + * @throws HTTPException\NotFoundException + * @throws HTTPException\InternalServerErrorException * @throws \ImagickException */ public static function load(App $a, string $nickname, bool $show_contacts = true) @@ -219,6 +222,12 @@ class Profile return []; } + // System user, aborting + if ($profile['uid'] === 0) { + DI::logger()->warning('System user found in Profile::load', ['nickname' => $nickname, 'callstack' => System::callstack(20)]); + throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.')); + } + $a->setProfileOwner($profile['uid']); DI::page()['title'] = $profile['name'] . ' @ ' . DI::config()->get('config', 'sitename'); @@ -246,7 +255,7 @@ class Profile * By now, the contact block isn't shown, when a different profile is given * But: When this profile was on the same server, then we could display the contacts */ - DI::page()['aside'] .= self::sidebar($profile, $block, $show_contacts); + DI::page()['aside'] .= self::getVCardHtml($profile, $block, $show_contacts); return $profile; } @@ -272,7 +281,7 @@ class Profile * @hooks 'profile_sidebar' * array $arr */ - private static function sidebar(array $profile, bool $block, bool $show_contacts) + public static function getVCardHtml(array $profile, bool $block, bool $show_contacts) { $o = ''; $location = false; @@ -361,6 +370,7 @@ class Profile $homepage = !empty($profile['homepage']) ? DI::l10n()->t('Homepage:') : false; $about = !empty($profile['about']) ? DI::l10n()->t('About:') : false; $xmpp = !empty($profile['xmpp']) ? DI::l10n()->t('XMPP:') : false; + $matrix = !empty($profile['matrix']) ? DI::l10n()->t('Matrix:') : false; if ((!empty($profile['hidewall']) || $block) && !Session::isAuthenticated()) { $location = $homepage = $about = false; @@ -396,7 +406,7 @@ class Profile } if (!$block && $show_contacts) { - $contact_block = ContactBlock::getHTML($profile); + $contact_block = ContactBlock::getHTML($profile, local_user()); if (is_array($profile) && !$profile['hide-friends']) { $contact_count = DBA::count('contact', [ @@ -431,7 +441,7 @@ class Profile $p['address'] = BBCode::convertForUriId($profile['uri-id'] ?? 0, $p['address']); } - $p['photo'] = Contact::getAvatarUrlForId($cid, ProxyUtils::SIZE_SMALL); + $p['photo'] = Contact::getAvatarUrlForId($cid, Proxy::SIZE_SMALL); $p['url'] = Contact::magicLinkById($cid, $profile['url']); @@ -439,6 +449,7 @@ class Profile $o .= Renderer::replaceMacros($tpl, [ '$profile' => $p, '$xmpp' => $xmpp, + '$matrix' => $matrix, '$follow' => DI::l10n()->t('Follow'), '$follow_link' => $follow_link, '$unfollow' => DI::l10n()->t('Unfollow'), @@ -544,7 +555,7 @@ class Profile $rr['link'] = Contact::magicLinkById($rr['cid']); $rr['title'] = $rr['name']; - $rr['date'] = DI::l10n()->getDay(DateTimeFormat::convert($rr['start'], $a->timezone, 'UTC', $rr['adjust'] ? $bd_format : $bd_short)) . (($today) ? ' ' . DI::l10n()->t('[today]') : ''); + $rr['date'] = DI::l10n()->getDay(DateTimeFormat::local($rr['start'], $bd_short)) . (($today) ? ' ' . DI::l10n()->t('[today]') : ''); $rr['startime'] = null; $rr['today'] = $today; } @@ -603,8 +614,8 @@ class Profile $total++; } - $strt = DateTimeFormat::convert($rr['start'], $rr['adjust'] ? $a->timezone : 'UTC', 'UTC', 'Y-m-d'); - if ($strt === DateTimeFormat::timezoneNow($a->timezone, 'Y-m-d')) { + $strt = DateTimeFormat::local($rr['start'], 'Y-m-d'); + if ($strt === DateTimeFormat::localNow('Y-m-d')) { $istoday = true; } @@ -619,17 +630,17 @@ class Profile $description = DI::l10n()->t('[No description]'); } - $strt = DateTimeFormat::convert($rr['start'], $rr['adjust'] ? $a->timezone : 'UTC'); + $strt = DateTimeFormat::local($rr['start']); - if (substr($strt, 0, 10) < DateTimeFormat::timezoneNow($a->timezone, 'Y-m-d')) { + if (substr($strt, 0, 10) < DateTimeFormat::localNow('Y-m-d')) { continue; } - $today = ((substr($strt, 0, 10) === DateTimeFormat::timezoneNow($a->timezone, 'Y-m-d')) ? true : false); + $today = substr($strt, 0, 10) === DateTimeFormat::localNow('Y-m-d'); $rr['title'] = $title; $rr['description'] = $description; - $rr['date'] = DI::l10n()->getDay(DateTimeFormat::convert($rr['start'], $rr['adjust'] ? $a->timezone : 'UTC', 'UTC', $bd_format)) . (($today) ? ' ' . DI::l10n()->t('[today]') : ''); + $rr['date'] = DI::l10n()->getDay(DateTimeFormat::local($rr['start'], $bd_format)) . (($today) ? ' ' . DI::l10n()->t('[today]') : ''); $rr['startime'] = $strt; $rr['today'] = $today; @@ -731,7 +742,7 @@ class Profile $magic_path = $basepath . '/magic' . '?owa=1&dest=' . $dest . '&' . $addr_request; // We have to check if the remote server does understand /magic without invoking something - $serverret = DI::httpRequest()->get($basepath . '/magic'); + $serverret = DI::httpClient()->get($basepath . '/magic'); if ($serverret->isSuccess()) { Logger::log('Doing magic auth for visitor ' . $my_url . ' to ' . $magic_path, Logger::DEBUG); System::externalRedirect($magic_path);