Open Journal Systems  3.3.0
NativeXmlIssueGalleyFilter.inc.php
1 <?php
2 
16 import('lib.pkp.plugins.importexport.native.filter.NativeImportFilter');
17 
23  function __construct($filterGroup) {
24  $this->setDisplayName('Native XML issue galley import');
25  parent::__construct($filterGroup);
26  }
27 
28  //
29  // Implement template methods from PersistableFilter
30  //
34  function getClassName() {
35  return 'plugins.importexport.native.filter.NativeXmlIssueGalleyFilter';
36  }
37 
38  //
39  // Override methods in NativeImportFilter
40  //
45  function getPluralElementName() {
46  return 'issue_galleys';
47  }
48 
54  return 'issue_galley';
55  }
56 
57  //
58  // Extend functions in the parent class
59  //
65  function handleElement($node) {
66  $deployment = $this->getDeployment();
67  $context = $deployment->getContext();
68  $issue = $deployment->getIssue();
69  assert(is_a($issue, 'Issue'));
70 
71  // Create the data object
72  $issueGalleyDao = DAORegistry::getDAO('IssueGalleyDAO'); /* @var $issueGalleyDao IssueGalleyDAO */
73  $issueGalley = $issueGalleyDao->newDataObject();
74  $issueGalley->setIssueId($issue->getId());
75  $locale = $node->getAttribute('locale');
76  if (empty($locale)) $locale = $context->getPrimaryLocale();
77  $issueGalley->setLocale($locale);
78  $issueGalley->setSequence($issueGalleyDao->getNextGalleySequence($issue->getId()));
79 
80  // Handle metadata in subelements.
81  for ($n = $node->firstChild; $n !== null; $n=$n->nextSibling) if (is_a($n, 'DOMElement')) switch($n->tagName) {
82  case 'id':
83  $this->parseIdentifier($n, $issueGalley);
84  break;
85  case 'label': $issueGalley->setLabel($n->textContent); break;
86  case 'issue_file':
87  $issueFileDao = DAORegistry::getDAO('IssueFileDAO'); /* @var $issueFileDao IssueFileDAO */
88  $issueFile = $issueFileDao->newDataObject();
89  $issueFile->setIssueId($issue->getId());
90 
91  for ($o = $n->firstChild; $o !== null; $o=$o->nextSibling) if (is_a($o, 'DOMElement')) switch($o->tagName) {
92  case 'file_name': $issueFile->setServerFileName($o->textContent); break;
93  case 'file_type': $issueFile->setFileType($o->textContent); break;
94  case 'file_size': $issueFile->setFileSize($o->textContent); break;
95  case 'content_type': $issueFile->setContentType((int)$o->textContent); break;
96  case 'original_file_name': $issueFile->setOriginalFileName($o->textContent); break;
97  case 'date_uploaded': $issueFile->setDateUploaded($o->textContent); break;
98  case 'date_modified': $issueFile->setDateModified($o->textContent); break;
99  case 'embed':
100  import('classes.file.IssueFileManager');
101  $issueFileManager = new IssueFileManager($issue->getId());
102  $filePath = $issueFileManager->getFilesDir() . $issueFileManager->contentTypeToPath($issueFile->getContentType()) . '/' . $issueFile->getServerFileName();
103  $issueFileManager->writeFile($filePath, base64_decode($o->textContent));
104  break;
105  }
106  $issueFileId = $issueFileDao->insertObject($issueFile);
107  $issueGalley->setFileId($issueFileId);
108  break;
109  }
110 
111  $issueGalleyDao->insertObject($issueGalley);
112  return $issueGalley;
113  }
114 
120  function parseIdentifier($element, $issue) {
121  $deployment = $this->getDeployment();
122  $advice = $element->getAttribute('advice');
123  switch ($element->getAttribute('type')) {
124  case 'internal':
125  // "update" advice not supported yet.
126  assert(!$advice || $advice == 'ignore');
127  break;
128  case 'public':
129  if ($advice == 'update') {
130  $issue->setStoredPubId('publisher-id', $element->textContent);
131  }
132  break;
133  }
134  }
135 }
136 
137 
NativeXmlIssueGalleyFilter\handleElement
handleElement($node)
Definition: NativeXmlIssueGalleyFilter.inc.php:65
IssueFileManager
Class defining operations for issue file management.
Definition: IssueFileManager.inc.php:22
NativeXmlIssueGalleyFilter\getSingularElementName
getSingularElementName()
Definition: NativeXmlIssueGalleyFilter.inc.php:53
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
NativeImportExportFilter\getDeployment
getDeployment()
Definition: NativeImportExportFilter.inc.php:49
NativeImportFilter
Base class that converts a Native XML document to a DataObject.
Definition: NativeImportFilter.inc.php:18
NativeXmlIssueGalleyFilter\parseIdentifier
parseIdentifier($element, $issue)
Definition: NativeXmlIssueGalleyFilter.inc.php:120
NativeXmlIssueGalleyFilter\getPluralElementName
getPluralElementName()
Definition: NativeXmlIssueGalleyFilter.inc.php:45
NativeXmlIssueGalleyFilter
Base class that converts a Native XML document to a set of issue galleys.
Definition: NativeXmlIssueGalleyFilter.inc.php:18
NativeXmlIssueGalleyFilter\getClassName
getClassName()
Definition: NativeXmlIssueGalleyFilter.inc.php:34
Filter\setDisplayName
setDisplayName($displayName)
Definition: Filter.inc.php:140
NativeXmlIssueGalleyFilter\__construct
__construct($filterGroup)
Definition: NativeXmlIssueGalleyFilter.inc.php:23