From 5b8f9c74490f6d47fba5210c039d5e383239f11c Mon Sep 17 00:00:00 2001
From: Alexander Ebert
Date: Sat, 23 Jul 2016 20:32:17 +0200
Subject: [PATCH] Use optional parameter to enable BBCode -> HTML transform
---
.../html/input/HtmlInputProcessor.class.php | 80 +++++++++----------
1 file changed, 39 insertions(+), 41 deletions(-)
diff --git a/wcfsetup/install/files/lib/system/html/input/HtmlInputProcessor.class.php b/wcfsetup/install/files/lib/system/html/input/HtmlInputProcessor.class.php
index c8a879a024..478317c333 100644
--- a/wcfsetup/install/files/lib/system/html/input/HtmlInputProcessor.class.php
+++ b/wcfsetup/install/files/lib/system/html/input/HtmlInputProcessor.class.php
@@ -5,7 +5,6 @@ use wcf\system\html\input\filter\IHtmlInputFilter;
use wcf\system\html\input\filter\MessageHtmlInputFilter;
use wcf\system\html\input\node\HtmlInputNodeProcessor;
use wcf\system\html\AbstractHtmlProcessor;
-use wcf\system\WCF;
use wcf\util\StringUtil;
/**
@@ -37,18 +36,21 @@ class HtmlInputProcessor extends AbstractHtmlProcessor {
/**
* Processes the input html string.
*
- * @param string $html html string
- * @param string $objectType object type identifier
- * @param integer $objectID object id
+ * @param string $html html string
+ * @param string $objectType object type identifier
+ * @param integer $objectID object id
+ * @param boolean $convertFromBBCode interpret input as bbcode
*/
- public function process($html, $objectType, $objectID = 0) {
+ public function process($html, $objectType, $objectID = 0, $convertFromBBCode = false) {
$this->setContext($objectType, $objectID);
// enforce consistent newlines
$html = StringUtil::trim(StringUtil::unifyNewlines($html));
// check if this is true HTML or just a bbcode string
- $html = $this->convertToHtml($html);
+ if ($convertFromBBCode) {
+ $html = $this->convertToHtml($html);
+ }
// transform bbcodes into metacode markers
$html = HtmlBBCodeParser::getInstance()->parse($html);
@@ -157,48 +159,44 @@ class HtmlInputProcessor extends AbstractHtmlProcessor {
* @return string parsed html string
*/
protected function convertToHtml($html) {
- if (!preg_match('~^<[a-zA-Z\-]+~', $html) || !preg_match('~[a-zA-Z\-]+>$~', $html)) {
- $html = StringUtil::encodeHTML($html);
- $parts = preg_split('~(\n+)~', $html, null, PREG_SPLIT_DELIM_CAPTURE);
-
- $openParagraph = false;
- $html = '';
- for ($i = 0, $length = count($parts); $i < $length; $i++) {
- $part = $parts[$i];
- if (strpos($part, "\n") !== false) {
- $newlines = substr_count($part, "\n");
- if ($newlines === 1) {
- $html .= '
';
- }
- else {
- if ($openParagraph) {
- $html .= '
';
- $openParagraph = false;
- }
-
- // ignore two newline because a new paragraph with bbcodes is created
- // using two subsequent newlines
- $newlines -= 2;
- if ($newlines === 0) {
- continue;
- }
-
- $html .= str_repeat('
', $newlines);
- }
+ $html = StringUtil::encodeHTML($html);
+ $parts = preg_split('~(\n+)~', $html, null, PREG_SPLIT_DELIM_CAPTURE);
+
+ $openParagraph = false;
+ $html = '';
+ for ($i = 0, $length = count($parts); $i < $length; $i++) {
+ $part = $parts[$i];
+ if (strpos($part, "\n") !== false) {
+ $newlines = substr_count($part, "\n");
+ if ($newlines === 1) {
+ $html .= '
';
}
else {
- if (!$openParagraph) {
- $html .= '';
+ if ($openParagraph) {
+ $html .= '
';
+ $openParagraph = false;
+ }
+
+ // ignore two newline because a new paragraph with bbcodes is created
+ // using two subsequent newlines
+ $newlines -= 2;
+ if ($newlines === 0) {
+ continue;
}
- $html .= $part;
- $openParagraph = true;
+ $html .= str_repeat('
', $newlines);
+ }
+ }
+ else {
+ if (!$openParagraph) {
+ $html .= '';
}
+
+ $html .= $part;
+ $openParagraph = true;
}
-
- $html .= '
';
}
- return $html;
+ return $html . '';
}
}
--
2.20.1