You are here

function views_oai_pmh_plugin_display::oai_check_args 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::oai_check_args()
  2. 6 plugins/views_oai_pmh_plugin_display.inc \views_oai_pmh_plugin_display::oai_check_args()
  3. 7 plugins/views_oai_pmh_plugin_display.inc \views_oai_pmh_plugin_display::oai_check_args()
1 call to views_oai_pmh_plugin_display::oai_check_args()
views_oai_pmh_plugin_display::parse_oai_request in plugins/views_oai_pmh_plugin_display.inc

File

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

Class

views_oai_pmh_plugin_display
We are based on a feed display for compatibility.

Code

function oai_check_args($args, $required = array(), $optional = array()) {
  unset($args['verb']);
  if (isset($args['resumptionToken']) && count($args) > 1) {
    $this
      ->oai_error('exclusiveArgument');
    return array();
  }
  elseif (isset($args['resumptionToken']) && count($args) == 1) {
    return $this
      ->get_oai_resumption_token($args['resumptionToken']);
  }
  if (count($args) < count($required)) {
    foreach ($required as $arg) {
      if (!isset($args[$arg])) {
        $this
          ->oai_error('missingArgument', $arg);
        return array();
      }
    }
  }
  $possible = array_merge($required, $optional);
  $supplied = array_keys($args);
  if (count($bad_args = array_diff($supplied, $possible))) {
    foreach ($bad_args as $arg) {
      $this
        ->oai_error('badArgument', $arg, $args[$arg]);
    }
    return array();
  }
  if (isset($args['from'])) {
    if (!($fromgran = $this
      ->check_date_format($args['from']))) {
      $this
        ->oai_error('badGranularity', 'from', $args['from']);
    }
  }
  if (isset($args['until'])) {
    if (!($untilgran = $this
      ->check_date_format($args['until']))) {
      $this
        ->oai_error('badGranularity', 'until', $args['until']);
    }
  }
  if (isset($fromgran) && isset($untilgran) && $fromgran != $untilgran) {
    $this
      ->oai_error('badGranularity', 'mismatched Granularity', $until);
  }
  if (isset($args['identifier'])) {
    $id = substr(strrchr($args['identifier'], ":"), 1);
    if (!$this
      ->oai_check_identifier($id)) {
      $this
        ->oai_error('idDoesNotExist', 'badArgument', $id);
    }
  }
  return array();
}