/** Check if provided correct arguments for a request. * * Only number of parameters is checked. * metadataPrefix has to be checked before it is used. * set has to be checked before it is used. * resumptionToken has to be checked before it is used. * from and until can easily checked here because no extra information * is needed. */ function checkArgs($args, $checkList) { // global $errors, $TOKEN_VALID, $METADATAFORMATS; global $errors, $METADATAFORMATS; // $verb = $args['verb']; unset($args["verb"]); debug_print_r('checkList', $checkList); debug_print_r('args', $args); // "verb" has been checked before, no further check is needed if (isset($checkList['required'])) { for ($i = 0; $i < count($checkList["required"]); $i++) { debug_message("Checking: par{$i}: " . $checkList['required'][$i] . " in "); debug_var_dump("isset(\$args[\$checkList['required'][\$i]])", isset($args[$checkList['required'][$i]])); // echo "key exists". array_key_exists($checkList["required"][$i],$args)."\n"; if (isset($args[$checkList['required'][$i]]) == false) { // echo "caught\n"; $errors[] = oai_error('missingArgument', $checkList["required"][$i]); } else { // if metadataPrefix is set, it is in required section if (isset($args['metadataPrefix'])) { $metadataPrefix = $args['metadataPrefix']; // Check if the format is supported, it has enough infor (an array), last if a handle has been defined. if (!array_key_exists($metadataPrefix, $METADATAFORMATS) || !(is_array($METADATAFORMATS[$metadataPrefix]) || !isset($METADATAFORMATS[$metadataPrefix]['myhandler']))) { $errors[] = oai_error('cannotDisseminateFormat', 'metadataPrefix', $metadataPrefix); } } unset($args[$checkList["required"][$i]]); } } } debug_message('Before return'); debug_print_r('errors', $errors); if (!empty($errors)) { return; } // check to see if there is unwanted foreach ($args as $key => $val) { debug_message("checkArgs: {$key}"); if (!in_array($key, $checkList["ops"])) { debug_message("Wrong\n" . print_r($checkList['ops'], true)); //$errors[] = oai_error('badArgument', $key, $val); // ignore it... } switch ($key) { case 'from': case 'until': if (!checkDateFormat($val)) { $errors[] = oai_error('badGranularity', $key, $val); } break; case 'resumptionToken': // only check for expairation // if((int)$val+TOKEN_VALID < time()) // only check for value if (empty($val)) { $errors[] = oai_error('badResumptionToken'); } break; } } }
$identifier = $record[$SQL['identifier']]; $datestamp = formatDatestamp($record[$SQL['datestamp']]); $setspec = $record[$SQL['set']]; // debug_var_dump('record', $record); if (isset($record[$SQL['deleted']]) && $record[$SQL['deleted']] === true && ($deletedRecord == 'transient' || $deletedRecord == 'persistent')) { $status_deleted = TRUE; } else { $status_deleted = FALSE; } //debug_var_dump('status_deleted', $status_deleted); if ($args['verb'] == 'ListRecords') { $cur_record = $outputObj->create_record(); $cur_header = $outputObj->create_header($oaiprefix . '-' . $identifier, $datestamp, $setspec, $cur_record); // return the metadata record itself if (!$status_deleted) { debug_var_dump('inc_record', $inc_record); create_metadata($outputObj, $cur_record, $identifier, $setspec, $db); } } else { // for ListIdentifiers, only identifiers will be returned. $cur_header = $outputObj->create_header($oaiprefix . '-' . $identifier, $datestamp, $setspec); } if ($status_deleted) { $cur_header->setAttribute("status", "deleted"); } } // ResumptionToken if (isset($restoken)) { if (isset($expirationdatetime)) { $outputObj->create_resumpToken($restoken, $expirationdatetime, $num_rows, $cursor); } else {