Index: patterns.module =================================================================== --- patterns.module (revision 661) +++ patterns.module (working copy) @@ -1686,13 +1686,28 @@ return $pattern; } +function patterns_array_map($function, $array, $params) { + $new_array = array(); + foreach( $array as $key => $value ) { + if (is_array($value)) { + $new_array[$key] = patterns_array_map($function, $value, $params); + } else { + $keyparams = array_merge(array($key), $params); + $key = call_user_func_array($function, $keyparams); + $fullparams = array_merge(array($value), $params); + $new_array[$key] = call_user_func_array($function, $fullparams); + } + } + return $new_array; +} + /** * Return an array with detailed information about the pattern */ function patterns_get_pattern_details($pattern, $recursive = FALSE, &$pids = array()) { // prevent infinite recursion - if (in_array($pattern->pid, $pids)) return array(); +// if (in_array($pattern->pid, $pids)) return array(); $pids[] = $pattern->pid; $actions = !empty($pattern->pattern['actions']) ? $pattern->pattern['actions'] : array(); @@ -1720,6 +1735,14 @@ continue; } $a = patterns_get_pattern_details($p, TRUE, $pids); + // we replace for tokens in the generated pattern + // this is just a proof of concept, so far + if (function_exists('_token_replace_tokens') && !empty($action['parameters'])) { + $tokens = array_keys($action['parameters']); + $values = array_values($action['parameters']); + // using the internal replace function from the token module + $a = patterns_array_map('_token_replace_tokens', $a, array($tokens, $values, '__', '__')); + } // array_merge doesn't preserve numeric array keys // so we handle 'info' separately $info = $result['info'];