dev/core#4551 Fix escaping on token event.title
authorEileen McNaughton <emcnaughton@wikimedia.org>
Wed, 6 Sep 2023 19:58:49 +0000 (07:58 +1200)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Wed, 6 Sep 2023 22:59:22 +0000 (10:59 +1200)
CRM/Core/EntityTokens.php
CRM/Event/Tokens.php

index a5e80be2239411eaa7f5806b0a167891f5d26576..1fb8bcebc57ae78b3fe5fc25477d06cc4add4f74 100644 (file)
@@ -141,6 +141,18 @@ class CRM_Core_EntityTokens extends AbstractTokenSubscriber {
     $row->format('text/plain')->tokens($entity, $field, (string) $fieldValue);
   }
 
+  /**
+   * Is the text stored in html format.
+   *
+   * @param string $fieldName
+   *
+   * @return bool
+   */
+  public function isHTMLTextField(string $fieldName): bool {
+    $metadata = $this->getMetadataForField($fieldName);
+    return ($this->getMetadataForField($fieldName)['input_type'] ?? NULL) === 'RichTextEditor';
+  }
+
   /**
    * Metadata about the entity fields.
    *
index 4f1c0fe65d01f4b988ea07e7606d607ad9f628bc..009bcfaaaad6a8e5197f12a9edabf7e40ec24e80 100644 (file)
@@ -234,7 +234,12 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens {
             $tokens[$fieldName]['text/html'] = CRM_Core_BAO_CustomField::displayValue($value, $fieldSpec['custom_field_id']);
           }
           else {
-            $tokens[$fieldName]['text/html'] = $event[$fieldName];
+            if ($this->isHTMLTextField($fieldName)) {
+              $tokens[$fieldName]['text/html'] = $event[$fieldName];
+            }
+            else {
+              $tokens[$fieldName]['text/plain'] = $event[$fieldName];
+            }
           }
         }
       }