From 9983233184b0c8c57defd63c9d4ce57535f60665 Mon Sep 17 00:00:00 2001 From: flashwave Date: Thu, 9 Mar 2023 16:18:52 +0000 Subject: [PATCH] Allow media linking without https: or http: prefix on forum. --- assets/js/misuzu/embed.js | 3 ++- src/Parsers/BBCode/Tags/AudioTag.php | 4 ++-- src/Parsers/BBCode/Tags/ImageTag.php | 4 ++-- src/Parsers/BBCode/Tags/VideoTag.php | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/assets/js/misuzu/embed.js b/assets/js/misuzu/embed.js index 94d7cb3..467137e 100644 --- a/assets/js/misuzu/embed.js +++ b/assets/js/misuzu/embed.js @@ -18,7 +18,8 @@ var MszEmbed = (function() { const cleanUrl = target.dataset.mszEmbedUrl.replace(/ /, '%20'); if(cleanUrl.indexOf('https://') !== 0 - && cleanUrl.indexOf('http://') !== 0) { + && cleanUrl.indexOf('http://') !== 0 + && cleanUrl.indexOf('//') !== 0) { target.textContent = target.dataset.mszEmbedUrl; continue; } diff --git a/src/Parsers/BBCode/Tags/AudioTag.php b/src/Parsers/BBCode/Tags/AudioTag.php index 8bd821a..552c000 100644 --- a/src/Parsers/BBCode/Tags/AudioTag.php +++ b/src/Parsers/BBCode/Tags/AudioTag.php @@ -6,11 +6,11 @@ use Misuzu\Parsers\BBCode\BBCodeTag; final class AudioTag extends BBCodeTag { public function parseText(string $text): string { return preg_replace_callback( - '#\[audio\]((?:https?:\/\/).+?)\[/audio\]#', + '#\[audio\]((?:https?:)?\/\/.+?)\[/audio\]#', function ($matches) { $url = parse_url($matches[1]); - if(empty($url['scheme']) || !in_array(mb_strtolower($url['scheme']), ['http', 'https'], true)) + if(!empty($url['scheme']) && !in_array(mb_strtolower($url['scheme']), ['http', 'https'], true)) return $matches[0]; return sprintf( diff --git a/src/Parsers/BBCode/Tags/ImageTag.php b/src/Parsers/BBCode/Tags/ImageTag.php index f779ee4..ac60172 100644 --- a/src/Parsers/BBCode/Tags/ImageTag.php +++ b/src/Parsers/BBCode/Tags/ImageTag.php @@ -5,10 +5,10 @@ use Misuzu\Parsers\BBCode\BBCodeTag; final class ImageTag extends BBCodeTag { public function parseText(string $text): string { - return preg_replace_callback("/\[img\]((?:https?:\/\/).+?)\[\/img\]/", function ($matches) { + return preg_replace_callback("/\[img\]((?:https?:)?\/\/.+?)\[\/img\]/", function ($matches) { $url = parse_url($matches[1]); - if(empty($url['scheme']) || !in_array(mb_strtolower($url['scheme']), ['http', 'https'], true)) + if(!empty($url['scheme']) && !in_array(mb_strtolower($url['scheme']), ['http', 'https'], true)) return $matches[0]; // return sprintf( diff --git a/src/Parsers/BBCode/Tags/VideoTag.php b/src/Parsers/BBCode/Tags/VideoTag.php index ea9e510..676241d 100644 --- a/src/Parsers/BBCode/Tags/VideoTag.php +++ b/src/Parsers/BBCode/Tags/VideoTag.php @@ -6,11 +6,11 @@ use Misuzu\Parsers\BBCode\BBCodeTag; final class VideoTag extends BBCodeTag { public function parseText(string $text): string { return preg_replace_callback( - '#\[video\]((?:https?:\/\/).+?)\[/video\]#', + '#\[video\]((?:https?:)?\/\/.+?)\[/video\]#', function ($matches) { $url = parse_url($matches[1]); - if(empty($url['scheme']) || !in_array(mb_strtolower($url['scheme']), ['http', 'https'], true)) + if(!empty($url['scheme']) && !in_array(mb_strtolower($url['scheme']), ['http', 'https'], true)) return $matches[0]; return sprintf(