function token_get_token_problems in Token 8
Same name and namespace in other branches
- 7 token.install \token_get_token_problems()
Get token problems.
1 call to token_get_token_problems()
- token_requirements in ./
token.install - Implements hook_requirements().
File
- ./
token.install, line 221 - Install, update and uninstall functions for the token module.
Code
function token_get_token_problems() {
// @todo Improve the duplicate checking to report which modules are the offenders.
//$token_info = [];
//foreach (module_implements('token_info') as $module) {
// $module_token_info = module_invoke($module, 'token_info');
// if (in_array($module, _token_core_supported_modules())) {
// $module .= '/token';
// }
// if (isset($module_token_info['types'])) {
// if (is_array($module_token_info['types'])) {
// foreach (array_keys($module_token_info['types']) as $type) {
// if (is_array($module_token_info['types'][$type])) {
// $module_token_info['types'][$type] += ['module' => $module];
// }
// }
// }
// }
// if (isset($module_token_info['tokens'])) {
// if (is_array($module_token_info['tokens'])) {
//
// }
// }
// if (is_array($module_token_info)) {
// $token_info = array_merge_recursive($token_info, $module_token_info);
// }
//}
$token_info = \Drupal::token()
->getInfo();
$token_problems = [
'not-array' => [
'label' => t('Tokens or token types not defined as arrays'),
'severity' => REQUIREMENT_ERROR,
],
'missing-info' => [
'label' => t('Tokens or token types missing name property'),
'severity' => REQUIREMENT_WARNING,
],
'type-no-tokens' => [
'label' => t('Token types do not have any tokens defined'),
'severity' => REQUIREMENT_INFO,
],
'tokens-no-type' => [
'label' => t('Token types are not defined but have tokens'),
'severity' => REQUIREMENT_INFO,
],
'duplicate' => [
'label' => t('Token or token types are defined by multiple modules'),
'severity' => REQUIREMENT_ERROR,
],
];
// Check token types for problems.
foreach ($token_info['types'] as $type => $type_info) {
$real_type = !empty($type_info['type']) ? $type_info['type'] : $type;
if (!is_array($type_info)) {
$token_problems['not-array']['problems'][] = "\$info['types']['{$type}']";
continue;
}
elseif (!isset($type_info['name'])) {
$token_problems['missing-info']['problems'][] = "\$info['types']['{$type}']";
}
elseif (is_array($type_info['name'])) {
$token_problems['duplicate']['problems'][] = "\$info['types']['{$type}']";
}
elseif (empty($token_info['tokens'][$real_type])) {
$token_problems['type-no-tokens']['problems'][] = "\$info['types']['{$real_type}']";
}
}
// Check tokens for problems.
foreach ($token_info['tokens'] as $type => $tokens) {
if (!is_array($tokens)) {
$token_problems['not-array']['problems'][] = "\$info['tokens']['{$type}']";
continue;
}
else {
foreach (array_keys($tokens) as $token) {
if (!is_array($tokens[$token])) {
$token_problems['not-array']['problems'][] = "\$info['tokens']['{$type}']['{$token}']";
continue;
}
elseif (!isset($tokens[$token]['name'])) {
$token_problems['missing-info']['problems'][] = "\$info['tokens']['{$type}']['{$token}']";
}
elseif (is_array($tokens[$token]['name'])) {
$token_problems['duplicate']['problems'][] = "\$info['tokens']['{$type}']['{$token}']";
}
}
}
if (!isset($token_info['types'][$type])) {
$token_problems['tokens-no-type']['problems'][] = "\$info['types']['{$type}']";
}
}
return $token_problems;
}