1 views_handler_field.inc | views_handler_field::get_token_values_recursive(array $array, array $parent_keys = array()) |
Recursive function to add replacements for nested query string parameters.
E.g. if you pass in the following array: array( 'foo' => array( 'a' => 'value', 'b' => 'value', ), 'bar' => array( 'a' => 'value', 'b' => array( 'c' => value, ), ), );
Would yield the following array of tokens: array( '%foo_a' => 'value' '%foo_b' => 'value' '%bar_a' => 'value' '%bar_b_c' => 'value' );
Parameters
$array: An array of values.
$parent_keys: An array of parent keys. This will represent the array depth.
Return value
An array of available tokens, with nested keys representative of the array structure.:
File
- core/
modules/ views/ handlers/ views_handler_field.inc, line 1532 - @todo.
Class
- views_handler_field
- Base field handler that has no options and renders an unformatted field.
Code
function get_token_values_recursive(array $array, array $parent_keys = array()) {
$tokens = array();
foreach ($array as $param => $val) {
if (is_array($val)) {
// Copy parent_keys array, so we don't affect other elements of this
// iteration.
$child_parent_keys = $parent_keys;
$child_parent_keys[] = $param;
// Get the child tokens.
$child_tokens = $this->get_token_values_recursive($val, $child_parent_keys);
// Add them to the current tokens array.
$tokens += $child_tokens;
}
else {
// Create a token key based on array element structure.
$token_string = !empty($parent_keys) ? implode('_', $parent_keys) . '_' . $param : $param;
$tokens['%' . $token_string] = strip_tags(decode_entities($val));
}
}
return $tokens;
}