From 4e355c0f5eca132e83797addc26c2717cdf70078 Mon Sep 17 00:00:00 2001
From: Hypolite Petovan
Date: Sat, 4 Feb 2023 19:18:05 -0500
Subject: [PATCH] Create specific module to display HTML message when a
conversation isn't found in Module\Item\Display
---
src/App/BaseURL.php | 2 +-
src/Module/Item/Display.php | 11 ++---
src/Module/Special/DisplayNotFound.php | 49 ++++++++++++++++++++++
view/templates/special/displaynotfound.tpl | 5 +++
4 files changed, 58 insertions(+), 9 deletions(-)
create mode 100644 src/Module/Special/DisplayNotFound.php
create mode 100644 view/templates/special/displaynotfound.tpl
diff --git a/src/App/BaseURL.php b/src/App/BaseURL.php
index f02cb9ef99..564527a652 100644
--- a/src/App/BaseURL.php
+++ b/src/App/BaseURL.php
@@ -341,7 +341,7 @@ class BaseURL
public function redirect(string $toUrl = '', bool $ssl = false)
{
if (!empty(parse_url($toUrl, PHP_URL_SCHEME))) {
- throw new HTTPException\InternalServerErrorException("'$toUrl is not a relative path, please use System::externalRedirectTo");
+ throw new HTTPException\InternalServerErrorException("$toUrl is not a relative path, please use System::externalRedirectTo");
}
$redirectTo = $this->get($ssl) . '/' . ltrim($toUrl, '/');
diff --git a/src/Module/Item/Display.php b/src/Module/Item/Display.php
index a97c9db830..b2ed43c5b5 100644
--- a/src/Module/Item/Display.php
+++ b/src/Module/Item/Display.php
@@ -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;
@@ -246,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.
-Possible reasons include:
-
- - The top-level post isn\'t visible.
- - The top-level post was deleted.
- - The node has blocked the top-level author or the author of the shared post.
- - You have ignored or blocked the top-level author or the author of the shared post.
-
'));
+ $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'];
diff --git a/src/Module/Special/DisplayNotFound.php b/src/Module/Special/DisplayNotFound.php
new file mode 100644
index 0000000000..d66ececdd0
--- /dev/null
+++ b/src/Module/Special/DisplayNotFound.php
@@ -0,0 +1,49 @@
+.
+ *
+ */
+
+namespace Friendica\Module\Special;
+
+use Friendica\Core\Renderer;
+
+/**
+ * This is a special case of the HTTPException module where the message is intended to be HTML.
+ * This module should be called directly from the Display module and shouldn't be routed to.
+ */
+class DisplayNotFound extends \Friendica\BaseModule
+{
+ protected function content(array $request = []): string
+ {
+ $tpl = Renderer::getMarkupTemplate('special/displaynotfound.tpl');
+ return Renderer::replaceMacros($tpl, [
+ '$l10n' => [
+ 'title' => $this->t('Not Found'),
+ 'message' => $this->t("
Unfortunately, the requested conversation isn't available to you.
+Possible reasons include:
+
+ - The top-level post isn't visible.
+ - The top-level post was deleted.
+ - The node has blocked the top-level author or the author of the shared post.
+ - You have ignored or blocked the top-level author or the author of the shared post.
+
"),
+ ]
+ ]);
+ }
+}
diff --git a/view/templates/special/displaynotfound.tpl b/view/templates/special/displaynotfound.tpl
new file mode 100644
index 0000000000..48e7b5166d
--- /dev/null
+++ b/view/templates/special/displaynotfound.tpl
@@ -0,0 +1,5 @@
+
+
+
{{$title}}
+ {{$message nofilter}}
+