Ejemplo n.º 1
0
/** 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;
        }
    }
}
Ejemplo n.º 2
0
    $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 {