]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Item/Display.php
Merge pull request #13266 from annando/quoted
[friendica.git] / src / Module / Item / Display.php
index df500f7ccb4aedd31a95b52b9c82c8cefc0cfe04..21046628feff566c4d58fd21ec553f46d7e44605 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2022, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -37,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;
@@ -196,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'])) {
@@ -206,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 {
@@ -215,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);
@@ -250,14 +247,8 @@ class Display extends BaseModule
 
                if (empty($item)) {
                        $this->page['aside'] = '';
-                       throw new HTTPException\NotFoundException($this->t('Unfortunately, the requested conversation isn\'t available to you.</p>
-<p>Possible reasons include:</p>
-<ul>
-       <li>The top-level post isn\'t visible.</li>
-       <li>The top-level post was deleted.</li>
-       <li>The node has blocked the top-level author or the author of the shared post.</li>
-       <li>You have ignored or blocked the top-level author or the author of the shared post.</li>
-</ul><p>'));
+                       $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'];
@@ -275,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->render([$item], Conversation::MODE_DISPLAY, $updateUid, false, 'commented', $itemUid);
 
                return $output;
        }