Guest User

Untitled

a guest
Jan 23rd, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.17 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4. * @file
  5. * Create custom tokens.
  6. */
  7.  
  8. use Drupal\taxonomy\Entity\Term;
  9. use Drupal\Core\Render\BubbleableMetadata;
  10.  
  11. /**
  12. * Implements hook_token_info().
  13. */
  14. function ao_custom_tokens_token_info() {
  15. $types['ao'] = [
  16. 'name' => t("AO Custom Tokens"),
  17. 'description' => t("Tokens for AO."),
  18. ];
  19. // Site-wide global tokens.
  20. $ao['tday'] = [
  21. 'name' => t("Tournament day"),
  22. 'description' => t("Currently selected tournament day."),
  23. ];
  24. $ao['tday_label'] = [
  25. 'name' => t("Tournament day label"),
  26. 'description' => t("Currently selected tournament day."),
  27. ];
  28. $ao['tday_type'] = [
  29. 'name' => t("Tournament day type"),
  30. 'description' => t("Currently selected tournament day type."),
  31. ];
  32. $ao['tday_tid'] = [
  33. 'name' => t("Tournament day target id"),
  34. 'description' => t("Currently selected tournament day target id."),
  35. ];
  36.  
  37. $ao['tday_date'] = [
  38. 'name' => t("Tournament day date"),
  39. 'description' => t("Currently selected tournament day date."),
  40. ];
  41.  
  42. $ao['sday'] = [
  43. 'name' => t("Schedule day"),
  44. 'description' => t("Currently selected schedule day."),
  45. ];
  46. $ao['sday_label'] = [
  47. 'name' => t("Schedule day label"),
  48. 'description' => t("Currently selected schedule day."),
  49. ];
  50. $ao['sday_type'] = [
  51. 'name' => t("Schedule day type"),
  52. 'description' => t("Currently selected schedule day type."),
  53. ];
  54. $ao['sday_date'] = [
  55. 'name' => t("Schedule day date"),
  56. 'description' => t("Currently selected schedule day date."),
  57. ];
  58. return [
  59. 'types' => $types,
  60. 'tokens' => [
  61. 'ao' => $ao,
  62. ],
  63. ];
  64. }
  65.  
  66. /**
  67. * Implements hook_tokens().
  68. */
  69. function ao_custom_tokens_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
  70. if ($type != 'ao') {
  71. return [];
  72. }
  73.  
  74. $config = \Drupal::config('ao_day_selector.adminsettings');
  75.  
  76. $tournamentDay = $config->get('aodayselector_tournament_day')[0]['target_id'];
  77. $tDay = Term::load($tournamentDay);
  78.  
  79. $is_qualifer = (bool) $tDay->field_qualifier->value;
  80. $is_pre = (bool) $tDay->field_pre->value;
  81.  
  82. $scheduleDay = $config->get('aodayselector_schedule_day')[0]['target_id'];
  83. $sDay = Term::load($scheduleDay);
  84.  
  85. foreach ($tokens as $name => $token) {
  86. $term = (strpos($name, 'tday') !== FALSE) ? $tDay : $sDay;
  87.  
  88. switch ($name) {
  89. case 'tday':
  90. case 'sday':
  91. $replacements[$token] = $term ? $term->field_id_string->value : 'pre';
  92. break;
  93.  
  94. case 'tday_label':
  95. case 'sday_label':
  96. $replacements[$token] = $term ? $term->name->value : 'Pre-tournament';
  97. break;
  98.  
  99. case 'tday_type':
  100. case 'sday_type':
  101. // If the tournament day is a qualifer or pre-tournament
  102. // then the tday_type is "pre".
  103. if ($is_qualifer || $is_pre) {
  104. $replacements[$token] = 'pre';
  105. }
  106. else {
  107. $replacements[$token] = $term->field_id_string->value;
  108. }
  109. break;
  110.  
  111. case 'tday_tid':
  112. $replacements[$token] = $term ? $term->tid->value : NULL;
  113. break;
  114.  
  115. case 'tday_date':
  116. case 'sday_date':
  117. // 2018-01-13
  118. $replacements[$token] = $term ? $term->field_date->value : date('Y-m-d');
  119.  
  120. }
  121. }
  122.  
  123. return $replacements;
  124. }
Add Comment
Please, Sign In to add comment