You are here

function commerce_number_pattern_tokens in Commerce Core 8.2

Implements hook_tokens().

File

modules/number_pattern/commerce_number_pattern.module, line 64
Provides configurable patterns for generating sequential numbers.

Code

function commerce_number_pattern_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
  $replacements = [];
  if ($type == 'pattern') {

    /** @var \Drupal\Core\Datetime\DateFormatterInterface $date_formatter */
    $date_formatter = \Drupal::service('date.formatter');
    $time = \Drupal::time()
      ->getRequestTime();

    // The tokens must not be cached due to the reliance on the current time.
    $bubbleable_metadata
      ->setCacheMaxAge(0);
    foreach ($tokens as $name => $original) {
      switch ($name) {
        case 'day':
          $replacements[$original] = $date_formatter
            ->format($time, 'custom', 'd');
          break;
        case 'month':
          $replacements[$original] = $date_formatter
            ->format($time, 'custom', 'm');
          break;
        case 'year':
          $replacements[$original] = $date_formatter
            ->format($time, 'custom', 'Y');
          break;
        case 'number':
          if (!empty($data['pattern']['number'])) {
            $replacements[$original] = $data['pattern']['number'];
          }
          break;
      }
    }
    if ($date_tokens = \Drupal::token()
      ->findWithPrefix($tokens, 'date')) {
      foreach ($date_tokens as $name => $original) {
        $replacements[$original] = $date_formatter
          ->format($time, 'custom', $name);
      }
    }
  }
  return $replacements;
}