. * */ namespace Friendica\Module\Contact; use Friendica\App; use Friendica\BaseModule; use Friendica\Contact\LocalRelationship\Repository\LocalRelationship; use Friendica\Content\Nav; use Friendica\Content\Widget; use Friendica\Core\L10n; use Friendica\Core\Protocol; use Friendica\Database\DBA; use Friendica\Model; use Friendica\Module\Contact; use Friendica\Module\Response; use Friendica\Module\Security\Login; use Friendica\Network\HTTPException\NotFoundException; use Friendica\Util\Profiler; use Psr\Log\LoggerInterface; /** * Show a contact posts and comments */ class Posts extends BaseModule { /** * @var LocalRelationship */ private $localRelationship; /** * @var App\Page */ private $page; public function __construct(L10n $l10n, LocalRelationship $localRelationship, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, App\Page $page, array $server, array $parameters = []) { parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters); $this->localRelationship = $localRelationship; $this->page = $page; } protected function content(array $request = []): string { if (!local_user()) { 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 $data = Model\Contact::getPublicAndUserContactID(intval($this->parameters['id']), local_user()); if (empty($data)) { throw new NotFoundException($this->t('Contact not found.')); } $contact = Model\Contact::getById($data['public']); if (!DBA::isResult($contact)) { throw new NotFoundException($this->t('Contact not found.')); } // Don't display contacts that are about to be deleted if (DBA::isResult($contact) && (!empty($contact['deleted']) || !empty($contact['network']) && $contact['network'] == Protocol::PHANTOM)) { throw new NotFoundException($this->t('Contact not found.')); } $localRelationship = $this->localRelationship->getForUserContact(local_user(), $contact['id']); if ($localRelationship->rel === Model\Contact::SELF) { $this->baseUrl->redirect('profile/' . $contact['nick']); } $this->page['aside'] .= Widget\VCard::getHTML($contact); Nav::setSelected('contact'); $o = Contact::getTabsHTML($contact, Contact::TAB_POSTS); $o .= Model\Contact::getPostsFromId($contact['id']); return $o; } }