page = $page; $this->conversation = $conversation; $this->localRelationship = $localRelationship; $this->userSession = $userSession; } protected function content(array $request = []): string { if (!$this->userSession->getLocalUserId()) { return Login::form($_SERVER['REQUEST_URI']); } // Backward compatibility: Ensure to use the public contact when the user contact is provided // Remove by version 2022.03 $pcid = ModelContact::getPublicContactId(intval($this->parameters['id']), $this->userSession->getLocalUserId()); if (!$pcid) { throw new NotFoundException($this->t('Contact not found.')); } $contact = ModelContact::getAccountById($pcid); if (empty($contact)) { throw new NotFoundException($this->t('Contact not found.')); } // Don't display contacts that are about to be deleted if ($contact['deleted'] || $contact['network'] == Protocol::PHANTOM) { throw new NotFoundException($this->t('Contact not found.')); } $localRelationship = $this->localRelationship->getForUserContact($this->userSession->getLocalUserId(), $contact['id']); if ($localRelationship->rel === ModelContact::SELF) { $this->baseUrl->redirect('profile/' . $contact['nick']); } $raw = isset($request['mode']) && ($request['mode'] == 'raw'); if (!$raw) { // Load necessary libraries for the status editor $this->page->registerFooterScript(Theme::getPathForFile('asset/typeahead.js/dist/typeahead.bundle.js')); $this->page->registerFooterScript(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput.js')); $this->page->registerStylesheet(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput.css')); $this->page->registerStylesheet(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput-typeahead.css')); $this->page['aside'] .= VCard::getHTML($contact, true); } Nav::setSelected('contacts'); $output = ''; if (!$contact['ap-posting-restricted'] && !$raw) { $options = [ 'lockstate' => ACL::getLockstateForUserId($this->userSession->getLocalUserId()) ? 'lock' : 'unlock', 'acl' => ACL::getFullSelectorHTML($this->page, $this->userSession->getLocalUserId(), true, []), 'bang' => '', 'content' => ($contact['contact-type'] == ModelContact::TYPE_COMMUNITY ? '!' : '@') . ($contact['addr'] ?: $contact['url']), ]; $output = $this->conversation->statusEditor($options); } Contact::setPageTitle($contact); if (!$raw) { $output .= Contact::getTabsHTML($contact, Contact::TAB_CONVERSATIONS); } $output .= ModelContact::getThreadsFromId($contact['id'], $this->userSession->getLocalUserId(), 0, 0, $request); return $output; } }