contacts_events-8.x-1.x-dev/modules/teams/contacts_events_teams.tokens.inc
modules/teams/contacts_events_teams.tokens.inc
<?php
/**
* @file
* Token hook implementations for Contacts Events Teams.
*/
use Drupal\Core\Render\BubbleableMetadata;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\Url;
/**
* Implements hook_token_info_alter().
*/
function contacts_events_teams_token_info_alter(&$data) {
$data['tokens']['contacts_ticket']['team-url'] = [
'name' => new TranslatableMarkup('Team application URL'),
'description' => new TranslatableMarkup('The URL of the team application page for this ticket, if applicable.'),
];
}
/**
* Implements hook_tokens().
*/
function contacts_events_teams_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
$replacements = [];
if ($type == 'contacts_ticket' && !empty($data['contacts_ticket'])) {
foreach ($tokens as $name => $original) {
switch ($name) {
case 'team-url':
$replacements[$original] = '';
if (!$data['contacts_ticket']->get('contact')->isEmpty()) {
$url = Url::fromRoute('contacts_events_teams.application_flow',
['contacts_ticket' => $data['contacts_ticket']->id()],
['absolute' => TRUE]);
if ($url->access($data['contacts_ticket']->get('contact')->entity)) {
$replacements[$original] = $url->toString();
}
}
break;
}
}
}
return $replacements;
}
