You are here

function currency_tokens in Currency 8.3

Same name and namespace in other branches
  1. 7.2 currency/currency.tokens.inc \currency_tokens()

Implements hook_tokens().

File

./currency.tokens.inc, line 54
Contains Token API hook implementations.

Code

function currency_tokens($type, array $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
  $replacements = array();
  if ($type == 'currency' && isset($data['currency'])) {
    $currency_code = $data['currency'];
    if (isset($tokens['code'])) {
      $replacements[$tokens['code']] = $currency_code;
      unset($tokens['code']);
    }
    if ($tokens) {

      /** @var \Drupal\currency\Entity\CurrencyInterface $currency */
      $currency = \Drupal::entityTypeManager()
        ->getStorage('currency')
        ->load($currency_code);
      if ($currency) {
        $bubbleable_metadata
          ->addCacheableDependency($currency);
        foreach ($tokens as $token => $original) {
          switch ($token) {
            case 'number':
              $replacements[$original] = $currency
                ->getCurrencyNumber();
              break;
            case 'sign':
              $replacements[$original] = $currency
                ->getSign();
              break;
            case 'subunits':
              $replacements[$original] = $currency
                ->getSubunits();
              break;
            case 'title':
              $replacements[$original] = $currency
                ->label();
              break;
          }
        }
      }
    }
  }
  return $replacements;
}