16 import(
'lib.pkp.plugins.importexport.native.filter.NativeImportFilter');
25 parent::__construct($filterGroup);
36 return 'lib.pkp.plugins.importexport.native.filter.NativeXmlPKPPublicationFilter';
48 return 'publications';
65 $context = $deployment->getContext();
67 $submission = $deployment->getSubmission();
71 $publication = $publicationDao->newDataObject();
73 $publication->setData(
'submissionId', $submission->getId());
75 $publication->stampModified();
78 $publicationLocale = $node->getAttribute(
'locale');
79 if (empty($publicationLocale))
80 $publicationLocale = $context->getPrimaryLocale();
82 $publication->setData(
'locale', $publicationLocale);
83 $publication->setData(
'version', $node->getAttribute(
'version'));
84 $publication->setData(
'seq', $node->getAttribute(
'seq'));
85 $publication->setData(
'accessStatus', $node->getAttribute(
'access_status'));
86 $publication->setData(
'status', $node->getAttribute(
'status'));
87 $publication->setData(
'primaryContactId', $node->getAttribute(
'primary_contact_id'));
88 $publication->setData(
'urlPath', $node->getAttribute(
'url_path'));
91 $deployment->setPublication($publication);
93 for ($n = $node->firstChild; $n !==
null; $n=$n->nextSibling) {
94 if (is_a($n,
'DOMElement')) {
112 if ($datePublished = $node->getAttribute(
'date_published')) {
113 $publication->setData(
'datePublished', $datePublished);
129 if (empty($locale)) $locale = $publication->getData(
'locale');
131 if (in_array($n->tagName, $setterMappings)) {
132 $publication->setData($n->tagName, $value, $locale);
133 } elseif (isset($controlledVocabulariesMappings[$n->tagName])) {
134 $controlledVocabulariesDao = $submissionKeywordDao =
DAORegistry::getDAO($controlledVocabulariesMappings[$n->tagName][0]);
135 $insertFunction = $controlledVocabulariesMappings[$n->tagName][1];
137 $controlledVocabulary = array();
138 for ($nc = $n->firstChild; $nc !==
null; $nc=$nc->nextSibling) {
139 if (is_a($nc,
'DOMElement')) {
140 $controlledVocabulary[] = $nc->textContent;
144 $controlledVocabulariesValues = array();
145 $controlledVocabulariesValues[$locale] = $controlledVocabulary;
147 $controlledVocabulariesDao->$insertFunction($controlledVocabulariesValues, $publication->getId(),
false);
149 $publicationNew =
Services::get(
'publication')->get($publication->getId());
150 $publication->setData($n->tagName, $publicationNew->getData($n->tagName));
151 }
else switch ($n->tagName) {
162 case 'copyrightYear':
163 $publication->setData(
'copyrightYear', $n->textContent);
166 $publication->setData(
'licenseUrl', $n->textContent);
170 $deployment->addWarning(ASSOC_TYPE_PUBLICATION, $publication->getId(), __(
'plugins.importexport.common.error.unknownElement', array(
'param' => $n->tagName)));
184 $submission = $deployment->getSubmission();
186 $advice = $element->getAttribute(
'advice');
187 switch ($element->getAttribute(
'type')) {
190 assert(!$advice || $advice ==
'ignore');
192 if ($element->textContent == $submission->getData(
'currentPublicationId')) {
193 $submission->setData(
'currentPublicationId', $publication->getId());
198 if ($advice ==
'update') {
199 $publication->setData(
'pub-id::publisher-id', $element->textContent);
203 if ($advice ==
'update') {
205 $publication->setData(
'pub-id::'.$element->getAttribute(
'type'), $element->textContent);
216 for ($n = $node->firstChild; $n !==
null; $n=$n->nextSibling) {
217 if (is_a($n,
'DOMElement')) {
218 assert($n->tagName ==
'author');
231 $importFilters = $filterDao->getObjectsByGroup(
'native-xml=>author');
232 assert(count($importFilters)==1);
233 $importFilter = array_shift($importFilters);
235 $authorDoc =
new DOMDocument();
236 $authorDoc->appendChild($authorDoc->importNode($n,
true));
237 return $importFilter->execute($authorDoc);
246 $publicationId = $publication->getId();
247 $citationsString = $n->textContent;
249 $citationDao->importCitations($publicationId, $citationsString);
279 'keywords' => array(
'SubmissionKeywordDAO',
'insertKeywords'),
280 'agencies' => array(
'SubmissionAgencyDAO',
'insertAgencies'),
281 'disciplines' => array(
'SubmissionDisciplineDAO',
'insertDisciplines'),
282 'subjects' => array(
'SubmissionSubjectDAO',
'insertSubjects'),