function views_oai_pmh_plugin_display::query in Views OAI-PMH 7
Same name and namespace in other branches
- 6.2 plugins/views_oai_pmh_plugin_display.inc \views_oai_pmh_plugin_display::query()
- 6 plugins/views_oai_pmh_plugin_display.inc \views_oai_pmh_plugin_display::query()
- 7.2 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 159 - 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 (isset($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['resumptionToken']['query'])) {
$this->view->build_info = $this->oai_args['resumptionToken']['query'];
$this->view->query->pager
->set_current_page($this->oai_args['resumptionToken']['current_page'] + 1);
}
elseif (isset($this->oai_args['errors']) && 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();
}