Open Journal Systems  3.3.0
NativeFilterHelper.inc.php
1 <?php
16 
24  function createIssueIdentificationNode($filter, $doc, $issue) {
25  $deployment = $filter->getDeployment();
26  $vol = $issue->getVolume();
27  $num = $issue->getNumber();
28  $year = $issue->getYear();
29  $title = $issue->getTitle(null);
30  assert($issue->getShowVolume() || $issue->getShowNumber() || $issue->getShowYear() || $issue->getShowTitle());
31  $issueIdentificationNode = $doc->createElementNS($deployment->getNamespace(), 'issue_identification');
32  if ($issue->getShowVolume()) {
33  assert(!empty($vol));
34  $issueIdentificationNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(), 'volume', htmlspecialchars($vol, ENT_COMPAT, 'UTF-8')));
35  }
36  if ($issue->getShowNumber()) {
37  assert(!empty($num));
38  $issueIdentificationNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(), 'number', htmlspecialchars($num, ENT_COMPAT, 'UTF-8')));
39  }
40  if ($issue->getShowYear()) {
41  assert(!empty($year));
42  $issueIdentificationNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(), 'year', $year));
43  }
44  if ($issue->getShowTitle()) {
45  assert(!empty($title));
46  $filter->createLocalizedNodes($doc, $issueIdentificationNode, 'title', $title);
47  }
48  return $issueIdentificationNode;
49  }
50 
58  function createPublicationCoversNode($filter, $doc, $object) {
59  $deployment = $filter->getDeployment();
60 
61  $context = $deployment->getContext();
62 
63  $coversNode = null;
64  $coverImages = $object->getData('coverImage');
65  if (!empty($coverImages)) {
66  $coversNode = $doc->createElementNS($deployment->getNamespace(), 'covers');
67  foreach ($coverImages as $locale => $coverImage) {
68  $coverImageName = $coverImage['uploadName'];
69 
70  $coverNode = $doc->createElementNS($deployment->getNamespace(), 'cover');
71  $coverNode->setAttribute('locale', $locale);
72  $coverNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(), 'cover_image', htmlspecialchars($coverImageName, ENT_COMPAT, 'UTF-8')));
73  $coverNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(), 'cover_image_alt_text', htmlspecialchars($coverImage['altText'], ENT_COMPAT, 'UTF-8')));
74 
75  import('classes.file.PublicFileManager');
76  $publicFileManager = new PublicFileManager();
77 
78  $contextId = $context->getId();
79 
80  $filePath = $publicFileManager->getContextFilesPath($contextId) . '/' . $coverImageName;
81  $embedNode = $doc->createElementNS($deployment->getNamespace(), 'embed', base64_encode(file_get_contents($filePath)));
82  $embedNode->setAttribute('encoding', 'base64');
83  $coverNode->appendChild($embedNode);
84  $coversNode->appendChild($coverNode);
85  }
86  }
87  return $coversNode;
88  }
89 
97  function createIssueCoversNode($filter, $doc, $object) {
98  $deployment = $filter->getDeployment();
99  $coversNode = null;
100  $coverImages = $object->getCoverImage(null);
101  if (!empty($coverImages)) {
102  $coversNode = $doc->createElementNS($deployment->getNamespace(), 'covers');
103  foreach ($coverImages as $locale => $coverImage) {
104  $coverNode = $doc->createElementNS($deployment->getNamespace(), 'cover');
105  $coverNode->setAttribute('locale', $locale);
106  $coverNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(), 'cover_image', htmlspecialchars($coverImage, ENT_COMPAT, 'UTF-8')));
107  $coverNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(), 'cover_image_alt_text', htmlspecialchars($object->getCoverImageAltText($locale), ENT_COMPAT, 'UTF-8')));
108 
109  import('classes.file.PublicFileManager');
110  $publicFileManager = new PublicFileManager();
111  $filePath = $publicFileManager->getContextFilesPath($object->getJournalId()) . '/' . $coverImage;
112  $embedNode = $doc->createElementNS($deployment->getNamespace(), 'embed', base64_encode(file_get_contents($filePath)));
113  $embedNode->setAttribute('encoding', 'base64');
114  $coverNode->appendChild($embedNode);
115  $coversNode->appendChild($coverNode);
116  }
117  }
118  return $coversNode;
119  }
120 
127  function parsePublicationCovers($filter, $node, $object) {
128  $deployment = $filter->getDeployment();
129 
130  $coverImages = array();
131 
132  for ($n = $node->firstChild; $n !== null; $n=$n->nextSibling) {
133  if (is_a($n, 'DOMElement')) {
134  switch ($n->tagName) {
135  case 'cover':
136  $coverImage = $this->parsePublicationCover($filter, $n, $object);
137  $coverImages[key($coverImage)] = reset($coverImage);
138  break;
139  default:
140  $deployment->addWarning(ASSOC_TYPE_PUBLICATION, $object->getId(), __('plugins.importexport.common.error.unknownElement', array('param' => $n->tagName)));
141  }
142  }
143  }
144 
145  $object->setData('coverImage', $coverImages);
146  }
147 
154  function parseIssueCovers($filter, $node, $object) {
155  $deployment = $filter->getDeployment();
156  for ($n = $node->firstChild; $n !== null; $n=$n->nextSibling) {
157  if (is_a($n, 'DOMElement')) {
158  switch ($n->tagName) {
159  case 'cover':
160  $this->parseIssueCover($filter, $n, $object);
161  break;
162  default:
163  $deployment->addWarning(ASSOC_TYPE_ISSUE, $object->getId(), __('plugins.importexport.common.error.unknownElement', array('param' => $n->tagName)));
164  }
165  }
166  }
167  }
168 
175  function parsePublicationCover($filter, $node, $object) {
176  $deployment = $filter->getDeployment();
177 
178  $context = $deployment->getContext();
179 
180  $locale = $node->getAttribute('locale');
181  if (empty($locale)) $locale = $context->getPrimaryLocale();
182 
183  $coverImagelocale = array();
184  $coverImage = array();
185 
186  for ($n = $node->firstChild; $n !== null; $n=$n->nextSibling) {
187  if (is_a($n, 'DOMElement')) {
188  switch ($n->tagName) {
189  case 'cover_image':
190  $coverImage['uploadName'] = $n->textContent;
191  break;
192  case 'cover_image_alt_text':
193  $coverImage['altText'] = $n->textContent;
194  break;
195  case 'embed':
196  import('classes.file.PublicFileManager');
197  $publicFileManager = new PublicFileManager();
198  $filePath = $publicFileManager->getContextFilesPath($context->getId()) . '/' . $coverImage['uploadName'];
199  file_put_contents($filePath, base64_decode($n->textContent));
200  break;
201  default:
202  $deployment->addWarning(ASSOC_TYPE_PUBLICATION, $object->getId(), __('plugins.importexport.common.error.unknownElement', array('param' => $n->tagName)));
203  }
204  }
205  }
206 
207  $coverImagelocale[$locale] = $coverImage;
208 
209  return $coverImagelocale;
210  }
211 
218  function parseIssueCover($filter, $node, $object) {
219  $deployment = $filter->getDeployment();
220  $context = $deployment->getContext();
221  $locale = $node->getAttribute('locale');
222  if (empty($locale)) $locale = $context->getPrimaryLocale();
223  for ($n = $node->firstChild; $n !== null; $n=$n->nextSibling) {
224  if (is_a($n, 'DOMElement')) {
225  switch ($n->tagName) {
226  case 'cover_image': $object->setCoverImage($n->textContent, $locale); break;
227  case 'cover_image_alt_text': $object->setCoverImageAltText($n->textContent, $locale); break;
228  case 'embed':
229  import('classes.file.PublicFileManager');
230  $publicFileManager = new PublicFileManager();
231  $filePath = $publicFileManager->getContextFilesPath($context->getId()) . '/' . $object->getCoverImage($locale);
232  file_put_contents($filePath, base64_decode($n->textContent));
233  break;
234  default:
235  $deployment->addWarning(ASSOC_TYPE_ISSUE, $object->getId(), __('plugins.importexport.common.error.unknownElement', array('param' => $n->tagName)));
236  }
237  }
238  }
239  }
240 
241 }
NativeFilterHelper\parseIssueCovers
parseIssueCovers($filter, $node, $object)
Definition: NativeFilterHelper.inc.php:154
NativeFilterHelper\parseIssueCover
parseIssueCover($filter, $node, $object)
Definition: NativeFilterHelper.inc.php:218
NativeFilterHelper\parsePublicationCovers
parsePublicationCovers($filter, $node, $object)
Definition: NativeFilterHelper.inc.php:127
PublicFileManager
Wrapper class for uploading files to a site/journal's public directory.
Definition: PublicFileManager.inc.php:18
NativeFilterHelper\createPublicationCoversNode
createPublicationCoversNode($filter, $doc, $object)
Definition: NativeFilterHelper.inc.php:58
NativeFilterHelper\createIssueCoversNode
createIssueCoversNode($filter, $doc, $object)
Definition: NativeFilterHelper.inc.php:97
NativeFilterHelper\createIssueIdentificationNode
createIssueIdentificationNode($filter, $doc, $issue)
Definition: NativeFilterHelper.inc.php:24
NativeFilterHelper\parsePublicationCover
parsePublicationCover($filter, $node, $object)
Definition: NativeFilterHelper.inc.php:175
NativeFilterHelper
Class that provides native import/export filter-related helper methods.
Definition: NativeFilterHelper.inc.php:15