<?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'); } 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) { if ($count) { return 1; } if ($set != '') { throw new OAI2Exception('noSetHierarchy'); } if ($metadataPrefix != 'oai_dc') { throw new OAI2Exception('noRecordsMatch'); } return array($example_record); }, 'GetRecord' => function($identifier, $metadataPrefix) use ($example_record) { if ($identifier != 'a.b.c') { throw new OAI2Exception('idDoesNotExist'); } 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(); }