125 lines
6.7 KiB
PHP
125 lines
6.7 KiB
PHP
<?php
|
|
|
|
require_once('oai2server.php');
|
|
|
|
/**
|
|
* Identifier settings. It needs to have proper values to reflect the settings of the data provider.
|
|
* Is MUST be declared in this order
|
|
*
|
|
* - $identifyResponse['repositoryName'] : compulsory. A human readable name for the repository;
|
|
* - $identifyResponse['baseURL'] : compulsory. The base URL of the repository;
|
|
* - $identifyResponse['protocolVersion'] : compulsory. The version of the OAI-PMH supported by the repository;
|
|
* - $identifyResponse['earliestDatestamp'] : compulsory. A UTCdatetime that is the guaranteed lower limit of all datestamps recording changes, modifications, or deletions in the repository. A repository must not use datestamps lower than the one specified by the content of the earliestDatestamp element. earliestDatestamp must be expressed at the finest granularity supported by the repository.
|
|
* - $identifyResponse['deletedRecord'] : the manner in which the repository supports the notion of deleted records. Legitimate values are no ; transient ; persistent with meanings defined in the section on deletion.
|
|
* - $identifyResponse['granularity'] : the finest harvesting granularity supported by the repository. The legitimate values are YYYY-MM-DD and YYYY-MM-DDThh:mm:ssZ with meanings as defined in ISO8601.
|
|
*
|
|
*/
|
|
$identifyResponse = array();
|
|
$identifyResponse["repositoryName"] = 'OAI2 PMH Test';
|
|
$identifyResponse["baseURL"] = 'http://198.199.108.242/~neis/oai_pmh/oai2.php';
|
|
$identifyResponse["protocolVersion"] = '2.0';
|
|
$identifyResponse['adminEmail'] = 'danielneis@gmail.com';
|
|
$identifyResponse["earliestDatestamp"] = '2013-01-01T12:00:00Z';
|
|
$identifyResponse["deletedRecord"] = 'no'; // How your repository handles deletions
|
|
// no: The repository does not maintain status about deletions.
|
|
// It MUST NOT reveal a deleted status.
|
|
// persistent: The repository persistently keeps track about deletions
|
|
// with no time limit. It MUST consistently reveal the status
|
|
// of a deleted record over time.
|
|
// transient: The repository does not guarantee that a list of deletions is
|
|
// maintained. It MAY reveal a deleted status for records.
|
|
$identifyResponse["granularity"] = 'YYYY-MM-DDThh:mm:ssZ';
|
|
|
|
$example_record = array('identifier' => 'a.b.c',
|
|
'datestamp' => date('Y-m-d-H:s'),
|
|
'set' => 'class:activity',
|
|
'metadata' => array(
|
|
'container_name' => 'oai_dc:dc',
|
|
'container_attributes' => array(
|
|
'xmlns:oai_dc' => "http://www.openarchives.org/OAI/2.0/oai_dc/",
|
|
'xmlns:dc' => "http://purl.org/dc/elements/1.1/",
|
|
'xmlns:xsi' => "http://www.w3.org/2001/XMLSchema-instance",
|
|
'xsi:schemaLocation' =>
|
|
'http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd'
|
|
),
|
|
'fields' => array(
|
|
'dc:title' => 'Testing records',
|
|
'dc:author' => 'Neis'
|
|
)
|
|
));
|
|
|
|
/* unit tests ;) */
|
|
if (!isset($args)) {
|
|
$args = $_GET;
|
|
}
|
|
if (!isset($uri)) {
|
|
$uri = 'test.oai_pmh';
|
|
}
|
|
$oai2 = new OAI2Server($uri, $args, $identifyResponse,
|
|
array(
|
|
'ListMetadataFormats' =>
|
|
function($identifier = '') {
|
|
if (!empty($identifier) && $identifier != 'a.b.c') {
|
|
throw new OAI2Exception('idDoesNotExist', '', $identifier);
|
|
}
|
|
return
|
|
array('rif' => array('metadataPrefix'=>'rif',
|
|
'schema'=>'http://services.ands.org.au/sandbox/orca/schemata/registryObjects.xsd',
|
|
'metadataNamespace'=>'http://ands.org.au/standards/rif-cs/registryObjects/',
|
|
),
|
|
'oai_dc' => array('metadataPrefix'=>'oai_dc',
|
|
'schema'=>'http://www.openarchives.org/OAI/2.0/oai_dc.xsd',
|
|
'metadataNamespace'=>'http://www.openarchives.org/OAI/2.0/oai_dc/',
|
|
'record_prefix'=>'dc',
|
|
'record_namespace' => 'http://purl.org/dc/elements/1.1/'));
|
|
},
|
|
|
|
'ListSets' =>
|
|
function($resumptionToken = '') {
|
|
return
|
|
array (
|
|
array('setSpec'=>'class:collection', 'setName'=>'Collections'),
|
|
array('setSpec'=>'math', 'setName'=>'Mathematics') ,
|
|
array('setSpec'=>'phys', 'setName'=>'Physics'),
|
|
array('setSpec'=>'phdthesis', 'setName'=>'PHD Thesis',
|
|
'setDescription'=>
|
|
'<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" '.
|
|
' xmlns:dc="http://purl.org/dc/elements/1.1/" '.
|
|
' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '.
|
|
' xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ '.
|
|
' http://www.openarchives.org/OAI/2.0/oai_dc.xsd"> '.
|
|
' <dc:description>This set contains metadata describing '.
|
|
' electronic music recordings made during the 1950ies</dc:description> '.
|
|
' </oai_dc:dc>'));
|
|
},
|
|
|
|
'ListRecords' =>
|
|
function($metadataPrefix, $from = '', $until = '', $set = '', $count = false, $deliveredRecords = 0, $maxItems = 0) use ($example_record) {
|
|
// throws new OAI2Exception('noRecordsMatch')
|
|
// throws new OAI2Exception('noSetHierarchy')
|
|
if ($count) {
|
|
return 1;
|
|
}
|
|
return array($example_record);
|
|
},
|
|
|
|
'GetRecord' =>
|
|
function($identifier, $metadataPrefix) use ($example_record) {
|
|
if ($identifier != 'a.b.c') {
|
|
throw new OAI2Exception('idDoesNotExist', '', $identifier);
|
|
}
|
|
return $example_record;
|
|
},
|
|
)
|
|
);
|
|
|
|
$response = $oai2->response();
|
|
if (isset($return)) {
|
|
return $response;
|
|
} else {
|
|
$response->formatOutput = true;
|
|
$response->preserveWhiteSpace = false;
|
|
header('Content-Type: text/xml');
|
|
echo $response->saveXML();
|
|
}
|