You are here

purl_querystring.inc in Persistent URL 7

Same filename and directory in other branches
  1. 6 includes/purl_querystring.inc

File

includes/purl_querystring.inc
View source
<?php

/**
 * Querystring processor.
 */
class purl_querystring implements purl_processor {
  public function method() {
    return 'querystring';
  }
  public function admin_form(&$form, $id) {

    // Note that while this form element's key includes the method ("pair"),
    // it will eventually save to the variable purl_method_[id]_key. See
    // element validator for how this occurs.
    $form[$id]['extra']["purl_method_querystring_{$id}_key"] = array(
      '#title' => t('Key'),
      '#type' => 'textfield',
      '#size' => 12,
      '#default_value' => variable_get("purl_method_{$id}_key", ''),
      '#element_validate' => array(
        'purl_admin_form_key_validate',
      ),
      '#provider_id' => $id,
    );
  }

  /**
   * Detect a default value for in the GET request, ignore elements drupal uses
   * already.
   */
  public function detect($q) {
    return drupal_http_build_query(drupal_get_query_parameters($_GET, array(
      'q',
      'sort',
      'order',
      'page',
      'pass',
    )));

    //return drupal_query_string_encode($_GET, array('q', 'sort', 'order', 'page', 'pass'));
  }
  public function description() {
    return t('Choose a querystring. May contain only lowercase letters, numbers, dashes and underscores. e.g. "my-value"');
  }

  /**
   * Tear apart the path and iterate thought it looking for valid values.
   */
  public function parse($valid_values, $qs) {
    $elements = array();
    parse_str($qs, $elements);
    $parsed = array();
    foreach ($elements as $k => $v) {
      if (isset($valid_values[$k])) {
        $parsed[$k] = $valid_values[$k];
        $parsed[$k]['id'] = $v;
      }
    }
    return purl_path_elements($this, $parsed);
  }

  /**
   * No need to do nothing at all.
   */
  public function adjust(&$value, $item, &$q) {
  }

  /**
   * Removes specific modifier from a query string.
   *
   * @param $qs
   *   The current querystring.
   * @param $element
   *   a purl_path_element object
   * @return querystring with the modifier removed.
   */
  function remove($value, $element) {
    $qs = array();
    parse_str($value, $qs);
    unset($qs[$element->value]);
    return drupal_http_build_query($qs);
  }

  /**
   * Just need to add the value to the front of the path.
   */
  public function rewrite(&$path, &$options, $element) {
    if (!_purl_skip($element, $options)) {
      $options['query'][$element->value] = $element->id;
    }
  }

}

Classes

Namesort descending Description
purl_querystring Querystring processor.