From d83c43d9c9bc5cd12c9c8b3df6d249fad5b753a8 Mon Sep 17 00:00:00 2001
From: Jonas Kohl
Date: Sat, 12 Oct 2024 20:10:25 +0200
Subject: Remove spoilers from search results and profiles
---
src/application/views/view_search_results.php | 2 +-
src/application/views/view_user.php | 2 +-
src/index.php | 12 ++++++++++--
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/src/application/views/view_search_results.php b/src/application/views/view_search_results.php
index 93e36f7..660284d 100644
--- a/src/application/views/view_search_results.php
+++ b/src/application/views/view_search_results.php
@@ -16,7 +16,7 @@ use mystic\forum\utils\StringUtils;
- = htmlentities(html_entity_decode(StringUtils::truncate(strip_tags(renderPost($post->content)), 100))) ?>
+ = renderPostSummary($post->content) ?>
= __("posted by %author% on %post_date% in %topic%", [
"author" => '' . htmlentities($users[$post->authorId]?->displayName ?? __("unknown")) . '',
"post_date" => '' . htmlentities($post->postDate->format("c")) . '',
diff --git a/src/application/views/view_user.php b/src/application/views/view_user.php
index c95b557..e7c9753 100644
--- a/src/application/views/view_user.php
+++ b/src/application/views/view_user.php
@@ -56,7 +56,7 @@ $emailPending = $isOwnProfile && $user->pendingEmail !== null;
- = htmlentities(html_entity_decode(StringUtils::truncate(strip_tags(renderPost($post->content)), 100))) ?>
+ = renderPostSummary($post->content) ?>
= __("posted on %post_date% in %topic%", [
"post_date" => '' . htmlentities($post->postDate->format("c")) . '',
"topic" => '' .
diff --git a/src/index.php b/src/index.php
index 156563f..11192e9 100644
--- a/src/index.php
+++ b/src/index.php
@@ -9,10 +9,11 @@ use mystic\forum\orm\Topic;
use mystic\forum\orm\TopicLogMessage;
use mystic\forum\orm\User;
use mystic\forum\utils\RequestUtils;
+use mystic\forum\utils\StringUtils;
header_remove("X-Powered-By");
-const MYSTICBB_VERSION = "0.5.1";
+const MYSTICBB_VERSION = "0.5.2";
if (($_SERVER["HTTP_USER_AGENT"] ?? "") === "") {
http_response_code(403);
@@ -175,7 +176,7 @@ function expandTags(string $contents): string {
"s" => ["", "" ],
"^" => ["", "" ],
"_" => ["", "" ],
- "spoiler" => [ "" ],
+ "spoiler" => [ "" ],
][$m[1]] ?? $m[1];
if (preg_match(TAGS_REGEX, $inner))
$inner = expandTags($inner);
@@ -186,6 +187,13 @@ function expandTags(string $contents): string {
}, $contents);
}
+function renderPostSummary(string $contents): string {
+ $contents = renderPost($contents);
+ // remove spoiler contents so they don't appear in summaries
+ $contents = preg_replace('/(.*?)/s', '[ ' . __("Spoiler") . ' ]', $contents);
+ return htmlentities(html_entity_decode(StringUtils::truncate(strip_tags($contents), 100)));
+}
+
function renderPost(string $contents): string {
$contents = preg_replace('~\R~u', "\n", $contents);
$contents = trim($contents);
--
cgit v1.2.3