subugoe / oai-model
OAI-PMH Model
0.2.0
2026-07-09 07:37 UTC
Requires
- php: >= 8.4.0 <=8.5.99
- doctrine/collections: *
- jms/serializer: *
- subugoe/iiif-model: *
Requires (Dev)
README
This library defines OAI-PMH models for an HTTP-interface to retrieve OAI data.
In a Symfony application, the models kann be filled programmatically like that for the Identify-verb:
// assume we injected some service at $this->oaiService $identify = new new \Subugoe\OaiModel\Model\Identify\Identify(); $identification = new \Subugoe\OaiModel\Model\Identify\Identification(); $description = new \Subugoe\OaiModel\Model\Identify\Description(); $oaiIdentifier = new \Subugoe\OaiModel\Model\Identify\OaiIdentifier(); $oaiIdentifierTags = $oaiConfiguration['oai_identifier']; $oaiIdentifier ->setNamespace($oaiIdentifierTags['xmlns']) ->setXsi($oaiIdentifierTags['xmlns:xsi']) ->setSchemaLocation($oaiIdentifierTags['xsi:schemaLocation']) ->setScheme($oaiIdentifierTags['scheme']) ->setDelimiter($oaiIdentifierTags['delimiter']) ->setRepositoryIdentifier($oaiIdentifierTags['repositoryIdentifier']) ->setSampleIdentifier($oaiIdentifierTags['sampleIdentifier']); $description->setOaiIdentifier($oaiIdentifier); $identificationTags = $oaiConfiguration['identification_tags']; $oaiRequest = (new \Subugoe\OaiModel\Model\Request()) ->setUrl($url) ->setVerb('Identify'); $identify ->setDate(new DateTimeImmutable()) ->setRequest($oaiRequest); $identification ->setAdminEmail($identificationTags['admin_email']) ->setBaseUrl($identificationTags['base_url']) ->setDeletedRecord($identificationTags['deleted_record']) ->setGranularity($identificationTags['granularity']) ->setProtocolVersion($identificationTags['protocol_version']) ->setRepositoryName($identificationTags['repository_name']) ->setEarliestDatestamp(new DateTimeImmutable('1998-03-01T00:00:00Z')) ->setDescription($description); $identify->setIdentify($identification); $xml = $this->serializer->serialize($identify, 'xml');