16 import(
'lib.pkp.plugins.importexport.native.filter.NativeExportFilter');
25 parent::__construct($filterGroup);
35 return 'plugins.importexport.crossref.filter.IssueCrossrefXmlFilter';
48 $doc =
new DOMDocument(
'1.0',
'utf-8');
49 $doc->preserveWhiteSpace =
false;
50 $doc->formatOutput =
true;
52 $context = $deployment->getContext();
56 $doc->appendChild($rootNode);
62 $bodyNode = $doc->createElementNS($deployment->getNamespace(),
'body');
63 $rootNode->appendChild($bodyNode);
65 foreach($pubObjects as $pubObject) {
68 $bodyNode->appendChild($journalNode);
83 $rootNode = $doc->createElementNS($deployment->getNamespace(), $deployment->getRootElementName());
84 $rootNode->setAttributeNS(
'http://www.w3.org/2000/xmlns/',
'xmlns:xsi', $deployment->getXmlSchemaInstance());
85 $rootNode->setAttributeNS(
'http://www.w3.org/2000/xmlns/',
'xmlns:jats', $deployment->getJATSNamespace());
86 $rootNode->setAttributeNS(
'http://www.w3.org/2000/xmlns/',
'xmlns:ai', $deployment->getAINamespace());
87 $rootNode->setAttribute(
'version', $deployment->getXmlSchemaVersion());
88 $rootNode->setAttribute(
'xsi:schemaLocation', $deployment->getNamespace() .
' ' . $deployment->getSchemaFilename());
99 $context = $deployment->getContext();
100 $plugin = $deployment->getPlugin();
101 $headNode = $doc->createElementNS($deployment->getNamespace(),
'head');
102 $headNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'doi_batch_id', htmlspecialchars($context->getData(
'initials', $context->getPrimaryLocale()) .
'_' . time(), ENT_COMPAT,
'UTF-8')));
103 $headNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'timestamp', time()));
104 $depositorNode = $doc->createElementNS($deployment->getNamespace(),
'depositor');
105 $depositorName = $plugin->getSetting($context->getId(),
'depositorName');
106 if (empty($depositorName)) {
107 $depositorName = $context->getData(
'supportName');
109 $depositorEmail = $plugin->getSetting($context->getId(),
'depositorEmail');
110 if (empty($depositorEmail)) {
111 $depositorEmail = $context->getData(
'supportEmail');
113 $depositorNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'depositor_name', htmlspecialchars($depositorName, ENT_COMPAT,
'UTF-8')));
114 $depositorNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'email_address', htmlspecialchars($depositorEmail, ENT_COMPAT,
'UTF-8')));
115 $headNode->appendChild($depositorNode);
116 $publisherInstitution = $context->getData(
'publisherInstitution');
117 $headNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'registrant', htmlspecialchars($publisherInstitution, ENT_COMPAT,
'UTF-8')));
129 $journalNode = $doc->createElementNS($deployment->getNamespace(),
'journal');
142 $context = $deployment->getContext();
144 $journalMetadataNode = $doc->createElementNS($deployment->getNamespace(),
'journal_metadata');
146 $journalTitle = $context->getName($context->getPrimaryLocale());
148 if ($journalTitle ==
'') {
149 $journalTitle = $context->getData(
'abbreviation', $context->getPrimaryLocale());
151 $journalMetadataNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'full_title', htmlspecialchars($journalTitle, ENT_COMPAT,
'UTF-8')));
153 $journalAbbrev = $context->getData(
'abbreviation', $context->getPrimaryLocale());
154 if ( $journalAbbrev ==
'' ) {
155 $journalAbbrev = $context->getData(
'acronym', $context->getPrimaryLocale());
157 $journalMetadataNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'abbrev_title', htmlspecialchars($journalAbbrev, ENT_COMPAT,
'UTF-8')));
159 if ($ISSN = $context->getData(
'onlineIssn') ) {
160 $journalMetadataNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'issn', $ISSN));
161 $node->setAttribute(
'media_type',
'electronic');
164 if ($ISSN = $context->getData(
'printIssn') ) {
165 $journalMetadataNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'issn', $ISSN));
166 $node->setAttribute(
'media_type',
'print');
168 return $journalMetadataNode;
179 $context = $deployment->getContext();
180 $deployment->setIssue($issue);
182 $journalIssueNode = $doc->createElementNS($deployment->getNamespace(),
'journal_issue');
183 if ($issue->getDatePublished()) {
186 if ($issue->getVolume() && $issue->getShowVolume()){
187 $journalVolumeNode = $doc->createElementNS($deployment->getNamespace(),
'journal_volume');
188 $journalVolumeNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'volume', htmlspecialchars($issue->getVolume(), ENT_COMPAT,
'UTF-8')));
189 $journalIssueNode->appendChild($journalVolumeNode);
191 if ($issue->getNumber() && $issue->getShowNumber()) {
192 $journalIssueNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'issue', htmlspecialchars($issue->getNumber(), ENT_COMPAT,
'UTF-8')));
194 if ($issue->getDatePublished() && $issue->getStoredPubId(
'doi')) {
196 $journalIssueNode->appendChild($this->
createDOIDataNode($doc, $issue->getStoredPubId(
'doi'), $request->url($context->getPath(),
'issue',
'view', $issue->getBestIssueId($context),
null,
null,
true)));
198 return $journalIssueNode;
209 $publicationDate = strtotime($objectPublicationDate);
210 $publicationDateNode = $doc->createElementNS($deployment->getNamespace(),
'publication_date');
211 $publicationDateNode->setAttribute(
'media_type',
'online');
212 if (date(
'm', $publicationDate)) {
213 $publicationDateNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'month', date(
'm', $publicationDate)));
215 if (date(
'd', $publicationDate)) {
216 $publicationDateNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'day', date(
'd', $publicationDate)));
218 $publicationDateNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'year', date(
'Y', $publicationDate)));
219 return $publicationDateNode;
231 $doiDataNode = $doc->createElementNS($deployment->getNamespace(),
'doi_data');
232 $doiDataNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'doi', htmlspecialchars($doi, ENT_COMPAT,
'UTF-8')));
233 $doiDataNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'resource', $url));