diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index f5b869979..65d037b83 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1404,8 +1404,14 @@ class BBCode extends BaseObject // Check for sized text // [size=50] --> font-size: 50px (with the unit). - $text = preg_replace("(\[size=(\d*?)\](.*?)\[\/size\])ism", "$2", $text); - $text = preg_replace("(\[size=(.*?)\](.*?)\[\/size\])ism", "$2", $text); + if ($simple_html != 3) { + $text = preg_replace("(\[size=(\d*?)\](.*?)\[\/size\])ism", "$2", $text); + $text = preg_replace("(\[size=(.*?)\](.*?)\[\/size\])ism", "$2", $text); + } else { + // Issue 2199: Diaspora doesn't interpret the construct above, nor the or element + $text = preg_replace("(\[size=(.*?)\](.*?)\[\/size\])ism", "$2", $text); + } + // Check for centered text $text = preg_replace("(\[center\](.*?)\[\/center\])ism", "
$1
", $text); diff --git a/tests/src/Content/Text/BBCodeTest.php b/tests/src/Content/Text/BBCodeTest.php index 899f32764..3d8beb393 100644 --- a/tests/src/Content/Text/BBCodeTest.php +++ b/tests/src/Content/Text/BBCodeTest.php @@ -176,6 +176,28 @@ class BBCodeTest extends MockedTest [*]http://example.com/ [/ul]', ], + 'bug-2199-named-size' => [ + 'expectedHtml' => 'Test text', + 'text' => '[size=xx-large]Test text[/size]', + 'simpleHtml' => 0, + ], + 'bug-2199-numeric-size' => [ + 'expectedHtml' => 'Test text', + 'text' => '[size=24]Test text[/size]', + 'simpleHtml' => 0, + ], + 'bug-2199-diaspora-no-named-size' => [ + 'expectedHtml' => 'Test text', + 'text' => '[size=xx-large]Test text[/size]', + // Triggers the diaspora compatible output + 'simpleHtml' => 3, + ], + 'bug-2199-diaspora-no-numeric-size' => [ + 'expectedHtml' => 'Test text', + 'text' => '[size=24]Test text[/size]', + // Triggers the diaspora compatible output + 'simpleHtml' => 3, + ], ]; }