Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * @file
- * Create custom tokens.
- */
- use Drupal\taxonomy\Entity\Term;
- use Drupal\Core\Render\BubbleableMetadata;
- /**
- * Implements hook_token_info().
- */
- function ao_custom_tokens_token_info() {
- $types['ao'] = [
- 'name' => t("AO Custom Tokens"),
- 'description' => t("Tokens for AO."),
- ];
- // Site-wide global tokens.
- $ao['tday'] = [
- 'name' => t("Tournament day"),
- 'description' => t("Currently selected tournament day."),
- ];
- $ao['tday_label'] = [
- 'name' => t("Tournament day label"),
- 'description' => t("Currently selected tournament day."),
- ];
- $ao['tday_type'] = [
- 'name' => t("Tournament day type"),
- 'description' => t("Currently selected tournament day type."),
- ];
- $ao['tday_tid'] = [
- 'name' => t("Tournament day target id"),
- 'description' => t("Currently selected tournament day target id."),
- ];
- $ao['tday_date'] = [
- 'name' => t("Tournament day date"),
- 'description' => t("Currently selected tournament day date."),
- ];
- $ao['sday'] = [
- 'name' => t("Schedule day"),
- 'description' => t("Currently selected schedule day."),
- ];
- $ao['sday_label'] = [
- 'name' => t("Schedule day label"),
- 'description' => t("Currently selected schedule day."),
- ];
- $ao['sday_type'] = [
- 'name' => t("Schedule day type"),
- 'description' => t("Currently selected schedule day type."),
- ];
- $ao['sday_date'] = [
- 'name' => t("Schedule day date"),
- 'description' => t("Currently selected schedule day date."),
- ];
- return [
- 'types' => $types,
- 'tokens' => [
- 'ao' => $ao,
- ],
- ];
- }
- /**
- * Implements hook_tokens().
- */
- function ao_custom_tokens_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
- if ($type != 'ao') {
- return [];
- }
- $config = \Drupal::config('ao_day_selector.adminsettings');
- $tournamentDay = $config->get('aodayselector_tournament_day')[0]['target_id'];
- $tDay = Term::load($tournamentDay);
- $is_qualifer = (bool) $tDay->field_qualifier->value;
- $is_pre = (bool) $tDay->field_pre->value;
- $scheduleDay = $config->get('aodayselector_schedule_day')[0]['target_id'];
- $sDay = Term::load($scheduleDay);
- foreach ($tokens as $name => $token) {
- $term = (strpos($name, 'tday') !== FALSE) ? $tDay : $sDay;
- switch ($name) {
- case 'tday':
- case 'sday':
- $replacements[$token] = $term ? $term->field_id_string->value : 'pre';
- break;
- case 'tday_label':
- case 'sday_label':
- $replacements[$token] = $term ? $term->name->value : 'Pre-tournament';
- break;
- case 'tday_type':
- case 'sday_type':
- // If the tournament day is a qualifer or pre-tournament
- // then the tday_type is "pre".
- if ($is_qualifer || $is_pre) {
- $replacements[$token] = 'pre';
- }
- else {
- $replacements[$token] = $term->field_id_string->value;
- }
- break;
- case 'tday_tid':
- $replacements[$token] = $term ? $term->tid->value : NULL;
- break;
- case 'tday_date':
- case 'sday_date':
- // 2018-01-13
- $replacements[$token] = $term ? $term->field_date->value : date('Y-m-d');
- }
- }
- return $replacements;
- }
Add Comment
Please, Sign In to add comment