예제 #1
0
function xmlset($setSpecs, $name, $desc)
{
    global $output;
    $output .= "   <set>\n";
    for ($i = 0; $i < count($setSpecs); ++$i) {
        $output .= xmlformat($setSpecs[$i], 'setSpec', '', 4);
    }
    $output .= xmlformat($name, 'setName', '', 4);
    if (isset($val['setDescription']) && $val['setDescription'] != '') {
        $output .= "    <setDescription>\n";
        $prefix = 'oai_dc';
        $output .= metadataHeader($prefix);
        $output .= xmlrecord($desc, 'dc:description', '', 7);
        $output .= '     </' . $prefix;
        if (isset($METADATAFORMATS[$prefix]['record_prefix'])) {
            $output .= ':' . $METADATAFORMATS[$prefix]['record_prefix'];
        }
        $output .= ">\n";
        $output .= "    </setDescription>\n";
    }
    $output .= "   </set>\n";
}
예제 #2
0
    // the second condition is due to a bug in PEAR
    if ($countrec == 1 && $deliveredrecords) {
        $record = $res->fetchRow(DB_FETCHMODE_ASSOC, $deliveredrecords);
    } else {
        $record = $res->fetchRow();
    }
    $identifier = $oaiprefix . $record[$SQL['identifier']];
    $datestamp = formatDatestamp($record[$SQL['datestamp']]);
    if (isset($record[$SQL['deleted']]) && $record[$SQL['deleted']] == 'true' && ($deletedRecord == 'transient' || $deletedRecord == 'persistent')) {
        $status_deleted = TRUE;
    } else {
        $status_deleted = FALSE;
    }
    $output .= '  <header';
    if ($status_deleted) {
        $output .= ' status="deleted"';
    }
    $output .= '>' . "\n";
    // use xmlrecord since we use stuff from database
    $output .= xmlrecord($identifier, 'identifier', '', 3);
    $output .= xmlformat($datestamp, 'datestamp', '', 3);
    if (!$status_deleted) {
        $output .= xmlrecord($record[$SQL['set']], 'setSpec', '', 3);
    }
    $output .= '  </header>' . "\n";
}
// ResumptionToken
if (isset($restoken)) {
    $output .= $restoken;
}
$output .= " </ListIdentifiers>\n";
예제 #3
0
        continue;
    }
    $identifier = $oaiprefix . $element->getUuid();
    $datestamp = formatDatestamp($element->getDateUpdate());
    $output .= '  <record>' . "\n";
    $output .= '   <header>' . "\n";
    $output .= xmlformat($identifier, 'identifier', '', 4);
    $output .= xmlformat($datestamp, 'datestamp', '', 4);
    // return the metadata record itself
    $folders = $element->getFolders();
    if (empty($folders)) {
        $errors .= oai_error('resourceIdDoesNotExist', '', $record[1]);
    }
    foreach ($folders as $folder) {
        $setspec = $setspecprefix . str_replace('/', '_', $folder->getUuid());
        $output .= xmlrecord($setspec, 'setSpec', '', 3);
    }
    $output .= '   </header>' . "\n";
    $revision = $itemModel->getLastRevision($element);
    if ($revision === false) {
        throw new Zend_Exception('The item must have at least one revision to have metadata', MIDAS_INVALID_POLICY);
    }
    $metadata = $itemRevisionModel->getMetadata($revision);
    include BASE_PATH . '/modules/oai/library/oai/' . $inc_record;
    $output .= '  </record>' . "\n";
}
// ResumptionToken
if (isset($restoken)) {
    $output .= $restoken;
}
// end ListRecords
예제 #4
0
// change output your metadata records further below.
// please change to the according metadata prefix you use
$prefix = 'oai_dc';
// you do need to change anything in the namespace and schema stuff
// the correct headers should be created automatically
$output .= '   <metadata>' . "\n";
$output .= metadataHeader($prefix);
// please change according to your metadata format
$indent = 6;
$output .= xmlrecord($record['dc_title'], 'dc:title', '', $indent);
$output .= xmlrecord($record['dc_creator'], 'dc:creator', '', $indent);
$output .= xmlrecord($record['dc_subject'], 'dc:subject', '', $indent);
$output .= xmlrecord($record['dc_description'], 'dc:description', '', $indent);
$output .= xmlrecord($record['dc_publisher'], 'dc:publisher', '', $indent);
$output .= xmlrecord($record['dc_contributor'], 'dc:contributor', '', $indent);
$output .= xmlrecord($record['dc_date'], 'dc:date', '', $indent);
$output .= xmlrecord($record['dc_type'], 'dc:type', '', $indent);
$output .= xmlrecord($record['dc_format'], 'dc:format', '', $indent);
$output .= rawxmlrecord(str_replace('&amp;', '&', $harmoni->request->quickURL('asset', 'view', array('collection_id' => $record['oai_set'], 'asset_id' => $record['oai_identifier']))), 'dc:identifier', '', $indent);
$output .= xmlrecord($record['dc_source'], 'dc:source', '', $indent);
$output .= xmlrecord($record['dc_language'], 'dc:language', '', $indent);
$output .= xmlrecord($record['dc_relation'], 'dc:relation', '', $indent);
$output .= xmlrecord($record['dc_coverage'], 'dc:coverage', '', $indent);
$output .= xmlrecord($record['dc_rights'], 'dc:rights', '', $indent);
// Here, no changes need to be done
$output .= '     </' . $prefix;
if (isset($METADATAFORMATS[$prefix]['record_prefix'])) {
    $output .= ':' . $METADATAFORMATS[$prefix]['record_prefix'];
}
$output .= ">\n";
$output .= '   </metadata>' . "\n";
예제 #5
0
}
// break and clean up on error
if ($errors != '') {
    oai_exit();
}
$SETS = getOaiSetArray($db);
if (is_array($SETS)) {
    $output .= "  <ListSets>\n";
    foreach ($SETS as $key => $val) {
        $output .= "   <set>\n";
        $output .= xmlformat($val['setSpec'], 'setSpec', '', 4);
        $output .= xmlformat($val['setName'], 'setName', '', 4);
        if (isset($val['setDescription']) && $val['setDescription'] != '') {
            $output .= "    <setDescription>\n";
            $prefix = 'oai_dc';
            $output .= metadataHeader($prefix);
            $output .= xmlrecord($val['setDescription'], 'dc:description', '', 7);
            $output .= '     </' . $prefix;
            if (isset($METADATAFORMATS[$prefix]['record_prefix'])) {
                $output .= ':' . $METADATAFORMATS[$prefix]['record_prefix'];
            }
            $output .= ">\n";
            $output .= "    </setDescription>\n";
        }
        $output .= "   </set>\n";
    }
    $output .= "  </ListSets>\n";
} else {
    $errors .= oai_error('noSetHierarchy');
    oai_exit();
}
예제 #6
0
function xmlgetinfo($dc_type_id, $value)
{
    global $output;
    $indent = 6;
    if ($dc_type_id > 0 && $dc_type_id < 7) {
        $output .= xmlrecord($value, 'dc:creator', '', $indent);
    }
    if ($dc_type_id > 6 && $dc_type_id < 9) {
        $output .= xmlrecord($value, 'dc:coverage', '', $indent);
    }
    if ($dc_type_id == 9) {
        $output .= xmlrecord($value, 'dc:creator', '', $indent);
    } elseif ($dc_type_id > 9 && $dc_type_id < 17) {
        $output .= xmlrecord($value, 'dc:date', '', $indent);
    } elseif ($dc_type_id > 16 && $dc_type_id < 26) {
        $output .= xmlrecord($value, 'dc:identifier', '', $indent);
    } elseif ($dc_type_id > 25 && $dc_type_id < 33) {
        $output .= xmlrecord($value, 'dc:description', '', $indent);
    } elseif ($dc_type_id > 32 && $dc_type_id < 37) {
        $output .= xmlrecord($value, 'dc:format', '', $indent);
    } elseif ($dc_type_id > 36 && $dc_type_id < 39) {
        $output .= xmlrecord($value, 'dc:language', '', $indent);
    } elseif ($dc_type_id == 39) {
        $output .= xmlrecord($value, 'dc:publisher', '', $indent);
    } elseif ($dc_type_id > 39 && $dc_type_id < 53) {
        $output .= xmlrecord($value, 'dc:relation', '', $indent);
    } elseif ($dc_type_id > 52 && $dc_type_id < 55) {
        $output .= xmlrecord($value, 'dc:rights', '', $indent);
    } elseif ($dc_type_id > 55 && $dc_type_id < 57) {
        $output .= xmlrecord($value, 'dc:source', '', $indent);
    } elseif ($dc_type_id > 56 && $dc_type_id < 64) {
        $output .= xmlrecord($value, 'dc:subject', '', $indent);
    } elseif ($dc_type_id > 63 && $dc_type_id < 66) {
        $output .= xmlrecord($value, 'dc:title', '', $indent);
    } elseif ($dc_type_id == 66) {
        $output .= xmlrecord($value, 'dc:type', '', $indent);
    } elseif ($dc_type_id > 66 && $dc_type_id < 69) {
        $output .= xmlrecord($value, 'dc:type', '', $indent);
    }
}