From 8f6acdd5146a08e04c9c486099f2776e5676d274 Mon Sep 17 00:00:00 2001 From: Owen Bush <owen.bush@lullabot.com> Date: Thu, 25 May 2023 17:41:44 -0600 Subject: [PATCH] Add tokens from eventseries and eventinstance to registrants --- .../recurring_events_registration.tokens.inc | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/modules/recurring_events_registration/recurring_events_registration.tokens.inc b/modules/recurring_events_registration/recurring_events_registration.tokens.inc index 83a1150b..569ead78 100644 --- a/modules/recurring_events_registration/recurring_events_registration.tokens.inc +++ b/modules/recurring_events_registration/recurring_events_registration.tokens.inc @@ -50,6 +50,17 @@ function recurring_events_registration_token_info() { 'description' => t('The URL to delete a registrant.'), ]; + $registrant['eventinstance'] = [ + 'name' => t('Registrant event instance'), + 'description' => t('The eventinstance associated with a registrant'), + 'type' => 'eventinstance', + ]; + $registrant['eventseries'] = [ + 'name' => t('Registrant event series'), + 'description' => t('The eventseries associated with a registrant'), + 'type' => 'eventseries', + ]; + return [ 'types' => [ 'eventinstance' => $eventinstance_type, @@ -67,6 +78,7 @@ function recurring_events_registration_token_info() { * Implements hook_tokens(). */ function recurring_events_registration_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) { + $token_service = \Drupal::token(); $replacements = []; if ($type == 'eventinstance' && !empty($data['eventinstance'])) { $event_instance = $data['eventinstance']; @@ -108,8 +120,30 @@ function recurring_events_registration_tokens($type, $tokens, array $data, array } $replacements[$original] = $url; break; + + case 'eventinstance': + $instance = $registrant->getEventInstance(); + $bubbleable_metadata->addCacheableDependency($instance); + $replacements[$original] = $instance->label(); + break; + + case 'eventseries': + $series = $registrant->getEventSeries(); + $bubbleable_metadata->addCacheableDependency($series); + $replacements[$original] = $series->label(); + break; } } + + if ($instance_tokens = $token_service->findWithPrefix($tokens, 'eventinstance')) { + $instance = $registrant->getEventInstance(); + $replacements += $token_service->generate('eventinstance', $instance_tokens, ['eventinstance' => $instance], $options, $bubbleable_metadata); + } + + if ($series_tokens = $token_service->findWithPrefix($tokens, 'eventseries')) { + $series = $registrant->getEventSeries(); + $replacements += $token_service->generate('eventseries', $series_tokens, ['eventseries' => $series], $options, $bubbleable_metadata); + } } return $replacements; } -- GitLab