FIX Escape dollar signs in UserForm contents before inserting them with regex (#723)

This commit is contained in:
Scott Hutchinson 2018-02-21 13:52:51 +13:00 committed by Robbie Averill
parent eed799dbd9
commit 0ce8b95546

View File

@ -370,7 +370,9 @@ class UserDefinedForm_Controller extends Page_Controller {
if($this->Content && $form = $this->Form()) { if($this->Content && $form = $this->Form()) {
$hasLocation = stristr($this->Content, '$UserDefinedForm'); $hasLocation = stristr($this->Content, '$UserDefinedForm');
if($hasLocation) { if($hasLocation) {
$content = preg_replace('/(<p[^>]*>)?\\$UserDefinedForm(<\\/p>)?/i', $form->forTemplate(), $this->Content); /** @see Requirements_Backend::escapeReplacement */
$formEscapedForRegex = addcslashes($form->forTemplate(), '\\$');
$content = preg_replace('/(<p[^>]*>)?\\$UserDefinedForm(<\\/p>)?/i', $formEscapedForRegex, $this->Content);
return array( return array(
'Content' => DBField::create_field('HTMLText', $content), 'Content' => DBField::create_field('HTMLText', $content),
'Form' => "" 'Form' => ""