diff options
author | Marc Alexander <admin@m-a-styles.de> | 2019-11-28 21:11:48 +0100 |
---|---|---|
committer | Marc Alexander <admin@m-a-styles.de> | 2019-11-28 21:11:48 +0100 |
commit | ac6676a1445bacf0df51c9ebaf91fa69f4535ba0 (patch) | |
tree | c26b0b652bf21c2cc7ed761e8c2225177804712c /phpBB/phpbb | |
parent | 3986273fdb16844ff67f61ef7fb294f0d11d2e18 (diff) | |
parent | 03e15166c72be6862fb1d3ca3a178196df80f971 (diff) | |
download | forums-ac6676a1445bacf0df51c9ebaf91fa69f4535ba0.tar forums-ac6676a1445bacf0df51c9ebaf91fa69f4535ba0.tar.gz forums-ac6676a1445bacf0df51c9ebaf91fa69f4535ba0.tar.bz2 forums-ac6676a1445bacf0df51c9ebaf91fa69f4535ba0.tar.xz forums-ac6676a1445bacf0df51c9ebaf91fa69f4535ba0.zip |
Merge branch '3.2.x' into 3.3.x
Diffstat (limited to 'phpBB/phpbb')
-rw-r--r-- | phpBB/phpbb/textformatter/s9e/bbcode_merger.php | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/phpBB/phpbb/textformatter/s9e/bbcode_merger.php b/phpBB/phpbb/textformatter/s9e/bbcode_merger.php index af644192d8..d1bedb0b72 100644 --- a/phpBB/phpbb/textformatter/s9e/bbcode_merger.php +++ b/phpBB/phpbb/textformatter/s9e/bbcode_merger.php @@ -50,7 +50,7 @@ class bbcode_merger $with = $this->create_bbcode($with); // Select the appropriate strategy for merging this BBCode - if ($this->is_content_bbcode($without, $with)) + if (!$this->is_optional_bbcode($without, $with) && $this->is_content_bbcode($without, $with)) { $merged = $this->merge_content_bbcode($without, $with); } @@ -107,12 +107,12 @@ class bbcode_merger /** * Test whether the two definitions form a "content"-style BBCode * - * Such BBCodes include the [URL] BBCode, which uses its text content as + * Such BBCodes include the [url] BBCode, which uses its text content as * attribute if none is provided * * @param array $without BBCode definition without an attribute * @param array $with BBCode definition with an attribute - * @return array Merged definition + * @return bool */ protected function is_content_bbcode(array $without, array $with) { @@ -123,6 +123,22 @@ class bbcode_merger } /** + * Test whether the two definitions form BBCode with an optional attribute + * + * @param array $without BBCode definition without an attribute + * @param array $with BBCode definition with an attribute + * @return bool + */ + protected function is_optional_bbcode(array $without, array $with) + { + // Remove the default attribute from the definition + $with['usage'] = preg_replace('(=[^\\]]++)', '', $with['usage']); + + // Test whether both definitions are the same, regardless of case + return strcasecmp($without['usage'], $with['usage']) === 0; + } + + /** * Merge the two BBCode definitions of a "content"-style BBCode * * @param array $without BBCode definition without an attribute @@ -131,7 +147,7 @@ class bbcode_merger */ protected function merge_content_bbcode(array $without, array $with) { - // Convert [X={X}] into [X={X;useContent}] + // Convert [x={X}] into [x={X;useContent}] $usage = preg_replace('(\\})', ';useContent}', $with['usage'], 1); // Use the template from the definition that uses an attribute @@ -143,7 +159,7 @@ class bbcode_merger /** * Merge the two BBCode definitions of a BBCode with an optional argument * - * Such BBCodes include the [QUOTE] BBCode, which takes an optional argument + * Such BBCodes include the [quote] BBCode, which takes an optional argument * but otherwise does not behave differently * * @param array $without BBCode definition without an attribute |