Skip to content
This repository has been archived by the owner on Feb 2, 2022. It is now read-only.

Commit

Permalink
Add token for getting the number of talks given
Browse files Browse the repository at this point in the history
Add a new custom token, `[opdavies_talks:talk_count]`, that replaces the
placeholder text with the talk count value from the `TalkCounter`
service.

References #31
  • Loading branch information
opdavies committed Sep 16, 2020
1 parent 4207b32 commit 3809d5a
Showing 1 changed file with 40 additions and 0 deletions.
40 changes: 40 additions & 0 deletions web/modules/custom/talks/opdavies_talks.module
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
declare(strict_types=1);

use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Render\BubbleableMetadata;
use Drupal\discoverable_entity_bundle_classes\Storage\Node\NodeStorage;
use Drupal\opdavies_talks\Service\TalkCounter;
use Drupal\opdavies_talks\Service\TalkDateUpdater;

/**
Expand Down Expand Up @@ -43,3 +45,41 @@ function opdavies_talks_entity_type_build(array &$entityTypes): void {
$entityTypes['node']->setStorageClass(NodeStorage::class);
}
}

/**
* Implements hook_token_info().
*/
function opdavies_talks_token_info(): array {
$info = [];

$info['types']['opdavies_talks'] = [
'name' => t('Oliver Davies Talks'),
'description' => t('Custom tokens for the Oliver Davies Talks module.'),
];

$info['tokens']['opdavies_talks']['talk_count'] = 'ddd';

return $info;
}

/**
* Implements hook_tokens().
*/
function opdavies_talks_tokens(string $type, array $tokens, array $data, array $options, BubbleableMetadata $bubbleableMetadata): array {
$replacements = [];

if ($type == 'opdavies_talks') {
/** @var TalkCounter $talkCounter */
$talkCounter = Drupal::service(TalkCounter::class);

foreach ($tokens as $name => $original) {
switch ($name) {
case 'talk_count':
$replacements[$original] = $talkCounter->getCount();
break;
}
}
}

return $replacements;
}

0 comments on commit 3809d5a

Please sign in to comment.