Add 'schema' to \Civi\Token\TokenProcessor()
authorAidan Saunders <aidan.saunders@squiffle.uk>
Wed, 31 Oct 2018 18:15:53 +0000 (18:15 +0000)
committerAidan Saunders <aidan.saunders@squiffle.uk>
Fri, 14 Dec 2018 15:56:30 +0000 (15:56 +0000)
Civi/Token/TokenProcessor.php

index bfad77926c101512be72a2f085d2472a1280991b..06e8b6cd0f290f2c33c0a1f849f5e1095193b7d4 100644 (file)
@@ -25,6 +25,10 @@ class TokenProcessor {
    *     automatically from contactId.)
    *   - actionSchedule: DAO, the rule which triggered the mailing
    *     [for CRM_Core_BAO_ActionScheduler].
+   *   - schema: array, a list of fields that will be provided for each row.
+   *     This is automatically populated with any general context
+   *     keys, but you may need to add extra keys for token-row data.
+   *     ex: ['contactId', 'activityId'].
    */
   public $context;
 
@@ -75,6 +79,9 @@ class TokenProcessor {
    * @param array $context
    */
   public function __construct($dispatcher, $context) {
+    $context['schema'] = isset($context['schema'])
+      ? array_unique(array_merge($context['schema'], array_keys($context)))
+      : array_keys($context);
     $this->dispatcher = $dispatcher;
     $this->context = $context;
   }