16 import(
'lib.pkp.plugins.importexport.native.filter.NativeXmlPKPPublicationFilter');
26 return 'plugins.importexport.native.filter.NativeXmlPublicationFilter';
36 $context = $deployment->getContext();
37 $sectionAbbrev = $node->getAttribute(
'section_ref');
38 if ($sectionAbbrev !==
'') {
40 $section = $sectionDao->getByAbbrev($sectionAbbrev, $context->getId());
42 $deployment->addError(ASSOC_TYPE_SUBMISSION, NULL, __(
'plugins.importexport.native.error.unknownSection', array(
'param' => $sectionAbbrev)));
44 return parent::handleElement($node);
57 $context = $deployment->getContext();
59 $sectionAbbrev = $node->getAttribute(
'section_ref');
60 if ($sectionAbbrev !==
'') {
62 $section = $sectionDao->getByAbbrev($sectionAbbrev, $context->getId());
64 $deployment->addError(ASSOC_TYPE_PUBLICATION, $publication->getId(), __(
'plugins.importexport.native.error.unknownSection', array(
'param' => $sectionAbbrev)));
66 $publication->setData(
'sectionId', $section->getId());
70 $datePublished = $node->getAttribute(
'date_published');
71 $issue = $deployment->getIssue();
72 $issue_identification = $node->getElementsByTagName(
'issue_identification');
73 if (!$datePublished && ($issue || $issue_identification->length)) {
74 $titleNodes = $node->getElementsByTagName(
'title');
75 $deployment->addError(ASSOC_TYPE_PUBLICATION, $publication->getId(), __(
'plugins.importexport.native.import.error.publishedDateMissing', array(
'publicationTitle' => $titleNodes->item(0)->textContent)));
80 return parent::populateObject($publication, $node);
89 switch ($n->tagName) {
90 case 'article_galley':
93 case 'issue_identification':
97 $publication->setData(
'pages', $n->textContent);
100 import(
'plugins.importexport.native.filter.NativeFilterHelper');
102 $nativeFilterHelper->parsePublicationCovers($this, $n, $publication);
105 parent::handleChildElement($n, $publication);
116 $submission = $deployment->getSubmission();
117 switch ($elementName) {
118 case 'article_galley':
119 $importClass=
'ArticleGalley';
123 $deployment->addWarning(ASSOC_TYPE_SUBMISSION, $submission->getId(), __(
'plugins.importexport.common.error.unknownElement', array(
'param' => $elementName)));
128 $importFilters = $filterDao->getObjectsByGroup(
'native-xml=>' . $importClass);
129 $importFilter = array_shift($importFilters);
130 return $importFilter;
140 assert(isset($importFilter));
143 $articleGalleyDoc =
new DOMDocument();
144 $articleGalleyDoc->appendChild($articleGalleyDoc->importNode($n,
true));
145 return $importFilter->execute($articleGalleyDoc);
157 $context = $deployment->getContext();
158 $issue = $deployment->getIssue();
161 $issueIdentificationNodes = $node->getElementsByTagName(
'issue_identification');
163 if ($issueIdentificationNodes->length != 1) {
164 $titleNodes = $node->getElementsByTagName(
'title');
165 $deployment->addError(ASSOC_TYPE_PUBLICATION, $publication->getId(), __(
'plugins.importexport.native.import.error.issueIdentificationMissing', array(
'articleTitle' => $titleNodes->item(0)->textContent)));
167 $issueIdentificationNode = $issueIdentificationNodes->item(0);
173 $publication->setData(
'issueId', $issue->getId());
186 $context = $deployment->getContext();
188 $vol = $num = $year =
null;
190 for ($n = $node->firstChild; $n !==
null; $n=$n->nextSibling) {
191 if (is_a($n,
'DOMElement')) {
192 switch ($n->tagName) {
194 $vol = $n->textContent;
197 $num = $n->textContent;
200 $year = $n->textContent;
204 if (empty($locale)) $locale = $context->getPrimaryLocale();
205 $titles[$locale] = $value;
208 $deployment->addWarning(ASSOC_TYPE_PUBLICATION, $publication->getId(), __(
'plugins.importexport.common.error.unknownElement', array(
'param' => $n->tagName)));
214 $issuesByIdentification = $issueDao->getIssuesByIdentification($context->getId(), $vol, $num, $year, $titles);
215 if ($issuesByIdentification->getCount() != 1) {
216 $deployment->addError(ASSOC_TYPE_PUBLICATION, $publication->getId(), __(
'plugins.importexport.native.import.error.issueIdentificationMatch', array(
'issueIdentification' => $node->ownerDocument->saveXML($node))));
218 $issue = $issuesByIdentification->next();
221 if (!isset($issue)) {
222 $issue = $issueDao->newDataObject();
224 $issue->setVolume($vol);
225 $issue->setNumber($num);
226 $issue->setYear($year);
227 $issue->setShowVolume(1);
228 $issue->setShowNumber(1);
229 $issue->setShowYear(1);
230 $issue->setShowTitle(0);
231 $issue->setCurrent(0);
232 $issue->setPublished(0);
233 $issue->setAccessStatus(0);
234 $issue->setJournalId($context->getId());
235 $issue->setTitle($titles,
null);
237 $issueId = $issueDao->insertObject($issue);
239 $issue->setId($issueId);