commerce_number_pattern.module in Commerce Core 8.2
Provides configurable patterns for generating sequential numbers.
File
modules/number_pattern/commerce_number_pattern.moduleView source
<?php
/**
* @file
* Provides configurable patterns for generating sequential numbers.
*/
use Drupal\Core\Render\BubbleableMetadata;
/**
* Implements hook_menu_links_discovered_alter().
*/
function commerce_number_pattern_menu_links_discovered_alter(&$links) {
// Move the number pattern page to the Order configuration group.
if (\Drupal::moduleHandler()
->moduleExists('commerce_order')) {
$links['entity.commerce_number_pattern.collection']['parent'] = 'commerce_order.configuration';
}
}
/**
* Implements hook_token_info().
*/
function commerce_number_pattern_token_info() {
$time = \Drupal::time()
->getRequestTime();
/** @var \Drupal\Core\Datetime\DateFormatterInterface $date_formatter */
$date_formatter = \Drupal::service('date.formatter');
$year = $date_formatter
->format($time, 'custom', 'Y');
$month = $date_formatter
->format($time, 'custom', 'm');
$day = $date_formatter
->format($time, 'custom', 'd');
$info = [];
$info['types']['pattern'] = [
'name' => t('Pattern'),
'needs-data' => 'pattern',
];
$info['tokens']['pattern']['day'] = [
'name' => t('Day'),
'description' => t('The current day, with a leading zero. (%date)', [
'%date' => $day,
]),
];
$info['tokens']['pattern']['month'] = [
'name' => t('Month'),
'description' => t('The current month, with a leading zero. (%date)', [
'%date' => $month,
]),
];
$info['tokens']['pattern']['year'] = [
'name' => t('Year'),
'description' => t('The current year. (%date)', [
'%date' => $year,
]),
];
$info['tokens']['pattern']['date'] = [
'name' => t('Custom date'),
'description' => t('A date in a custom format. See <a href="http://php.net/manual/function.date.php">the PHP documentation</a> for details.'),
'dynamic' => TRUE,
];
$info['tokens']['pattern']['number'] = [
'name' => t('Number'),
'description' => t('The generated sequential number.'),
];
return $info;
}
/**
* Implements hook_tokens().
*/
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;
}
Functions
Name![]() |
Description |
---|---|
commerce_number_pattern_menu_links_discovered_alter | Implements hook_menu_links_discovered_alter(). |
commerce_number_pattern_tokens | Implements hook_tokens(). |
commerce_number_pattern_token_info | Implements hook_token_info(). |