From: Cyperghost Date: Mon, 17 Jun 2024 10:27:59 +0000 (+0200) Subject: Check for disallowed BB codes in the content X-Git-Tag: 5.4.34~2 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=0f19b11f4e72ea8a630ef3a1d5f42e13a378e7fd;p=GitHub%2FWoltLab%2FWCF.git Check for disallowed BB codes in the content --- diff --git a/wcfsetup/install/files/acp/templates/articleAdd.tpl b/wcfsetup/install/files/acp/templates/articleAdd.tpl index aeccb5ccf6..437d15ff08 100644 --- a/wcfsetup/install/files/acp/templates/articleAdd.tpl +++ b/wcfsetup/install/files/acp/templates/articleAdd.tpl @@ -531,6 +531,8 @@ {if $errorType == 'empty'} {lang}wcf.global.form.error.empty{/lang} + {elseif $errorType == 'disallowedBBCodes'} + {lang}wcf.message.error.disallowedBBCodes{/lang} {else} {lang}wcf.acp.article.content.error.{@$errorType}{/lang} {/if} diff --git a/wcfsetup/install/files/lib/acp/form/ArticleAddForm.class.php b/wcfsetup/install/files/lib/acp/form/ArticleAddForm.class.php index cba609b822..f67271a278 100644 --- a/wcfsetup/install/files/lib/acp/form/ArticleAddForm.class.php +++ b/wcfsetup/install/files/lib/acp/form/ArticleAddForm.class.php @@ -13,6 +13,7 @@ use wcf\data\media\ViewableMediaList; use wcf\data\smiley\SmileyCache; use wcf\data\user\User; use wcf\form\AbstractForm; +use wcf\system\bbcode\BBCodeHandler; use wcf\system\cache\builder\ArticleCategoryLabelCacheBuilder; use wcf\system\exception\UserInputException; use wcf\system\html\input\HtmlInputProcessor; @@ -390,6 +391,8 @@ class ArticleAddForm extends AbstractForm } } + $this->setDisallowedBBCodes(); + if ($this->isMultilingual) { foreach (LanguageFactory::getInstance()->getLanguages() as $language) { // title @@ -407,6 +410,12 @@ class ArticleAddForm extends AbstractForm 'com.woltlab.wcf.article.content', 0 ); + + $disallowedBBCodes = $this->htmlInputProcessors[$language->languageID]->validate(); + if (!empty($disallowedBBCodes)) { + WCF::getTPL()->assign('disallowedBBCodes', $disallowedBBCodes); + throw new UserInputException('content', 'disallowedBBCodes'); + } } } else { // title @@ -420,6 +429,12 @@ class ArticleAddForm extends AbstractForm $this->htmlInputProcessors[0] = new HtmlInputProcessor(); $this->htmlInputProcessors[0]->process($this->content[0], 'com.woltlab.wcf.article.content', 0); + + $disallowedBBCodes = $this->htmlInputProcessors[0]->validate(); + if (!empty($disallowedBBCodes)) { + WCF::getTPL()->assign('disallowedBBCodes', $disallowedBBCodes); + throw new UserInputException('content', 'disallowedBBCodes'); + } } $this->validateLabelIDs(); @@ -564,6 +579,8 @@ class ArticleAddForm extends AbstractForm } } } + + $this->setDisallowedBBCodes(); } /** @@ -617,4 +634,14 @@ class ArticleAddForm extends AbstractForm 'labelGroupsToCategories' => $this->labelGroupsToCategories, ]); } + + protected function setDisallowedBBCodes(): void + { + BBCodeHandler::getInstance()->setDisallowedBBCodes( + \explode( + ',', + WCF::getSession()->getPermission('user.message.disallowedBBCodes') + ) + ); + } }