function purge_tokens_tokens in Purge 8.3
Implements hook_tokens().
File
- modules/
purge_tokens/ purge_tokens.module, line 60 - Purge Tokens - Adds tokens support for external cache invalidation.
Code
function purge_tokens_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
$replacements = [];
// Replace tokens for individual invalidation objects.
if ($type == 'invalidation' && $data['invalidation'] instanceof InvalidationInterface) {
foreach ($tokens as $name => $original) {
switch ($name) {
case 'expression':
if (is_string($expression = $data['invalidation']
->getExpression())) {
$replacements[$original] = $expression;
}
break;
case 'type':
$replacements[$original] = $data['invalidation']
->getType();
break;
}
}
}
elseif ($type == 'invalidations' && $data['invalidations'][0] instanceof InvalidationInterface) {
$join = function ($invalidations, $separator) {
$expressions = [];
foreach ($invalidations as $invalidation) {
if (is_string($expression = $invalidation
->getExpression())) {
$expressions[] = $expression;
}
}
return implode($separator, $expressions);
};
foreach ($tokens as $name => $original) {
switch ($name) {
case 'separated_pipe':
$replacements[$original] = $join($data['invalidations'], '|');
break;
case 'separated_comma':
$replacements[$original] = $join($data['invalidations'], ',');
break;
case 'separated_tab':
$replacements[$original] = $join($data['invalidations'], "\t");
break;
}
}
}
return $replacements;
}