diff --git a/src/App/BaseURL.php b/src/App/BaseURL.php
index f02cb9ef9..564527a65 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 a97c9db83..b2ed43c5b 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 000000000..d66ececdd
--- /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/src/Module/Special/HTTPException.php b/src/Module/Special/HTTPException.php
index 9c9a29c55..8a8cc30eb 100644
--- a/src/Module/Special/HTTPException.php
+++ b/src/Module/Special/HTTPException.php
@@ -104,6 +104,7 @@ class HTTPException
$tpl = Renderer::getMarkupTemplate('http_status.tpl');
$content = Renderer::replaceMacros($tpl, $vars);
} catch (\Exception $e) {
+ $vars = array_map('htmlentities', $vars);
$content = "{$vars['$title']}
{$vars['$message']}
";
if ($this->isSiteAdmin) {
$content .= "{$vars['$thrown']}
";
diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po
index 89d780867..e45042cba 100644
--- a/view/lang/C/messages.po
+++ b/view/lang/C/messages.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 2023.03-dev\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-01-23 06:47+0000\n"
+"POT-Creation-Date: 2023-02-04 19:53-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -1925,39 +1925,39 @@ msgstr ""
msgid "last"
msgstr ""
-#: src/Content/Text/BBCode.php:1015 src/Content/Text/BBCode.php:1877
-#: src/Content/Text/BBCode.php:1878
+#: src/Content/Text/BBCode.php:949 src/Content/Text/BBCode.php:1811
+#: src/Content/Text/BBCode.php:1812
msgid "Image/photo"
msgstr ""
-#: src/Content/Text/BBCode.php:1232
+#: src/Content/Text/BBCode.php:1166
#, php-format
msgid ""
"%2$s %3$s"
msgstr ""
-#: src/Content/Text/BBCode.php:1257 src/Model/Item.php:3572
+#: src/Content/Text/BBCode.php:1191 src/Model/Item.php:3572
#: src/Model/Item.php:3578 src/Model/Item.php:3579
msgid "Link to source"
msgstr ""
-#: src/Content/Text/BBCode.php:1795 src/Content/Text/HTML.php:929
+#: src/Content/Text/BBCode.php:1729 src/Content/Text/HTML.php:929
msgid "Click to open/close"
msgstr ""
-#: src/Content/Text/BBCode.php:1826
+#: src/Content/Text/BBCode.php:1760
msgid "$1 wrote:"
msgstr ""
-#: src/Content/Text/BBCode.php:1882 src/Content/Text/BBCode.php:1883
+#: src/Content/Text/BBCode.php:1816 src/Content/Text/BBCode.php:1817
msgid "Encrypted content"
msgstr ""
-#: src/Content/Text/BBCode.php:2110
+#: src/Content/Text/BBCode.php:2044
msgid "Invalid source protocol"
msgstr ""
-#: src/Content/Text/BBCode.php:2125
+#: src/Content/Text/BBCode.php:2059
msgid "Invalid link protocol"
msgstr ""
@@ -2896,68 +2896,68 @@ msgstr ""
msgid "Forum"
msgstr ""
-#: src/Model/Contact.php:2929
+#: src/Model/Contact.php:2942
msgid "Disallowed profile URL."
msgstr ""
-#: src/Model/Contact.php:2934 src/Module/Friendica.php:83
+#: src/Model/Contact.php:2947 src/Module/Friendica.php:83
msgid "Blocked domain"
msgstr ""
-#: src/Model/Contact.php:2939
+#: src/Model/Contact.php:2952
msgid "Connect URL missing."
msgstr ""
-#: src/Model/Contact.php:2948
+#: src/Model/Contact.php:2961
msgid ""
"The contact could not be added. Please check the relevant network "
"credentials in your Settings -> Social Networks page."
msgstr ""
-#: src/Model/Contact.php:2966
+#: src/Model/Contact.php:2979
#, php-format
msgid "Expected network %s does not match actual network %s"
msgstr ""
-#: src/Model/Contact.php:2983
+#: src/Model/Contact.php:2996
msgid "The profile address specified does not provide adequate information."
msgstr ""
-#: src/Model/Contact.php:2985
+#: src/Model/Contact.php:2998
msgid "No compatible communication protocols or feeds were discovered."
msgstr ""
-#: src/Model/Contact.php:2988
+#: src/Model/Contact.php:3001
msgid "An author or name was not found."
msgstr ""
-#: src/Model/Contact.php:2991
+#: src/Model/Contact.php:3004
msgid "No browser URL could be matched to this address."
msgstr ""
-#: src/Model/Contact.php:2994
+#: src/Model/Contact.php:3007
msgid ""
"Unable to match @-style Identity Address with a known protocol or email "
"contact."
msgstr ""
-#: src/Model/Contact.php:2995
+#: src/Model/Contact.php:3008
msgid "Use mailto: in front of address to force email check."
msgstr ""
-#: src/Model/Contact.php:3001
+#: src/Model/Contact.php:3014
msgid ""
"The profile address specified belongs to a network which has been disabled "
"on this site."
msgstr ""
-#: src/Model/Contact.php:3006
+#: src/Model/Contact.php:3019
msgid ""
"Limited profile. This person will be unable to receive direct/personal "
"notifications from you."
msgstr ""
-#: src/Model/Contact.php:3071
+#: src/Model/Contact.php:3084
msgid "Unable to retrieve contact information."
msgstr ""
@@ -3188,7 +3188,7 @@ msgstr ""
msgid "[no subject]"
msgstr ""
-#: src/Model/Photo.php:1178 src/Module/Media/Photo/Upload.php:198
+#: src/Model/Photo.php:1184 src/Module/Media/Photo/Upload.php:198
msgid "Wall Photos"
msgstr ""
@@ -5373,26 +5373,26 @@ msgstr ""
msgid "User registrations waiting for confirmation"
msgstr ""
-#: src/Module/BaseApi.php:255 src/Module/BaseApi.php:271
-#: src/Module/BaseApi.php:287
+#: src/Module/BaseApi.php:266 src/Module/BaseApi.php:282
+#: src/Module/BaseApi.php:298
msgid "Too Many Requests"
msgstr ""
-#: src/Module/BaseApi.php:256
+#: src/Module/BaseApi.php:267
#, php-format
msgid "Daily posting limit of %d post reached. The post was rejected."
msgid_plural "Daily posting limit of %d posts reached. The post was rejected."
msgstr[0] ""
msgstr[1] ""
-#: src/Module/BaseApi.php:272
+#: src/Module/BaseApi.php:283
#, php-format
msgid "Weekly posting limit of %d post reached. The post was rejected."
msgid_plural "Weekly posting limit of %d posts reached. The post was rejected."
msgstr[0] ""
msgstr[1] ""
-#: src/Module/BaseApi.php:288
+#: src/Module/BaseApi.php:299
#, php-format
msgid "Monthly posting limit of %d post reached. The post was rejected."
msgid_plural ""
@@ -5875,7 +5875,7 @@ msgstr[1] ""
#: src/Module/Contact/Follow.php:69 src/Module/Contact/Redir.php:62
#: src/Module/Contact/Redir.php:222 src/Module/Conversation/Community.php:194
#: src/Module/Debug/ItemBody.php:38 src/Module/Diaspora/Receive.php:57
-#: src/Module/Item/Display.php:95 src/Module/Item/Feed.php:59
+#: src/Module/Item/Display.php:96 src/Module/Item/Feed.php:59
#: src/Module/Item/Follow.php:41 src/Module/Item/Ignore.php:41
#: src/Module/Item/Pin.php:41 src/Module/Item/Pin.php:56
#: src/Module/Item/Star.php:42 src/Module/Update/Display.php:37
@@ -7158,24 +7158,10 @@ msgid ""
"Theme Customization settings."
msgstr ""
-#: src/Module/Item/Display.php:135 src/Module/Update/Display.php:55
+#: src/Module/Item/Display.php:136 src/Module/Update/Display.php:55
msgid "The requested item doesn't exist or has been deleted."
msgstr ""
-#: src/Module/Item/Display.php:249
-msgid ""
-"Unfortunately, the requested conversation isn't available to you.\n"
-"Possible reasons include:
\n"
-"\n"
-"\t- The top-level post isn't visible.
\n"
-"\t- The top-level post was deleted.
\n"
-"\t- The node has blocked the top-level author or the author of the shared "
-"post.
\n"
-"\t- You have ignored or blocked the top-level author or the author of the "
-"shared post.
\n"
-"
"
-msgstr ""
-
#: src/Module/Item/Feed.php:86
msgid "The feed for this item is unavailable."
msgstr ""
@@ -8068,7 +8054,7 @@ msgstr ""
msgid "Unsupported or missing response type"
msgstr ""
-#: src/Module/OAuth/Authorize.php:59 src/Module/OAuth/Token.php:76
+#: src/Module/OAuth/Authorize.php:59 src/Module/OAuth/Token.php:77
msgid "Incomplete request data"
msgstr ""
@@ -8079,11 +8065,11 @@ msgid ""
"close this window: %s"
msgstr ""
-#: src/Module/OAuth/Token.php:81
+#: src/Module/OAuth/Token.php:82
msgid "Invalid data or unknown client"
msgstr ""
-#: src/Module/OAuth/Token.php:100
+#: src/Module/OAuth/Token.php:104
msgid "Unsupported or missing grant type"
msgstr ""
@@ -8264,20 +8250,20 @@ msgstr ""
#: src/Module/Profile/Conversations.php:106
#: src/Module/Profile/Conversations.php:109 src/Module/Profile/Profile.php:351
-#: src/Module/Profile/Profile.php:354 src/Protocol/Feed.php:1025
-#: src/Protocol/OStatus.php:1045
+#: src/Module/Profile/Profile.php:354 src/Protocol/Feed.php:1026
+#: src/Protocol/OStatus.php:1007
#, php-format
msgid "%s's timeline"
msgstr ""
#: src/Module/Profile/Conversations.php:107 src/Module/Profile/Profile.php:352
-#: src/Protocol/Feed.php:1029 src/Protocol/OStatus.php:1050
+#: src/Protocol/Feed.php:1030 src/Protocol/OStatus.php:1012
#, php-format
msgid "%s's posts"
msgstr ""
#: src/Module/Profile/Conversations.php:108 src/Module/Profile/Profile.php:353
-#: src/Protocol/Feed.php:1032 src/Protocol/OStatus.php:1054
+#: src/Protocol/Feed.php:1033 src/Protocol/OStatus.php:1016
#, php-format
msgid "%s's comments"
msgstr ""
@@ -10359,6 +10345,24 @@ msgid ""
"e.g. Mastodon."
msgstr ""
+#: src/Module/Special/DisplayNotFound.php:37
+msgid "Not Found"
+msgstr ""
+
+#: src/Module/Special/DisplayNotFound.php:38
+msgid ""
+"
Unfortunately, the requested conversation isn't available to you.
\n"
+"Possible reasons include:
\n"
+"\n"
+"\t- The top-level post isn't visible.
\n"
+"\t- The top-level post was deleted.
\n"
+"\t- The node has blocked the top-level author or the author of the shared "
+"post.
\n"
+"\t- You have ignored or blocked the top-level author or the author of the "
+"shared post.
\n"
+"
"
+msgstr ""
+
#: src/Module/Special/HTTPException.php:78
msgid "Stack trace:"
msgstr ""
@@ -11332,21 +11336,21 @@ msgstr ""
msgid "(no subject)"
msgstr ""
-#: src/Protocol/OStatus.php:1470
+#: src/Protocol/OStatus.php:1388
#, php-format
msgid "%s is now following %s."
msgstr ""
-#: src/Protocol/OStatus.php:1471
+#: src/Protocol/OStatus.php:1389
msgid "following"
msgstr ""
-#: src/Protocol/OStatus.php:1474
+#: src/Protocol/OStatus.php:1392
#, php-format
msgid "%s stopped following %s."
msgstr ""
-#: src/Protocol/OStatus.php:1475
+#: src/Protocol/OStatus.php:1393
msgid "stopped following"
msgstr ""
diff --git a/view/templates/exception.tpl b/view/templates/exception.tpl
index 3499a5cb1..cdeb6d96f 100644
--- a/view/templates/exception.tpl
+++ b/view/templates/exception.tpl
@@ -1,7 +1,7 @@
{{$title}}
-
{{$message nofilter}}
+
{{$message}}
{{if $thrown}}
{{$thrown}}
{{$stack_trace}}
diff --git a/view/templates/http_status.tpl b/view/templates/http_status.tpl
index 874bf9669..bd6ecb3a5 100644
--- a/view/templates/http_status.tpl
+++ b/view/templates/http_status.tpl
@@ -4,7 +4,7 @@
{{$title}}
- {{$message nofilter}}
+ {{$message}}
{{if $trace}}
{{$trace nofilter}}
{{/if}}
diff --git a/view/templates/special/displaynotfound.tpl b/view/templates/special/displaynotfound.tpl
new file mode 100644
index 000000000..48e7b5166
--- /dev/null
+++ b/view/templates/special/displaynotfound.tpl
@@ -0,0 +1,5 @@
+
+
+
{{$title}}
+ {{$message nofilter}}
+