X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FItem%2FDisplay.php;h=b2ed43c5b51d707125818e8b68aadbada5c6958f;hb=39a5bfc0c0ea3777b63adb57a7d6cb4b40a70e86;hp=1b54081d39795e7d9f8ade42e192b0600c9ba0af;hpb=ba0b83b0b08498cb573c15f4a6b9661ef45957ed;p=friendica.git diff --git a/src/Module/Item/Display.php b/src/Module/Item/Display.php index 1b54081d39..b2ed43c5b5 100644 --- a/src/Module/Item/Display.php +++ b/src/Module/Item/Display.php @@ -1,6 +1,6 @@ . * - * See update_profile.php for documentation */ namespace Friendica\Module\Item; @@ -38,6 +37,7 @@ use Friendica\Model\Post; use Friendica\Model\Profile; use Friendica\Model\User; use Friendica\Module\Response; +use Friendica\Module\Special\DisplayNotFound; use Friendica\Navigation\Notifications\Repository\Notification; use Friendica\Navigation\Notifications\Repository\Notify; use Friendica\Protocol\ActivityPub; @@ -47,6 +47,9 @@ use Friendica\Network\HTTPException; use Friendica\Content\Widget; use Psr\Log\LoggerInterface; +/** + * Controller to display one item and its conversation + */ class Display extends BaseModule { /** @var App\Page */ @@ -134,7 +137,7 @@ class Display extends BaseModule } if ($item['gravity'] != Item::GRAVITY_PARENT) { - $parent = Post::selectFirstForUser($itemUid, $fields, [ + $parent = Post::selectFirst($fields, [ 'uid' => [0, $itemUid], 'uri-id' => $item['parent-uri-id'] ], ['order' => ['uid' => true]]); @@ -194,8 +197,7 @@ class Display extends BaseModule protected function getDisplayData(array $item, bool $update = false, int $updateUid = 0, bool $force = false): string { - $isRemoteContact = false; - $itemUid = $this->session->getLocalUserId(); + $itemUid = $this->session->getLocalUserId(); $parent = null; if (!$this->session->getLocalUserId() && !empty($item['parent-uri-id'])) { @@ -204,8 +206,7 @@ class Display extends BaseModule if (!empty($parent)) { $pageUid = $parent['uid']; - $isRemoteContact = $this->session->getRemoteContactID($pageUid); - if ($isRemoteContact) { + if ($this->session->getRemoteContactID($pageUid)) { $itemUid = $parent['uid']; } } else { @@ -213,13 +214,11 @@ class Display extends BaseModule } if (!empty($pageUid) && ($pageUid != $this->session->getLocalUserId())) { - $page_user = User::getById($pageUid, ['hidewall']); + $page_user = User::getById($pageUid, ['nickname', 'hidewall']); } - $is_owner = $this->session->getLocalUserId() && (in_array($pageUid, [$this->session->getLocalUserId(), 0])); - - if (!empty($page_user['hidewall']) && !$is_owner && !$isRemoteContact) { - throw new HTTPException\ForbiddenException($this->t('Access to this profile has been restricted.')); + if (!empty($page_user['hidewall']) && !$this->session->isAuthenticated()) { + $this->baseUrl->redirect('profile/' . $page_user['nickname'] . '/restricted'); } $sql_extra = Item::getPermissionsSQLByUserId($pageUid); @@ -247,7 +246,9 @@ class Display extends BaseModule $item = Post::selectFirstForUser($pageUid, $fields, $condition); if (empty($item)) { - throw new HTTPException\NotFoundException($this->t('The requested item doesn\'t exist or has been deleted.')); + $this->page['aside'] = ''; + $displayNotFound = new DisplayNotFound($this->l10n, $this->baseUrl, $this->args, $this->logger, $this->profiler, $this->response, $this->server, $this->parameters); + return $displayNotFound->content(); } $item['uri-id'] = $item['parent-uri-id']; @@ -265,12 +266,14 @@ class Display extends BaseModule $output = ''; + $is_owner = $this->session->getLocalUserId() && (in_array($pageUid, [$this->session->getLocalUserId(), 0])); + // We need the editor here to be able to reshare an item. if ($is_owner && !$update) { $output .= $this->conversation->statusEditor([], 0, true); } - $output .= $this->conversation->create([$item], 'display', $updateUid, false, 'commented', $itemUid); + $output .= $this->conversation->create([$item], Conversation::MODE_DISPLAY, $updateUid, false, 'commented', $itemUid); return $output; } @@ -320,8 +323,7 @@ class Display extends BaseModule $page = $this->page; if (Contact::exists([ - 'unsearchable' => true, - 'id' => [$item['contact-id'], $item['author-id'], $item['owner-id']] + 'unsearchable' => true, 'id' => [$item['contact-id'], $item['author-id'], $item['owner-id']] ])) { $page['htmlhead'] .= "\n"; }