Chris@0
|
1 /**
|
Chris@0
|
2 * Implements hook_tokens().
|
Chris@0
|
3 */
|
Chris@0
|
4 function {{ machine_name }}_tokens($type, $tokens, array $data, array $options, \Drupal\Core\Render\BubbleableMetadata $bubbleable_metadata) {
|
Chris@0
|
5 $token_service = \Drupal::token();
|
Chris@0
|
6
|
Chris@0
|
7 $url_options = ['absolute' => TRUE];
|
Chris@0
|
8 if (isset($options['langcode'])) {
|
Chris@0
|
9 $url_options['language'] = \Drupal::languageManager()->getLanguage($options['langcode']);
|
Chris@0
|
10 $langcode = $options['langcode'];
|
Chris@0
|
11 }
|
Chris@0
|
12 else {
|
Chris@0
|
13 $langcode = NULL;
|
Chris@0
|
14 }
|
Chris@0
|
15 $replacements = [];
|
Chris@0
|
16
|
Chris@0
|
17 if ($type == 'node' && !empty($data['node'])) {
|
Chris@0
|
18 /** @var \Drupal\node\NodeInterface $node */
|
Chris@0
|
19 $node = $data['node'];
|
Chris@0
|
20
|
Chris@0
|
21 foreach ($tokens as $name => $original) {
|
Chris@0
|
22 switch ($name) {
|
Chris@0
|
23 // Simple key values on the node.
|
Chris@0
|
24 case 'nid':
|
Chris@0
|
25 $replacements[$original] = $node->nid;
|
Chris@0
|
26 break;
|
Chris@0
|
27
|
Chris@0
|
28 case 'title':
|
Chris@0
|
29 $replacements[$original] = $node->getTitle();
|
Chris@0
|
30 break;
|
Chris@0
|
31
|
Chris@0
|
32 case 'edit-url':
|
Chris@0
|
33 $replacements[$original] = $node->url('edit-form', $url_options);
|
Chris@0
|
34 break;
|
Chris@0
|
35
|
Chris@0
|
36 // Default values for the chained tokens handled below.
|
Chris@0
|
37 case 'author':
|
Chris@0
|
38 $account = $node->getOwner() ? $node->getOwner() : User::load(0);
|
Chris@0
|
39 $replacements[$original] = $account->label();
|
Chris@0
|
40 $bubbleable_metadata->addCacheableDependency($account);
|
Chris@0
|
41 break;
|
Chris@0
|
42
|
Chris@0
|
43 case 'created':
|
Chris@0
|
44 $replacements[$original] = format_date($node->getCreatedTime(), 'medium', '', NULL, $langcode);
|
Chris@0
|
45 break;
|
Chris@0
|
46 }
|
Chris@0
|
47 }
|
Chris@0
|
48
|
Chris@0
|
49 if ($author_tokens = $token_service->findWithPrefix($tokens, 'author')) {
|
Chris@0
|
50 $replacements += $token_service->generate('user', $author_tokens, ['user' => $node->getOwner()], $options, $bubbleable_metadata);
|
Chris@0
|
51 }
|
Chris@0
|
52
|
Chris@0
|
53 if ($created_tokens = $token_service->findWithPrefix($tokens, 'created')) {
|
Chris@0
|
54 $replacements += $token_service->generate('date', $created_tokens, ['date' => $node->getCreatedTime()], $options, $bubbleable_metadata);
|
Chris@0
|
55 }
|
Chris@0
|
56 }
|
Chris@0
|
57
|
Chris@0
|
58 return $replacements;
|
Chris@0
|
59 }
|