Open Monograph Press  3.3.0
NativeXmlMonographFilter.inc.php
1 <?php
2 
16 import('lib.pkp.plugins.importexport.native.filter.NativeXmlSubmissionFilter');
17 
23  function __construct($filterGroup) {
24  parent::__construct($filterGroup);
25  }
26 
27 
28  //
29  // Implement template methods from PersistableFilter
30  //
34  function getClassName() {
35  return 'plugins.importexport.native.filter.NativeXmlMonographFilter';
36  }
37 
43  function &process(&$document) {
44  $importedObjects =& parent::process($document);
45 
46  // Index imported content
47  $monographSearchIndex = Application::getSubmissionSearchIndex();
48  foreach ($importedObjects as $submission) {
49  assert(is_a($submission, 'Submission'));
50  $monographSearchIndex->submissionMetadataChanged($submission);
51  $monographSearchIndex->submissionFilesChanged($submission);
52  }
53  $monographSearchIndex->submissionChangesFinished();
54 
55  return $importedObjects;
56  }
57 
64  function populateObject($submission, $node) {
65  $deployment = $this->getDeployment();
66 
67  $workType = $node->getAttribute('work_type');
68  $submission->setData('workType', $workType);
69 
70  return parent::populateObject($submission, $node);
71  }
72 
78  function handleChildElement($n, $submission) {
79  switch ($n->tagName) {
80  case 'artwork_file':
81  case 'supplementary_file':
82  $this->parseSubmissionFile($n, $submission);
83  break;
84  case 'publication':
85  $this->parsePublication($n, $submission);
86  break;
87  default:
88  parent::handleChildElement($n, $submission);
89  }
90  }
91 
97  function getImportFilter($elementName) {
98  $deployment = $this->getDeployment();
99  $submission = $deployment->getSubmission();
100  $importClass = null; // Scrutinizer
101  switch ($elementName) {
102  case 'submission_file':
103  $importClass='SubmissionFile';
104  break;
105  case 'artwork_file':
106  $importClass='SubmissionArtworkFile';
107  break;
108  case 'supplementary_file':
109  $importClass='SupplementaryFile';
110  break;
111  case 'publication':
112  $importClass='Publication';
113  break;
114  default:
115  $deployment->addError(ASSOC_TYPE_SUBMISSION, $submission->getId(), __('plugins.importexport.common.error.unknownElement', array('param' => $elementName)));
116  }
117  // Caps on class name for consistency with imports, whose filter
118  // group names are generated implicitly.
119  $filterDao = DAORegistry::getDAO('FilterDAO'); /* @var $filterDao FilterDAO */
120  $importFilters = $filterDao->getObjectsByGroup('native-xml=>' . $importClass);
121  $importFilter = array_shift($importFilters);
122  return $importFilter;
123  }
124 
130  function parsePublication($n, $submission) {
131  $importFilter = $this->getImportFilter($n->tagName);
132  assert($importFilter); // There should be a filter
133 
134  $existingDeployment = $this->getDeployment();
135  $request = Application::get()->getRequest();
136 
137  $importFilter->setDeployment($existingDeployment);
138  $formatDoc = new DOMDocument();
139  $formatDoc->appendChild($formatDoc->importNode($n, true));
140  return $importFilter->execute($formatDoc);
141  }
142 }
143 
144 
NativeXmlMonographFilter\getImportFilter
getImportFilter($elementName)
Definition: NativeXmlMonographFilter.inc.php:97
NativeXmlMonographFilter
Class that converts a Native XML document to a set of monographs.
Definition: NativeXmlMonographFilter.inc.php:18
NativeXmlMonographFilter\__construct
__construct($filterGroup)
Definition: NativeXmlMonographFilter.inc.php:23
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
NativeXmlMonographFilter\populateObject
populateObject($submission, $node)
Definition: NativeXmlMonographFilter.inc.php:64
NativeImportExportFilter\getDeployment
getDeployment()
Definition: NativeImportExportFilter.inc.php:49
NativeXmlSubmissionFilter\parseSubmissionFile
parseSubmissionFile($n, $submission)
Definition: NativeXmlSubmissionFilter.inc.php:167
NativeXmlMonographFilter\process
& process(&$document)
Definition: NativeXmlMonographFilter.inc.php:43
NativeXmlMonographFilter\parsePublication
parsePublication($n, $submission)
Definition: NativeXmlMonographFilter.inc.php:130
NativeXmlMonographFilter\handleChildElement
handleChildElement($n, $submission)
Definition: NativeXmlMonographFilter.inc.php:78
Application\getSubmissionSearchIndex
static getSubmissionSearchIndex()
Definition: Application.inc.php:167
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
NativeXmlSubmissionFilter
Base class that converts a Native XML document to a set of submissions.
Definition: NativeXmlSubmissionFilter.inc.php:18
NativeXmlMonographFilter\getClassName
getClassName()
Definition: NativeXmlMonographFilter.inc.php:34