You are here

function views_oai_pmh_plugin_display::query in Views OAI-PMH 7.2

Same name and namespace in other branches
  1. 6.2 plugins/views_oai_pmh_plugin_display.inc \views_oai_pmh_plugin_display::query()
  2. 6 plugins/views_oai_pmh_plugin_display.inc \views_oai_pmh_plugin_display::query()
  3. 7 plugins/views_oai_pmh_plugin_display.inc \views_oai_pmh_plugin_display::query()

Inject anything into the query that the display handler needs.

Overrides views_plugin_display::query

File

plugins/views_oai_pmh_plugin_display.inc, line 142
Contains the OAI-PMH display plugin.

Class

views_oai_pmh_plugin_display
We are based on a feed display for compatibility.

Code

function query() {
  if (count($this->oai_args['errors']) && count($this->oai_args['errors'])) {
    $this->view->executed = TRUE;
    return parent::query();
  }
  if (isset($this->oai_args['resumptionToken']) && isset($this->oai_args['query'])) {
    $this->view->query = $this->oai_args['query'];
    $this->view->query->pager
      ->set_current_page($this->oai_args['current_page'] + 1);
  }
  elseif (count($this->oai_args['errors'])) {
    $this->view->executed = TRUE;
  }
  else {
    $verb = $this->oai_args['verb'];
    $this->view->query
      ->add_field('node', 'nid');
    $this->view->query
      ->add_field('node', 'changed');
    $this->view->query
      ->add_orderby('node', 'nid', 'asc');
    if ($verb == 'GetRecord' && isset($this->oai_args['nid']) && !empty($this->oai_args['nid'])) {
      $this->view->query
        ->add_where(0, 'node.nid', $this->oai_args['nid'], '=');
    }
    if ($verb == 'ListIdentifiers' || $verb == 'ListRecords') {
      if (isset($this->oai_args['from'])) {
        $from = strtotime($this->oai_args['from']);
        $this->view->query
          ->add_where(0, 'node.changed', $from, '>=');
      }
      if (isset($this->oai_args['until'])) {
        $until = strtotime($this->oai_args['until']);
        $this->view->query
          ->add_where(0, 'node.changed', $until, '<=');
      }
    }
  }
  return parent::query();
}