Open Journal Systems  3.3.0
PublicationNativeXmlFilter.inc.php
1 <?php
2 
16 import('lib.pkp.plugins.importexport.native.filter.PKPPublicationNativeXmlFilter');
17 
19  //
20  // Implement template methods from PersistableFilter
21  //
25  function getClassName() {
26  return 'plugins.importexport.native.filter.PublicationNativeXmlFilter';
27  }
28 
29 
30  //
31  // Implement abstract methods from SubmissionNativeXmlFilter
32  //
38  return 'article-galley=>native-xml';
39  }
40 
41  //
42  // Publication conversion functions
43  //
50  function createEntityNode($doc, $entity) {
51  $deployment = $this->getDeployment();
52  $entityNode = parent::createEntityNode($doc, $entity);
53 
54  // Add the series, if one is designated.
55  if ($sectionId = $entity->getData('sectionId')) {
56  $sectionDao = DAORegistry::getDAO('SectionDAO');
57  $section = $sectionDao->getById($sectionId);
58  assert(isset($section));
59  $entityNode->setAttribute('section_ref', $section->getLocalizedAbbrev());
60  }
61 
62  $isPublished = $entity->getData('status') === STATUS_PUBLISHED;
63  $isPublished ? $entityNode->setAttribute('seq', (int) $entity->getData('seq')) : $entityNode->setAttribute('seq', '0');
64  $isPublished ? $entityNode->setAttribute('access_status', $entity->getData('accessStatus')) : $entityNode->setAttribute('access_status', '0');
65 
66  // if this is a published submission and not part/subelement of an issue element
67  // add issue identification element
68  if ($entity->getData('issueId') && !$deployment->getIssue()) {
69  $issueDao = DAORegistry::getDAO('IssueDAO');
70  $issue = $issueDao->getById($entity->getData('issueId'));
71  import('plugins.importexport.native.filter.NativeFilterHelper');
72  $nativeFilterHelper = new NativeFilterHelper();
73  $entityNode->appendChild($nativeFilterHelper->createIssueIdentificationNode($this, $doc, $issue));
74  }
75 
76  $pages = $entity->getData('pages');
77  if (!empty($pages)) $entityNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(), 'pages', htmlspecialchars($pages, ENT_COMPAT, 'UTF-8')));
78 
79  // cover images
80  import('plugins.importexport.native.filter.NativeFilterHelper');
81  $nativeFilterHelper = new NativeFilterHelper();
82  $coversNode = $nativeFilterHelper->createPublicationCoversNode($this, $doc, $entity);
83  if ($coversNode) $entityNode->appendChild($coversNode);
84 
85  $citationsListNode = $this->createCitationsNode($doc, $deployment, $entity);
86  if ($citationsListNode) {
87  $entityNode->appendChild($citationsListNode);
88  }
89 
90  return $entityNode;
91  }
92 
100  private function createCitationsNode($doc, $deployment, $publication) {
101  $citationDao = DAORegistry::getDAO('CitationDAO');
102 
103  $nodeCitations = $doc->createElementNS($deployment->getNamespace(), 'citations');
104  $submissionCitations = $citationDao->getByPublicationId($publication->getId());
105  if ($submissionCitations->getCount() != 0) {
106  while ($elementCitation = $submissionCitations->next()) {
107  $rawCitation = $elementCitation->getRawCitation();
108  $nodeCitations->appendChild($node = $doc->createElementNS($deployment->getNamespace(), 'citation', htmlspecialchars($rawCitation, ENT_COMPAT, 'UTF-8')));
109  }
110 
111  return $nodeCitations;
112  }
113 
114  return null;
115  }
116 }
PublicationNativeXmlFilter
Class that converts a Publication to a Native XML document.
Definition: PublicationNativeXmlFilter.inc.php:18
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
NativeImportExportFilter\getDeployment
getDeployment()
Definition: NativeImportExportFilter.inc.php:49
PKPPublicationNativeXmlFilter
Base class that converts a PKPPublication to a Native XML document.
Definition: PKPPublicationNativeXmlFilter.inc.php:18
PublicationNativeXmlFilter\getClassName
getClassName()
Definition: PublicationNativeXmlFilter.inc.php:25
PublicationNativeXmlFilter\createEntityNode
createEntityNode($doc, $entity)
Definition: PublicationNativeXmlFilter.inc.php:50
NativeFilterHelper
Class that provides native import/export filter-related helper methods.
Definition: NativeFilterHelper.inc.php:15
PublicationNativeXmlFilter\getRepresentationExportFilterGroupName
getRepresentationExportFilterGroupName()
Definition: PublicationNativeXmlFilter.inc.php:37