From 70e57b54c3bb6693c87e3760c7178b6bf8fb21ea Mon Sep 17 00:00:00 2001 From: Hannes Heute Date: Tue, 20 May 2025 22:16:18 +0200 Subject: [PATCH 1/5] Support YouTube links without www. --- src/Content/Text/BBCode.php | 6 +++--- src/Content/Text/Markdown.php | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 55a46b88aa..38beb89d80 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1210,9 +1210,9 @@ class BBCode */ private static function normalizeVideoLinks(string $text): string { - $text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/youtube\]/ism", '[youtube]$1[/youtube]', $text); - $text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/embed\/(.*?)\[\/youtube\]/ism", '[youtube]$1[/youtube]', $text); - $text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/shorts\/(.*?)\[\/youtube\]/ism", '[youtube]$1[/youtube]', $text); + $text = preg_replace("/\[youtube\]https?:\/\/(www.)?youtube.com\/watch\?v\=(.*?)\[\/youtube\]/ism", '[youtube]$2[/youtube]', $text); + $text = preg_replace("/\[youtube\]https?:\/\/(www.)?youtube.com\/embed\/(.*?)\[\/youtube\]/ism", '[youtube]$2[/youtube]', $text); + $text = preg_replace("/\[youtube\]https?:\/\/(www.)?youtube.com\/shorts\/(.*?)\[\/youtube\]/ism", '[youtube]$2[/youtube]', $text); $text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.*?)\[\/youtube\]/ism", '[youtube]$1[/youtube]', $text); $text = preg_replace("/\[vimeo\]https?:\/\/player.vimeo.com\/video\/([0-9]+)(.*?)\[\/vimeo\]/ism", '[vimeo]$1[/vimeo]', $text); diff --git a/src/Content/Text/Markdown.php b/src/Content/Text/Markdown.php index 8aa9453041..1dd0151718 100644 --- a/src/Content/Text/Markdown.php +++ b/src/Content/Text/Markdown.php @@ -122,8 +122,9 @@ class Markdown //$s = preg_replace("/([^\]\=]|^)(https?\:\/\/)(vimeo|youtu|www\.youtube|soundcloud)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url=$2$3$4]$2$3$4[/url]',$s); $s = BBCode::pregReplaceInTag('/\[url\=?(.*?)\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/url\]/ism', '[youtube]$2[/youtube]', 'url', $s); - $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/www.youtube.com\/watch\?v\=(.*?)\].*?\[\/url\]/ism', '[youtube]$1[/youtube]', 'url', $s); - $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/www.youtube.com\/shorts\/(.*?)\].*?\[\/url\]/ism', '[youtube]$1[/youtube]', 'url', $s); + $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/(www.)?youtube.com\/watch\?v\=(.*?)\].*?\[\/url\]/ism', '[youtube]$2[/youtube]', 'url', $s); + $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/(www.)?youtube.com\/shorts\/(.*?)\].*?\[\/url\]/ism', '[youtube]$2[/youtube]', 'url', $s); + $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/(www.)?youtube.com\/embed\/(.*?)\].*?\[\/url\]/ism', '[youtube]$2[/youtube]', 'url', $s); $s = BBCode::pregReplaceInTag('/\[url\=?(.*?)\]https?:\/\/vimeo.com\/([0-9]+)(.*?)\[\/url\]/ism', '[vimeo]$2[/vimeo]', 'url', $s); $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/vimeo.com\/([0-9]+)\](.*?)\[\/url\]/ism', '[vimeo]$1[/vimeo]', 'url', $s); From 978dda0b4eb3f193155d8f816024d9e74197fc1f Mon Sep 17 00:00:00 2001 From: Hannes Heute Date: Tue, 20 May 2025 22:54:00 +0200 Subject: [PATCH 2/5] same order (watch, embed, shorts) --- src/Content/Text/Markdown.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Content/Text/Markdown.php b/src/Content/Text/Markdown.php index 1dd0151718..c3d069a5f6 100644 --- a/src/Content/Text/Markdown.php +++ b/src/Content/Text/Markdown.php @@ -123,8 +123,8 @@ class Markdown //$s = preg_replace("/([^\]\=]|^)(https?\:\/\/)(vimeo|youtu|www\.youtube|soundcloud)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url=$2$3$4]$2$3$4[/url]',$s); $s = BBCode::pregReplaceInTag('/\[url\=?(.*?)\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/url\]/ism', '[youtube]$2[/youtube]', 'url', $s); $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/(www.)?youtube.com\/watch\?v\=(.*?)\].*?\[\/url\]/ism', '[youtube]$2[/youtube]', 'url', $s); - $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/(www.)?youtube.com\/shorts\/(.*?)\].*?\[\/url\]/ism', '[youtube]$2[/youtube]', 'url', $s); $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/(www.)?youtube.com\/embed\/(.*?)\].*?\[\/url\]/ism', '[youtube]$2[/youtube]', 'url', $s); + $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/(www.)?youtube.com\/shorts\/(.*?)\].*?\[\/url\]/ism', '[youtube]$2[/youtube]', 'url', $s); $s = BBCode::pregReplaceInTag('/\[url\=?(.*?)\]https?:\/\/vimeo.com\/([0-9]+)(.*?)\[\/url\]/ism', '[vimeo]$2[/vimeo]', 'url', $s); $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/vimeo.com\/([0-9]+)\](.*?)\[\/url\]/ism', '[vimeo]$1[/vimeo]', 'url', $s); From 423ab06010e540eab30ede9e0e7ded701d94ae37 Mon Sep 17 00:00:00 2001 From: Hannes Heute Date: Thu, 22 May 2025 01:53:48 +0200 Subject: [PATCH 3/5] escape the dots --- src/Content/Text/BBCode.php | 12 ++++++------ src/Content/Text/Markdown.php | 13 +++++++------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 38beb89d80..9c999e789a 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1210,13 +1210,13 @@ class BBCode */ private static function normalizeVideoLinks(string $text): string { - $text = preg_replace("/\[youtube\]https?:\/\/(www.)?youtube.com\/watch\?v\=(.*?)\[\/youtube\]/ism", '[youtube]$2[/youtube]', $text); - $text = preg_replace("/\[youtube\]https?:\/\/(www.)?youtube.com\/embed\/(.*?)\[\/youtube\]/ism", '[youtube]$2[/youtube]', $text); - $text = preg_replace("/\[youtube\]https?:\/\/(www.)?youtube.com\/shorts\/(.*?)\[\/youtube\]/ism", '[youtube]$2[/youtube]', $text); - $text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.*?)\[\/youtube\]/ism", '[youtube]$1[/youtube]', $text); + $text = preg_replace("/\[youtube\]https?:\/\/(www\.)?youtube\.com\/watch\?v\=(.*?)\[\/youtube\]/ism", '[youtube]$2[/youtube]', $text); + $text = preg_replace("/\[youtube\]https?:\/\/(www\.)?youtube\.com\/embed\/(.*?)\[\/youtube\]/ism", '[youtube]$2[/youtube]', $text); + $text = preg_replace("/\[youtube\]https?:\/\/(www\.)?youtube\.com\/shorts\/(.*?)\[\/youtube\]/ism", '[youtube]$2[/youtube]', $text); + $text = preg_replace("/\[youtube\]https?:\/\/youtu\.be\/(.*?)\[\/youtube\]/ism", '[youtube]$1[/youtube]', $text); - $text = preg_replace("/\[vimeo\]https?:\/\/player.vimeo.com\/video\/([0-9]+)(.*?)\[\/vimeo\]/ism", '[vimeo]$1[/vimeo]', $text); - $text = preg_replace("/\[vimeo\]https?:\/\/vimeo.com\/([0-9]+)(.*?)\[\/vimeo\]/ism", '[vimeo]$1[/vimeo]', $text); + $text = preg_replace("/\[vimeo\]https?:\/\/player\.vimeo\.com\/video\/([0-9]+)(.*?)\[\/vimeo\]/ism", '[vimeo]$1[/vimeo]', $text); + $text = preg_replace("/\[vimeo\]https?:\/\/vimeo\.com\/([0-9]+)(.*?)\[\/vimeo\]/ism", '[vimeo]$1[/vimeo]', $text); return $text; } diff --git a/src/Content/Text/Markdown.php b/src/Content/Text/Markdown.php index c3d069a5f6..17911eae39 100644 --- a/src/Content/Text/Markdown.php +++ b/src/Content/Text/Markdown.php @@ -121,12 +121,13 @@ class Markdown $s = str_replace('♲', html_entity_decode('♲', ENT_QUOTES, 'UTF-8'), $s); //$s = preg_replace("/([^\]\=]|^)(https?\:\/\/)(vimeo|youtu|www\.youtube|soundcloud)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url=$2$3$4]$2$3$4[/url]',$s); - $s = BBCode::pregReplaceInTag('/\[url\=?(.*?)\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/url\]/ism', '[youtube]$2[/youtube]', 'url', $s); - $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/(www.)?youtube.com\/watch\?v\=(.*?)\].*?\[\/url\]/ism', '[youtube]$2[/youtube]', 'url', $s); - $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/(www.)?youtube.com\/embed\/(.*?)\].*?\[\/url\]/ism', '[youtube]$2[/youtube]', 'url', $s); - $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/(www.)?youtube.com\/shorts\/(.*?)\].*?\[\/url\]/ism', '[youtube]$2[/youtube]', 'url', $s); - $s = BBCode::pregReplaceInTag('/\[url\=?(.*?)\]https?:\/\/vimeo.com\/([0-9]+)(.*?)\[\/url\]/ism', '[vimeo]$2[/vimeo]', 'url', $s); - $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/vimeo.com\/([0-9]+)\](.*?)\[\/url\]/ism', '[vimeo]$1[/vimeo]', 'url', $s); + $s = BBCode::pregReplaceInTag('/\[url\=?(.*?)\]https?:\/\/www\.youtube\.com\/watch\?v\=(.*?)\[\/url\]/ism', '[youtube]$2[/youtube]', 'url', $s); + $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/(www\.)?youtube\.com\/watch\?v\=(.*?)\].*?\[\/url\]/ism', '[youtube]$2[/youtube]', 'url', $s); + $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/(www\.)?youtube\.com\/embed\/(.*?)\].*?\[\/url\]/ism', '[youtube]$2[/youtube]', 'url', $s); + $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/(www\.)?youtube\.com\/shorts\/(.*?)\].*?\[\/url\]/ism', '[youtube]$2[/youtube]', 'url', $s); + $s = BBCode::pregReplaceInTag('/\[url\=?(.*?)\]https?:\/\/vimeo\.com\/([0-9]+)(.*?)\[\/url\]/ism', '[vimeo]$2[/vimeo]', 'url', $s); + $s = BBCode::pregReplaceInTag('/\[url\=?(.*?)\]https?:\/\/player\.vimeo\.com\/video\/([0-9]+)(.*?)\[\/url\]/ism', '[vimeo]$2[/vimeo]', 'url', $s); + $s = BBCode::pregReplaceInTag('/\[url\=https?:\/\/vimeo\.com\/([0-9]+)\](.*?)\[\/url\]/ism', '[vimeo]$1[/vimeo]', 'url', $s); // remove duplicate adjacent code tags $s = preg_replace('/(\[code\])+(.*?)(\[\/code\])+/ism', '[code]$2[/code]', $s); From 69ee39b72566c4e2733337da82a596918a7ab28d Mon Sep 17 00:00:00 2001 From: Philipp Date: Sun, 25 May 2025 19:17:17 +0200 Subject: [PATCH 4/5] Add tests --- tests/src/Content/Text/BBCodeTest.php | 90 +++++++++++++++++++------ tests/src/Content/Text/MarkdownTest.php | 38 +++++++++++ 2 files changed, 109 insertions(+), 19 deletions(-) diff --git a/tests/src/Content/Text/BBCodeTest.php b/tests/src/Content/Text/BBCodeTest.php index c7c7220cd9..df4f5c6bfc 100644 --- a/tests/src/Content/Text/BBCodeTest.php +++ b/tests/src/Content/Text/BBCodeTest.php @@ -73,51 +73,51 @@ class BBCodeTest extends FixtureTestCase ], 'no-protocol' => [ 'data' => 'example.com/path', - 'assertHTML' => false + 'assertHTML' => false, ], 'wrong-protocol' => [ 'data' => 'ftp://example.com', - 'assertHTML' => false + 'assertHTML' => false, ], 'wrong-domain-without-path' => [ 'data' => 'http://example', - 'assertHTML' => false + 'assertHTML' => false, ], 'wrong-domain-with-path' => [ 'data' => 'http://example/path', - 'assertHTML' => false + 'assertHTML' => false, ], 'bug-6857-domain-start' => [ 'data' => "http://\nexample.com", - 'assertHTML' => false + 'assertHTML' => false, ], 'bug-6857-domain-end' => [ 'data' => "http://example\n.com", - 'assertHTML' => false + 'assertHTML' => false, ], 'bug-6857-tld' => [ 'data' => "http://example.\ncom", - 'assertHTML' => false + 'assertHTML' => false, ], 'bug-6857-end' => [ 'data' => "http://example.com\ntest", - 'assertHTML' => false + 'assertHTML' => false, ], 'bug-6901' => [ 'data' => "http://example.com
    ", - 'assertHTML' => false + 'assertHTML' => false, ], 'bug-7150' => [ 'data' => html_entity_decode('http://example.com ', ENT_QUOTES, 'UTF-8'), - 'assertHTML' => false + 'assertHTML' => false, ], 'bug-7271-query-string-brackets' => [ 'data' => 'https://example.com/search?q=square+brackets+[url]', - 'assertHTML' => true + 'assertHTML' => true, ], 'bug-7271-path-brackets' => [ 'data' => 'http://example.com/path/to/file[3].html', - 'assertHTML' => true + 'assertHTML' => true, ], ]; } @@ -215,19 +215,19 @@ class BBCodeTest extends FixtureTestCase ], 'bug-9611-purify-xss-nobb' => [ 'expectedHTML' => 'dare to move your mouse here', - 'text' => '[nobb]dare to move your mouse here[/nobb]' + 'text' => '[nobb]dare to move your mouse here[/nobb]', ], 'bug-9611-purify-xss-noparse' => [ 'expectedHTML' => 'dare to move your mouse here', - 'text' => '[noparse]dare to move your mouse here[/noparse]' + 'text' => '[noparse]dare to move your mouse here[/noparse]', ], 'bug-9611-purify-xss-attributes' => [ 'expectedHTML' => 'dare to move your mouse here', - 'text' => '[color="onmouseover=alert(0) style="]dare to move your mouse here[/color]' + 'text' => '[color="onmouseover=alert(0) style="]dare to move your mouse here[/color]', ], 'bug-9611-purify-attributes-correct' => [ 'expectedHTML' => 'dare to move your mouse here', - 'text' => '[color=FFFFFF]dare to move your mouse here[/color]' + 'text' => '[color=FFFFFF]dare to move your mouse here[/color]', ], 'bug-9639-span-classes' => [ 'expectedHTML' => 'Test', @@ -308,11 +308,11 @@ Karl Marx - Die ursprüngliche Akkumulation ], 'bug-12701-quotes' => [ 'expected' => '[![abc"fgh](https://domain.tld/photo/86912721086415cdc8e0a03226831581-1.png)](https://domain.tld/photos/user/image/86912721086415cdc8e0a03226831581)', - 'text' => '[url=https://domain.tld/photos/user/image/86912721086415cdc8e0a03226831581][img=https://domain.tld/photo/86912721086415cdc8e0a03226831581-1.png]abc"fgh[/img][/url]' + 'text' => '[url=https://domain.tld/photos/user/image/86912721086415cdc8e0a03226831581][img=https://domain.tld/photo/86912721086415cdc8e0a03226831581-1.png]abc"fgh[/img][/url]', ], 'bug-12701-no-quotes' => [ 'expected' => '[![abcfgh](https://domain.tld/photo/86912721086415cdc8e0a03226831581-1.png "abcfgh")](https://domain.tld/photos/user/image/86912721086415cdc8e0a03226831581)', - 'text' => '[url=https://domain.tld/photos/user/image/86912721086415cdc8e0a03226831581][img=https://domain.tld/photo/86912721086415cdc8e0a03226831581-1.png]abcfgh[/img][/url]' + 'text' => '[url=https://domain.tld/photos/user/image/86912721086415cdc8e0a03226831581][img=https://domain.tld/photo/86912721086415cdc8e0a03226831581-1.png]abcfgh[/img][/url]', ], ]; } @@ -345,7 +345,7 @@ Karl Marx - Die ursprüngliche Akkumulation 'bug-10692-start-line' => [ '#[url=https://friendica.local/search?tag=L160]L160[/url]', '#L160', - ] + ], ]; } @@ -362,6 +362,58 @@ Karl Marx - Die ursprüngliche Akkumulation self::assertEquals($expected, $actual); } + public function dataExpandVideoLinks(): array + { + return [ + /** @see https://github.com/friendica/friendica/pull/14940 */ + 'task-14940-youtube-watch-with-www' => [ + 'expectedBBCode' => '[url=https://www.youtube.com/watch?v=hfwbmTzBFT0]https://www.youtube.com/watch?v=hfwbmTzBFT0[/url]', + 'text' => '[youtube]https://www.youtube.com/watch?v=hfwbmTzBFT0[/youtube]', + ], + 'task-14940-youtube-watch-without-www' => [ + 'expectedBBCode' => '[url=https://www.youtube.com/watch?v=hfwbmTzBFT0]https://www.youtube.com/watch?v=hfwbmTzBFT0[/url]', + 'text' => '[youtube]https://youtube.com/watch?v=hfwbmTzBFT0[/youtube]', + ], + 'task-14940-youtube-shorts-with-www' => [ + 'expectedBBCode' => '[url=https://www.youtube.com/watch?v=hfwbmTzBFT0]https://www.youtube.com/watch?v=hfwbmTzBFT0[/url]', + 'text' => '[youtube]https://www.youtube.com/shorts/hfwbmTzBFT0[/youtube]', + ], + 'task-14940-youtube-shorts-without-www' => [ + 'expectedBBCode' => '[url=https://www.youtube.com/watch?v=hfwbmTzBFT0]https://www.youtube.com/watch?v=hfwbmTzBFT0[/url]', + 'text' => '[youtube]https://youtube.com/shorts/hfwbmTzBFT0[/youtube]', + ], + 'task-14940-youtube-embed-with-www' => [ + 'expectedBBCode' => '[url=https://www.youtube.com/watch?v=hfwbmTzBFT0]https://www.youtube.com/watch?v=hfwbmTzBFT0[/url]', + 'text' => '[youtube]https://www.youtube.com/embed/hfwbmTzBFT0[/youtube]', + ], + 'task-14940-youtube-embed-without-www' => [ + 'expectedBBCode' => '[url=https://www.youtube.com/watch?v=hfwbmTzBFT0]https://www.youtube.com/watch?v=hfwbmTzBFT0[/url]', + 'text' => '[youtube]https://youtube.com/embed/hfwbmTzBFT0[/youtube]', + ], + 'task-14940-vimeo' => [ + 'expectedBBCode' => '[url=https://vimeo.com/2345345]https://vimeo.com/2345345[/url]', + 'text' => '[vimeo]https://vimeo.com/2345345[/vimeo]', + ], + 'task-14940-player-vimeo' => [ + 'expectedBBCode' => '[url=https://vimeo.com/2345345]https://vimeo.com/2345345[/url]', + 'text' => '[vimeo]https://player.vimeo.com/video/2345345[/vimeo]', + ], + ]; + } + + /** + * @dataProvider dataExpandVideoLinks + * + * @param string $expected Expected BBCode output + * @param string $text Input text + */ + public function testExpandVideoLinks(string $expected, string $text) + { + $actual = BBCode::expandVideoLinks($text); + + self::assertEquals($expected, $actual); + } + public function dataGetAbstract(): array { return [ diff --git a/tests/src/Content/Text/MarkdownTest.php b/tests/src/Content/Text/MarkdownTest.php index 6882bec7f1..2174b7670c 100644 --- a/tests/src/Content/Text/MarkdownTest.php +++ b/tests/src/Content/Text/MarkdownTest.php @@ -53,6 +53,44 @@ class MarkdownTest extends FixtureTestCase 'expectedBBCode' => 'with the and tag', 'markdown' => 'with the <sup> and </sup> tag', ], + /** @see https://github.com/friendica/friendica/pull/14940 */ + 'task-14940-youtube-watch-with-www' => [ + 'expectedBBCode' => '[youtube]hfwbmTzBFT0[/youtube]', + 'markdown' => '[url=https://www.youtube.com/watch?v=hfwbmTzBFT0]https://www.youtube.com/watch?v=hfwbmTzBFT0[/url]', + ], + 'task-14940-youtube-watch-without-www' => [ + 'expectedBBCode' => '[youtube]hfwbmTzBFT0[/youtube]', + 'markdown' => '[url=https://youtube.com/watch?v=hfwbmTzBFT0]https://youtube.com/watch?v=hfwbmTzBFT0[/url]', + ], + 'task-14940-youtube-shorts-with-www' => [ + 'expectedBBCode' => '[youtube]hfwbmTzBFT0[/youtube]', + 'markdown' => '[url=https://www.youtube.com/shorts/hfwbmTzBFT0]https://www.youtube.com/shorts/hfwbmTzBFT0[/url]', + ], + 'task-14940-youtube-shorts-without-www' => [ + 'expectedBBCode' => '[youtube]hfwbmTzBFT0[/youtube]', + 'markdown' => '[url=https://youtube.com/shorts/hfwbmTzBFT0]https://youtube.com/shorts/hfwbmTzBFT0[/url]', + ], + 'task-14940-youtube-embed-with-www' => [ + 'expectedBBCode' => '[youtube]hfwbmTzBFT0[/youtube]', + 'markdown' => '[url=https://www.youtube.com/embed/hfwbmTzBFT0]https://www.youtube.com/embed/hfwbmTzBFT0[/url]', + ], + 'task-14940-youtube-embed-without-www' => [ + 'expectedBBCode' => '[youtube]hfwbmTzBFT0[/youtube]', + 'markdown' => '[url=https://youtube.com/embed/hfwbmTzBFT0]https://youtube.com/embed/hfwbmTzBFT0[/url]', + ], + // @todo - should we really ignore the URL content in favor of parsing the link of the body? + 'task-14940-vimeo-custom-url' => [ + 'expectedBBCode' => '[vimeo]2345345[/vimeo]', + 'markdown' => '[url=https://no.thing]https://vimeo.com/2345345[/url]', + ], + 'task-14940-vimeo-custom-text' => [ + 'expectedBBCode' => '[vimeo]2345345[/vimeo]', + 'markdown' => '[url=https://vimeo.com/2345345]CustomText[/url]', + ], + 'task-14940-player-vimeo' => [ + 'expectedBBCode' => '[vimeo]2345345[/vimeo]', + 'markdown' => '[url=https://player.vimeo.com/video/2345345]https://player.vimeo.com/video/2345345[/url]', + ], ]; } From 5c6b7d9293fe295def5f6c99ca4c7551bf70796e Mon Sep 17 00:00:00 2001 From: Philipp Date: Sun, 25 May 2025 22:22:53 +0200 Subject: [PATCH 5/5] Fix PHP-CS --- tests/src/Content/Text/BBCodeTest.php | 16 ++++++++-------- tests/src/Content/Text/MarkdownTest.php | 20 ++++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/tests/src/Content/Text/BBCodeTest.php b/tests/src/Content/Text/BBCodeTest.php index df4f5c6bfc..26c381c429 100644 --- a/tests/src/Content/Text/BBCodeTest.php +++ b/tests/src/Content/Text/BBCodeTest.php @@ -368,35 +368,35 @@ Karl Marx - Die ursprüngliche Akkumulation /** @see https://github.com/friendica/friendica/pull/14940 */ 'task-14940-youtube-watch-with-www' => [ 'expectedBBCode' => '[url=https://www.youtube.com/watch?v=hfwbmTzBFT0]https://www.youtube.com/watch?v=hfwbmTzBFT0[/url]', - 'text' => '[youtube]https://www.youtube.com/watch?v=hfwbmTzBFT0[/youtube]', + 'text' => '[youtube]https://www.youtube.com/watch?v=hfwbmTzBFT0[/youtube]', ], 'task-14940-youtube-watch-without-www' => [ 'expectedBBCode' => '[url=https://www.youtube.com/watch?v=hfwbmTzBFT0]https://www.youtube.com/watch?v=hfwbmTzBFT0[/url]', - 'text' => '[youtube]https://youtube.com/watch?v=hfwbmTzBFT0[/youtube]', + 'text' => '[youtube]https://youtube.com/watch?v=hfwbmTzBFT0[/youtube]', ], 'task-14940-youtube-shorts-with-www' => [ 'expectedBBCode' => '[url=https://www.youtube.com/watch?v=hfwbmTzBFT0]https://www.youtube.com/watch?v=hfwbmTzBFT0[/url]', - 'text' => '[youtube]https://www.youtube.com/shorts/hfwbmTzBFT0[/youtube]', + 'text' => '[youtube]https://www.youtube.com/shorts/hfwbmTzBFT0[/youtube]', ], 'task-14940-youtube-shorts-without-www' => [ 'expectedBBCode' => '[url=https://www.youtube.com/watch?v=hfwbmTzBFT0]https://www.youtube.com/watch?v=hfwbmTzBFT0[/url]', - 'text' => '[youtube]https://youtube.com/shorts/hfwbmTzBFT0[/youtube]', + 'text' => '[youtube]https://youtube.com/shorts/hfwbmTzBFT0[/youtube]', ], 'task-14940-youtube-embed-with-www' => [ 'expectedBBCode' => '[url=https://www.youtube.com/watch?v=hfwbmTzBFT0]https://www.youtube.com/watch?v=hfwbmTzBFT0[/url]', - 'text' => '[youtube]https://www.youtube.com/embed/hfwbmTzBFT0[/youtube]', + 'text' => '[youtube]https://www.youtube.com/embed/hfwbmTzBFT0[/youtube]', ], 'task-14940-youtube-embed-without-www' => [ 'expectedBBCode' => '[url=https://www.youtube.com/watch?v=hfwbmTzBFT0]https://www.youtube.com/watch?v=hfwbmTzBFT0[/url]', - 'text' => '[youtube]https://youtube.com/embed/hfwbmTzBFT0[/youtube]', + 'text' => '[youtube]https://youtube.com/embed/hfwbmTzBFT0[/youtube]', ], 'task-14940-vimeo' => [ 'expectedBBCode' => '[url=https://vimeo.com/2345345]https://vimeo.com/2345345[/url]', - 'text' => '[vimeo]https://vimeo.com/2345345[/vimeo]', + 'text' => '[vimeo]https://vimeo.com/2345345[/vimeo]', ], 'task-14940-player-vimeo' => [ 'expectedBBCode' => '[url=https://vimeo.com/2345345]https://vimeo.com/2345345[/url]', - 'text' => '[vimeo]https://player.vimeo.com/video/2345345[/vimeo]', + 'text' => '[vimeo]https://player.vimeo.com/video/2345345[/vimeo]', ], ]; } diff --git a/tests/src/Content/Text/MarkdownTest.php b/tests/src/Content/Text/MarkdownTest.php index 2174b7670c..c372180df5 100644 --- a/tests/src/Content/Text/MarkdownTest.php +++ b/tests/src/Content/Text/MarkdownTest.php @@ -51,45 +51,45 @@ class MarkdownTest extends FixtureTestCase return [ 'bug-8358-double-decode' => [ 'expectedBBCode' => 'with the and tag', - 'markdown' => 'with the <sup> and </sup> tag', + 'markdown' => 'with the <sup> and </sup> tag', ], /** @see https://github.com/friendica/friendica/pull/14940 */ 'task-14940-youtube-watch-with-www' => [ 'expectedBBCode' => '[youtube]hfwbmTzBFT0[/youtube]', - 'markdown' => '[url=https://www.youtube.com/watch?v=hfwbmTzBFT0]https://www.youtube.com/watch?v=hfwbmTzBFT0[/url]', + 'markdown' => '[url=https://www.youtube.com/watch?v=hfwbmTzBFT0]https://www.youtube.com/watch?v=hfwbmTzBFT0[/url]', ], 'task-14940-youtube-watch-without-www' => [ 'expectedBBCode' => '[youtube]hfwbmTzBFT0[/youtube]', - 'markdown' => '[url=https://youtube.com/watch?v=hfwbmTzBFT0]https://youtube.com/watch?v=hfwbmTzBFT0[/url]', + 'markdown' => '[url=https://youtube.com/watch?v=hfwbmTzBFT0]https://youtube.com/watch?v=hfwbmTzBFT0[/url]', ], 'task-14940-youtube-shorts-with-www' => [ 'expectedBBCode' => '[youtube]hfwbmTzBFT0[/youtube]', - 'markdown' => '[url=https://www.youtube.com/shorts/hfwbmTzBFT0]https://www.youtube.com/shorts/hfwbmTzBFT0[/url]', + 'markdown' => '[url=https://www.youtube.com/shorts/hfwbmTzBFT0]https://www.youtube.com/shorts/hfwbmTzBFT0[/url]', ], 'task-14940-youtube-shorts-without-www' => [ 'expectedBBCode' => '[youtube]hfwbmTzBFT0[/youtube]', - 'markdown' => '[url=https://youtube.com/shorts/hfwbmTzBFT0]https://youtube.com/shorts/hfwbmTzBFT0[/url]', + 'markdown' => '[url=https://youtube.com/shorts/hfwbmTzBFT0]https://youtube.com/shorts/hfwbmTzBFT0[/url]', ], 'task-14940-youtube-embed-with-www' => [ 'expectedBBCode' => '[youtube]hfwbmTzBFT0[/youtube]', - 'markdown' => '[url=https://www.youtube.com/embed/hfwbmTzBFT0]https://www.youtube.com/embed/hfwbmTzBFT0[/url]', + 'markdown' => '[url=https://www.youtube.com/embed/hfwbmTzBFT0]https://www.youtube.com/embed/hfwbmTzBFT0[/url]', ], 'task-14940-youtube-embed-without-www' => [ 'expectedBBCode' => '[youtube]hfwbmTzBFT0[/youtube]', - 'markdown' => '[url=https://youtube.com/embed/hfwbmTzBFT0]https://youtube.com/embed/hfwbmTzBFT0[/url]', + 'markdown' => '[url=https://youtube.com/embed/hfwbmTzBFT0]https://youtube.com/embed/hfwbmTzBFT0[/url]', ], // @todo - should we really ignore the URL content in favor of parsing the link of the body? 'task-14940-vimeo-custom-url' => [ 'expectedBBCode' => '[vimeo]2345345[/vimeo]', - 'markdown' => '[url=https://no.thing]https://vimeo.com/2345345[/url]', + 'markdown' => '[url=https://no.thing]https://vimeo.com/2345345[/url]', ], 'task-14940-vimeo-custom-text' => [ 'expectedBBCode' => '[vimeo]2345345[/vimeo]', - 'markdown' => '[url=https://vimeo.com/2345345]CustomText[/url]', + 'markdown' => '[url=https://vimeo.com/2345345]CustomText[/url]', ], 'task-14940-player-vimeo' => [ 'expectedBBCode' => '[vimeo]2345345[/vimeo]', - 'markdown' => '[url=https://player.vimeo.com/video/2345345]https://player.vimeo.com/video/2345345[/url]', + 'markdown' => '[url=https://player.vimeo.com/video/2345345]https://player.vimeo.com/video/2345345[/url]', ], ]; }