Hello,
I have problem with OAI metadata. My OJS version is OJS 3.1.2.1. I turned on all debugging in my testing environment. The URL is
https://oai.online-journal.unja.ac.id/mankeu/oai?verb=GetRecord&identifier=oai%3Aojs%2Epkp%2Esfu%2Eca%3Aarticle/1776&metadataPrefix=oai_dc
Fatal error : Uncaught Error: Call to a member function getProperties() on null in /home/onlinejournal/oai.online-journal.unja.ac.id/lib/pkp/plugins/oaiMetadataFormats/dc/PKPOAIMetadataFormat_DC.inc.php:31
Stack trace: #0 /home/onlinejournal/oai.online-journal.unja.ac.id/plugins/oaiMetadataFormats/dc/OAIMetadataFormat_DC.inc.php(28): PKPOAIMetadataFormat_DC->toXml(Object(PublishedArticle), NULL) #1 /home/onlinejournal/oai.online-journal.unja.ac.id/lib/pkp/classes/oai/OAI.inc.php(785): OAIMetadataFormat_DC->toXml(Object(OAIRecord))
#2 /home/onlinejournal/oai.online-journal.unja.ac.id/lib/pkp/classes/oai/OAI.inc.php(243): OAI->formatMetadata(‘oai_dc’, Object(OAIRecord))
#3 /home/onlinejournal/oai.online-journal.unja.ac.id/lib/pkp/classes/oai/OAI.inc.php(73): OAI->GetRecord()
#4 /home/onlinejournal/oai.online-journal.unja.ac.id/pages/oai/OAIHandler.inc.php(39): OAI->execute()
#5 /home/onlinejournal/oai.online-journal.unja.ac.id/lib/pkp/classes/core/PKPRouter.inc.php(390): OAIHandler->index(Array, Object(Request))
#6 /home/onl in /home/onlinejournal/oai.online-journal.unja.ac.id/lib/pkp/plugins/oaiMetadataFormats/dc/PKPOAIMetadataFormat_DC.inc.php on line 31
I checked the source code
function toXml($dataObject, $format = null) {
....
line 22 $dcDescription = $dataObject->extractMetadata(new Dc11Schema());
line 24 $response = "<oai_dc:dc\n" .
"\txmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\"\n" .
"\txmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n" .
"\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" .
"\txsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/oai_dc/\n" .
"\thttp://www.openarchives.org/OAI/2.0/oai_dc.xsd\">\n";
line 31 foreach($dcDescription->getProperties() as $propertyName => $property) { /* @var $property MetadataProperty */
it seems that $dcDescription is null, so the loop fails.
I took sample with some article id, all of them have $dcDescription null.
if I put condition before loop
if ($dcDescription is null), the scripts success, but the metadata is empty.
Does anyone have any suggestions that could fix this for me?
Thank you
Mohamad Ilhami
Jambi University