function _potx_find_perm_hook in Translation template extractor 8
Same name and namespace in other branches
- 5.2 potx.inc \_potx_find_perm_hook()
- 5 potx.inc \_potx_find_perm_hook()
- 6.3 potx.inc \_potx_find_perm_hook()
- 6 potx.inc \_potx_find_perm_hook()
- 6.2 potx.inc \_potx_find_perm_hook()
- 7.3 potx.inc \_potx_find_perm_hook()
- 7 potx.inc \_potx_find_perm_hook()
- 7.2 potx.inc \_potx_find_perm_hook()
Detect permission names from the hook_perm() implementations.
Note that this will get confused with a similar pattern in a comment, and with dynamic permissions, which need to be accounted for.
Parameters
string $file: Full path name of file parsed.
string $filebase: Filename of the file being parsed.
string $save_callback: Callback function used to save strings.
1 call to _potx_find_perm_hook()
- _potx_parse_php_file in ./
potx.inc - Parse a PHP file for translatables.
File
- ./
potx.inc, line 1329 - Extraction API used by the web and command line interface.
Code
function _potx_find_perm_hook($file, $filebase, $save_callback) {
global $_potx_tokens, $_potx_lookup;
if (isset($_potx_lookup[$filebase . '_perm'])) {
// Special case for node module, because it uses dynamic permissions.
// Include the static permissions by hand. That's about all we can do here.
if ($filebase == 'node') {
$line = $_potx_tokens[$_potx_lookup['node_perm'][0]][2];
// List from node.module 1.763
// (checked in on 2006/12/29 at 21:25:36 by drumm)
$nodeperms = [
'administer content types',
'administer nodes',
'access content',
'view revisions',
'revert revisions',
];
foreach ($nodeperms as $item) {
// hook_perm() is only ever found on a Drupal system which does not
// support context.
$save_callback($item, POTX_CONTEXT_NONE, $file, $line);
}
}
else {
$count = 0;
foreach ($_potx_lookup[$filebase . '_perm'] as $ti) {
$tn = $ti;
while (is_array($_potx_tokens[$tn]) || $_potx_tokens[$tn] != '}') {
if (is_array($_potx_tokens[$tn]) && $_potx_tokens[$tn][0] == T_CONSTANT_ENCAPSED_STRING) {
// hook_perm() is only ever found on a Drupal system which does not
// support context.
$save_callback(_potx_format_quoted_string($_potx_tokens[$tn][1]), POTX_CONTEXT_NONE, $file, $_potx_tokens[$tn][2]);
$count++;
}
$tn++;
}
}
if (!$count) {
potx_status('error', t('%hook should have an array of literal string permission names.', [
'%hook' => $filebase . '_perm()',
]), $file, NULL, NULL, 'http://drupal.org/node/323101');
}
}
}
}