*/
class CRM_Event_ParticipantTokens extends CRM_Core_EntityTokens {
- public static function getSubscribedEvents() {
- $events = parent::getSubscribedEvents();
- // Set the weight so it runs before event tokens.
- $events['civi.token.eval'] = ['evaluateTokens', 400];
- return $events;
- }
-
/**
* Get the entity name for api v4 calls.
*
];
}
+ public function alterActionScheduleQuery(\Civi\ActionSchedule\Event\MailingQueryEvent $e): void {
+ // When targeting `civicrm_participant` records, we enable both `{participant.*}` (per usual) and the related `{event.*}`.
+ parent::alterActionScheduleQuery($e);
+ if ($e->mapping->getEntity() === $this->getExtendableTableName()) {
+ $e->query->select('e.event_id AS tokenContext_eventId');
+ }
+ }
+
/**
* @inheritDoc
* @throws \CiviCRM_API3_Exception
*/
public function evaluateToken(TokenRow $row, $entity, $field, $prefetch = NULL) {
$this->prefetch = (array) $prefetch;
- if (empty($row->context['eventId'])) {
- $row->context['eventId'] = $this->getFieldValue($row, 'event_id');
- }
if ($field === 'balance') {
// @todo - is this really a good idea to call this & potentially get the
// balance of the contribution attached to 'registered_by_id'
*
* @return string[]
*/
- public function getSkippedFields(): array {
+ protected function getSkippedFields(): array {
$fields = parent::getSkippedFields();
// Never add these 2 fields - may not be a stable part of the schema.
// This field is on it's way out of core.