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;
}