You are here

function views_json_query_plugin_query_json::build in Views JSON Query 7

Builds the necessary info to execute the query.

Overrides views_plugin_query::build

File

./views_json_query_plugin_query_json.inc, line 34
Query plugin for views_json_query.

Class

views_json_query_plugin_query_json
@file Query plugin for views_json_query.

Code

function build(&$view) {
  $view
    ->init_pager();

  // Let the pager modify the query to add limits.
  $this->pager
    ->query();

  // Build the JSON file URL.
  $json_file = $this->options['json_file'];
  if (!empty($view->build_info['substitutions'])) {
    $json_file = strtr($json_file, $view->build_info['substitutions']);
  }
  $parsed = parse_url($json_file);
  $query_string = drupal_get_query_array(isset($parsed['query']) ? $parsed['query'] : array());

  // Add query string parameters from filters.
  if (isset($this->query_string)) {
    foreach ($this->query_string as $k => $v) {
      $query_string[$k] = $v;
    }
  }

  // Add pagination query string argument.
  if ($this->options['enable_pagination_query_parameters']) {
    if (isset($view->query->offset)) {
      $query_string[$this->options['pagination_offset_query_parameter']] = $view->query->offset;
    }
    if (isset($view->query->limit)) {
      $query_string[$this->options['pagination_limit_query_parameter']] = $view->query->limit;
    }
  }

  // Rebuild the JSON file URL.
  $view->query->options['json_file'] = "{$parsed['scheme']}://{$parsed['host']}{$parsed['path']}?" . drupal_http_build_query($query_string);
  $view->build_info['query'] = $this
    ->query();
  $view->build_info['query_args'] = array();
}