You are here

function bef_replace_query_string_arg in Better Exposed Filters 7

Same name and namespace in other branches
  1. 8.3 better_exposed_filters.theme \bef_replace_query_string_arg()
  2. 6.3 better_exposed_filters.theme \bef_replace_query_string_arg()
  3. 6 better_exposed_filters.theme \bef_replace_query_string_arg()
  4. 6.2 better_exposed_filters.theme \bef_replace_query_string_arg()
  5. 7.3 better_exposed_filters.theme \bef_replace_query_string_arg()

Replaces/adds a given query string argument to the current URL

Parameters

string $key query string key (argument):

string $value query string value:

bool $multiple TRUE if this key/value pair allows multiple values:

1 call to bef_replace_query_string_arg()
theme_select_as_links in ./better_exposed_filters.theme
Themes a select drop-down as a collection of links

File

./better_exposed_filters.theme, line 510

Code

function bef_replace_query_string_arg($key, $value, $multiple = FALSE) {
  $path = arg();

  // Prevents us from having to check for each index from parse_url that we may use
  $urllist = array(
    'path' => '',
    'fragment' => '',
    'query' => '',
  );
  $urllist = array_merge($urllist, parse_url(request_uri()));
  $fragment = urldecode($urllist['fragment']);
  $query = array();
  parse_str(urldecode($urllist['query']), $query);
  if (isset($query[$key]) && is_array($query[$key])) {

    // multiple values allowed for this existing key
    $query[$key][] = $value;
  }
  else {

    // Create a new key
    if ($multiple) {
      $query[$key] = array(
        $value,
      );
    }
    else {
      $query[$key] = $value;
    }
  }
  return url(implode('/', $path), array(
    'query' => $query,
    'fragment' => $fragment,
    'absolute' => TRUE,
  ));
}