You are here

function filter_harmonizer_stringify_regular_filter in Views Filter Harmonizer 8

Same name and namespace in other branches
  1. 1.0.x filter_harmonizer.module \filter_harmonizer_stringify_regular_filter()

Takes a regular filter and outputs its filter value(s) as a string for later use as a contextual argument in the browser URL. For example a GeofieldProximityFilter value may return "-37.8,144.9<=100km".

Parameters

FilterPluginBase $regular_filter.: The regular filter handler with its (exposed) values and optional operator.

ArgumentPluginBase $contextual_filter.: The contextual filter whose arg will be calculated from the regular value.

Return value

string The contextual argument string for use on the browser address bar.

1 call to filter_harmonizer_stringify_regular_filter()
filter_harmonizer_harmonize_and_record_filter_pairs in ./filter_harmonizer.module
When a View on a page is first loaded and if a context filter is present, we obey any associated /arg1/arg2/.. on the browser URL/address bar. Then, if regular exposed filters are present too for fields by the same names, and their form values are…

File

./filter_harmonizer.module, line 195
filter_harmonizer.module

Code

function filter_harmonizer_stringify_regular_filter(FilterPluginBase $regular_filter, ArgumentPluginBase $contextual_filter) {
  if (filter_harmonizer_is_empty($regular_filter)) {
    return $contextual_filter->argument ?: $contextual_filter->options['exception']['value'];
  }
  $value = Drupal::moduleHandler()
    ->invokeAll('filter_harmonizer_stringify_regular_filter', [
    $regular_filter,
  ]);
  if (empty($value) && $value != 0) {
    $value = $regular_filter->value;
  }
  if (is_array($value)) {
    $isAnd = $regular_filter->operator == 'and';
    $delimiter = empty($isAnd) ? '+' : ',';
    $value = implode($delimiter, $value);
  }
  return $value;
}