You are here

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,
  );
}