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"; }
// 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";
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
// 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('&', '&', $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";
} // 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(); }
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); } }