function filter_harmonizer_convert_regular_to_contextual_value in Views Filter Harmonizer 7
Convert a supplied regular filter value to an equivalent contextual argument.
@todo: handle list values
Parameters
array $regular_filter_options: the regular (exposed) filter options, indexed by machine code
object $contextual_filter: the contextual filter object
array $value: array of contextual values; you may want to concatenate these with '+' to use in an URL
1 call to filter_harmonizer_convert_regular_to_contextual_value()
- filter_harmonizer_views_exposed_form_submit in ./
filter_harmonizer.module - Supplementary submit handler for 'views_exposed_form'.
File
- ./
filter_harmonizer.module, line 497 - filter_harmonizer.module For Views where both exposed and contextual filters are active on a page.
Code
function filter_harmonizer_convert_regular_to_contextual_value($regular_filter_options, $contextual_filter, $value) {
if (filter_harmonizer_is_tax_filter($contextual_filter)) {
// May need to tighten up above to uniquely identify filter as taxonomy filter
if ($value === '' || strtolower($value) === strtolower(t('All'))) {
return array(
$contextual_filter->options['exception']['value'],
);
}
// For Taxonomy terms with "Term name converted to Term ID" we need to
// convert the tid to the term name or the URL won't be valid.
if ($contextual_filter->options['validate_options']['type'] == 'name' || $contextual_filter->options['validate_options']['type'] == 'convert') {
foreach (explode('|', $value) as $subvalue) {
if ($term = taxonomy_term_load($subvalue)) {
$subvalues[] = $term->name;
}
}
return empty($subvalues) ? array(
$value,
) : $subvalues;
}
return explode('|', $value);
}
elseif (is_array($regular_filter_options)) {
// @todo For grouped values we need to look up $value in
// $regular_filter->options['group_info']['group_items']
$subvalues = array();
foreach (explode('|', $value) as $key) {
if (!empty($regular_filter_options[$key])) {
$subvalues[] = $regular_filter_options[$key];
}
}
return $subvalues;
}
return array(
$value,
);
}