From 08dafd6d7071df90f0a2d29039623470b95b055a Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 16 Jul 2023 07:26:20 +0000 Subject: [PATCH] Use plaintext for names and titles --- src/Content/Text/BBCode.php | 7 +++++-- src/Model/Event.php | 7 +++---- src/Model/Profile.php | 4 ++-- src/Module/Notifications/Introductions.php | 2 +- src/Navigation/Notifications/Entity/Notify.php | 4 ++-- src/Navigation/Notifications/Factory/FormattedNotify.php | 2 +- src/Navigation/Notifications/Factory/Notify.php | 2 +- 7 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 503adbd57c..875674544c 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -142,7 +142,7 @@ class BBCode break; case 'title': - $value = self::convertForUriId(0, html_entity_decode($value, ENT_QUOTES, 'UTF-8'), BBCode::EXTERNAL); + $value = self::toPlaintext(html_entity_decode($value, ENT_QUOTES, 'UTF-8')); $value = html_entity_decode($value, ENT_QUOTES, 'UTF-8'); $value = str_replace(['[', ']'], ['[', ']'], $value); $data['title'] = $value; @@ -226,7 +226,7 @@ class BBCode * @param bool $keep_urls Whether to keep URLs in the resulting plaintext * @return string */ - public static function toPlaintext(string $text, bool $keep_urls = true): string + public static function toPlaintext(string $text, bool $keep_urls = true, bool $strip_tags = false): string { DI::profiler()->startRecording('rendering'); // Remove pictures in advance to avoid unneeded proxy calls @@ -238,6 +238,9 @@ class BBCode $naked_text = HTML::toPlaintext(self::convert($text, false, BBCode::EXTERNAL, true), 0, !$keep_urls); + if ($strip_tags) { + $naked_text = strip_tags($naked_text); + } DI::profiler()->stopRecording(); return $naked_text; } diff --git a/src/Model/Event.php b/src/Model/Event.php index 6ac1e2774e..5aa2f2488f 100644 --- a/src/Model/Event.php +++ b/src/Model/Event.php @@ -928,7 +928,7 @@ class Event } // Format the event location. - $location = self::locationToArray($item['event-location'], $item['uri-id']); + $location = self::locationToArray($item['event-location']); // Construct the profile link (magic-auth). $author = [ @@ -979,7 +979,6 @@ class Event * handled as location name. * * @param string $s The string with the bbcode formatted location data. - * @param int $uri_id The uri-id of the related post * * @return array The array with the location data. * 'name' => The name of the location,
@@ -987,7 +986,7 @@ class Event * 'coordinates' => Latitude and longitude (e.g. '48.864716,2.349014').
* @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - private static function locationToArray(string $s, int $uri_id): array + private static function locationToArray(string $s): array { if ($s == '') { return []; @@ -1013,7 +1012,7 @@ class Event } } - $location['name'] = BBCode::convertForUriId($uri_id, $location['name']); + $location['name'] = BBCode::toPlaintext($location['name'], false, true); // Construct the map HTML. if (isset($location['address'])) { diff --git a/src/Model/Profile.php b/src/Model/Profile.php index e6c8e4822d..0a6881853d 100644 --- a/src/Model/Profile.php +++ b/src/Model/Profile.php @@ -640,13 +640,13 @@ class Profile $istoday = true; } - $title = strip_tags(html_entity_decode(BBCode::convertForUriId($rr['uri-id'], $rr['summary']), ENT_QUOTES, 'UTF-8')); + $title = BBCode::toPlaintext($rr['summary'], false, true); if (strlen($title) > 35) { $title = substr($title, 0, 32) . '... '; } - $description = substr(strip_tags(BBCode::convertForUriId($rr['uri-id'], $rr['desc'])), 0, 32) . '... '; + $description = BBCode::toPlaintext($rr['desc'], false, true) . '... '; if (!$description) { $description = DI::l10n()->t('[No description]'); } diff --git a/src/Module/Notifications/Introductions.php b/src/Module/Notifications/Introductions.php index 1c4a98b47b..48c0d4dfe5 100644 --- a/src/Module/Notifications/Introductions.php +++ b/src/Module/Notifications/Introductions.php @@ -147,7 +147,7 @@ class Introductions extends BaseNotifications $knowyou = ''; } - $convertedName = BBCode::convertForUriId($owner['uri-id'], $Introduction->getName()); + $convertedName = BBCode::toPlaintext($Introduction->getName(), false, true); $helptext = $this->t('Shall your connection be bidirectional or not?'); $helptext2 = $this->t('Accepting %s as a friend allows %s to subscribe to your posts, and you will also receive updates from them in your news feed.', $convertedName, $convertedName); diff --git a/src/Navigation/Notifications/Entity/Notify.php b/src/Navigation/Notifications/Entity/Notify.php index 56db3dc5c8..d45976c174 100644 --- a/src/Navigation/Notifications/Entity/Notify.php +++ b/src/Navigation/Notifications/Entity/Notify.php @@ -118,7 +118,7 @@ class Notify extends BaseEntity public function updateMsgFromPreamble($epreamble) { $this->msg = Renderer::replaceMacros($epreamble, ['$itemlink' => $this->link->__toString()]); - $this->msg_cache = self::formatMessage($this->name_cache, strip_tags(BBCode::convertForUriId(0, $this->msg, BBCode::EXTERNAL))); + $this->msg_cache = self::formatMessage($this->name_cache, BBCode::toPlaintext($this->msg, false, true)); } /** @@ -134,6 +134,6 @@ class Notify extends BaseEntity */ public static function formatMessage(string $name, string $message): string { - return str_replace('{0}', '' . strip_tags(BBCode::convertForUriId(0, $name, BBCode::EXTERNAL)) . '', htmlspecialchars($message)); + return str_replace('{0}', '' . BBCode::toPlaintext($name, false, true) . '', htmlspecialchars($message)); } } diff --git a/src/Navigation/Notifications/Factory/FormattedNotify.php b/src/Navigation/Notifications/Factory/FormattedNotify.php index 33abf63e48..75f6e76769 100644 --- a/src/Navigation/Notifications/Factory/FormattedNotify.php +++ b/src/Navigation/Notifications/Factory/FormattedNotify.php @@ -222,7 +222,7 @@ class FormattedNotify extends BaseFactory $this->baseUrl . '/notify/' . $Notify->id, Contact::getAvatarUrlForUrl($Notify->url, $Notify->uid, Proxy::SIZE_MICRO), $Notify->url, - strip_tags(BBCode::toPlaintext($Notify->msg ?? '')), + BBCode::toPlaintext($Notify->msg ?? '', false, true), DateTimeFormat::local($Notify->date->format(DateTimeFormat::MYSQL), 'r'), Temporal::getRelativeDate($Notify->date->format(DateTimeFormat::MYSQL)), $Notify->seen diff --git a/src/Navigation/Notifications/Factory/Notify.php b/src/Navigation/Notifications/Factory/Notify.php index c180d4121a..dd59b3323c 100644 --- a/src/Navigation/Notifications/Factory/Notify.php +++ b/src/Navigation/Notifications/Factory/Notify.php @@ -68,7 +68,7 @@ class Notify extends BaseFactory implements ICanCreateFromTableRow false, $params['verb'] ?? '', $params['otype'] ?? '', - substr(strip_tags(BBCode::convertForUriId($uri_id, $params['source_name'])), 0, 255), + substr(BBCode::toPlaintext($params['source_name'], false, true), 0, 255), null, null, $item_id,