aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Alexander <admin@m-a-styles.de>2018-01-24 23:35:49 +0100
committerMarc Alexander <admin@m-a-styles.de>2018-01-24 23:35:49 +0100
commita74658091b19a8d8100b241ce6ac710e472918e8 (patch)
treeecb7f5e9d2ef10bc2a5074cf404a67590631b0ef
parent3a8305e19066fe03083104a0825300202cbd1ada (diff)
parent532afbf83a509b25c5042f5bb374657417ca3e5d (diff)
downloadforums-a74658091b19a8d8100b241ce6ac710e472918e8.tar
forums-a74658091b19a8d8100b241ce6ac710e472918e8.tar.gz
forums-a74658091b19a8d8100b241ce6ac710e472918e8.tar.bz2
forums-a74658091b19a8d8100b241ce6ac710e472918e8.tar.xz
forums-a74658091b19a8d8100b241ce6ac710e472918e8.zip
Merge pull request #5102 from JoshyPHP/ticket/15527
[ticket/15527] Skip malformed BBCodes during merge_duplicate_bbcodes migration
-rw-r--r--phpBB/phpbb/db/migration/data/v32x/merge_duplicate_bbcodes.php29
-rw-r--r--phpBB/phpbb/textformatter/s9e/bbcode_merger.php3
2 files changed, 22 insertions, 10 deletions
diff --git a/phpBB/phpbb/db/migration/data/v32x/merge_duplicate_bbcodes.php b/phpBB/phpbb/db/migration/data/v32x/merge_duplicate_bbcodes.php
index b1ee241f44..71ee19e3dd 100644
--- a/phpBB/phpbb/db/migration/data/v32x/merge_duplicate_bbcodes.php
+++ b/phpBB/phpbb/db/migration/data/v32x/merge_duplicate_bbcodes.php
@@ -46,16 +46,25 @@ class merge_duplicate_bbcodes extends \phpbb\db\migration\container_aware_migrat
protected function merge_bbcodes(array $without, array $with)
{
- $merged = $this->container->get('text_formatter.s9e.bbcode_merger')->merge_bbcodes(
- [
- 'usage' => $without['bbcode_match'],
- 'template' => $without['bbcode_tpl']
- ],
- [
- 'usage' => $with['bbcode_match'],
- 'template' => $with['bbcode_tpl']
- ]
- );
+ try
+ {
+ $merged = $this->container->get('text_formatter.s9e.bbcode_merger')->merge_bbcodes(
+ [
+ 'usage' => $without['bbcode_match'],
+ 'template' => $without['bbcode_tpl']
+ ],
+ [
+ 'usage' => $with['bbcode_match'],
+ 'template' => $with['bbcode_tpl']
+ ]
+ );
+ }
+ catch (\Exception $e)
+ {
+ // Ignore the pair and move on. The BBCodes would have to be fixed manually
+ return;
+ }
+
$bbcode_data = [
'bbcode_tag' => $without['bbcode_tag'],
'bbcode_helpline' => $without['bbcode_helpline'] . ' | ' . $with['bbcode_helpline'],
diff --git a/phpBB/phpbb/textformatter/s9e/bbcode_merger.php b/phpBB/phpbb/textformatter/s9e/bbcode_merger.php
index 72b1473751..a05ca3c2b8 100644
--- a/phpBB/phpbb/textformatter/s9e/bbcode_merger.php
+++ b/phpBB/phpbb/textformatter/s9e/bbcode_merger.php
@@ -37,6 +37,9 @@ class bbcode_merger
*
* All of the arrays contain a "usage" element and a "template" element
*
+ * @throws InvalidArgumentException if a definition cannot be interpreted
+ * @throws RuntimeException if something unexpected occurs
+ *
* @param array $without BBCode definition without an attribute
* @param array $with BBCode definition with an attribute
* @return array Merged definition