oliverdavies.uk/modules/opd_daily_emails/opd_daily_emails.module
Oliver Davies 6b6b362a49 Refactor
Try a different way of naming and grouping classes.
2025-06-12 02:10:08 +01:00

65 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
use Drupal\Core\Render\BubbleableMetadata;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\opd_daily_emails\DailyEmailNodeRepository;
/**
* Implements hook_token_info().
*
* @return array{tokens: array{opd-daily-emails: array{description: TranslatableMarkup, name: TranslatableMarkup}[]}, types: array{opd-daily-emails: array{description: TranslatableMarkup, name: TranslatableMarkup}}}
*/
function opd_daily_emails_token_info(): array {
$tokens = [];
$type = [
'description' => t('Tokens related to daily emails.'),
'name' => t('Daily emails'),
];
$tokens['email-count'] = [
'description' => t('The number of sent daily emails.'),
'name' => t('Daily email count'),
];
return [
'tokens' => [
'opd-daily-emails' => $tokens,
],
'types' => [
'opd-daily-emails' => $type,
],
];
}
/**
* Implements hook_tokens().
*
* @param array<non-empty-string, non-empty-string> $tokens
* @param array<non-empty-string, mixed> $data
* @param array<non-empty-string, mixed> $options
*
* @return array<non-empty-string, mixed>
*/
function opd_daily_emails_tokens(string $type, array $tokens, array $data, array $options, BubbleableMetadata $bubbleableMetadata) : array {
$replacements = [];
if ($type === 'opd-daily-emails') {
foreach ($tokens as $name => $original) {
switch ($name) {
case 'email-count':
$dailyEmailRepository = \Drupal::service(DailyEmailNodeRepository::class);
$dailyEmails = $dailyEmailRepository->getAll();
$replacements[$original] = $dailyEmails->count();
break;
}
}
}
return $replacements;
}