16 import(
'lib.pkp.plugins.importexport.native.filter.NativeExportFilter');
25 parent::__construct($filterGroup);
36 return 'plugins.importexport.native.filter.IssueGalleyNativeXmlFilter';
50 $doc =
new DOMDocument(
'1.0');
51 $doc->preserveWhiteSpace =
false;
52 $doc->formatOutput =
true;
55 $rootNode = $doc->createElementNS($deployment->getNamespace(),
'issue_galleys');
56 foreach ($issueGalleys as $issueGalley) {
60 $doc->appendChild($rootNode);
61 $rootNode->setAttributeNS(
'http://www.w3.org/2000/xmlns/',
'xmlns:xsi',
'http://www.w3.org/2001/XMLSchema-instance');
62 $rootNode->setAttribute(
'xsi:schemaLocation', $deployment->getNamespace() .
' ' . $deployment->getSchemaFilename());
79 $issueGalleyNode = $doc->createElementNS($deployment->getNamespace(),
'issue_galley');
80 $issueGalleyNode->setAttribute(
'locale', $issueGalley->getLocale());
81 $issueGalleyNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'label', htmlspecialchars($issueGalley->getLabel(), ENT_COMPAT,
'UTF-8')));
85 $this->
addFile($doc, $issueGalleyNode, $issueGalley);
87 return $issueGalleyNode;
96 function addFile($doc, $issueGalleyNode, $issueGalley) {
98 $issueFile = $issueFileDao->getById($issueGalley->getFileId());
102 $issueFileNode = $doc->createElementNS($deployment->getNamespace(),
'issue_file');
103 $issueFileNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'file_name', htmlspecialchars($issueFile->getServerFileName(), ENT_COMPAT,
'UTF-8')));
104 $issueFileNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'file_type', htmlspecialchars($issueFile->getFileType(), ENT_COMPAT,
'UTF-8')));
105 $issueFileNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'file_size', $issueFile->getFileSize()));
106 $issueFileNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'content_type', htmlspecialchars($issueFile->getContentType(), ENT_COMPAT,
'UTF-8')));
107 $issueFileNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'original_file_name', htmlspecialchars($issueFile->getOriginalFileName(), ENT_COMPAT,
'UTF-8')));
108 $issueFileNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'date_uploaded', strftime(
'%Y-%m-%d', strtotime($issueFile->getDateUploaded()))));
109 $issueFileNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'date_modified', strftime(
'%Y-%m-%d', strtotime($issueFile->getDateModified()))));
111 import(
'classes.file.IssueFileManager');
114 $filePath = $issueFileManager->getFilesDir() .
'/' . $issueFileManager->contentTypeToPath($issueFile->getContentType()) .
'/' . $issueFile->getServerFileName();
115 $embedNode = $doc->createElementNS($deployment->getNamespace(),
'embed', base64_encode(file_get_contents($filePath)));
116 $embedNode->setAttribute(
'encoding',
'base64');
117 $issueFileNode->appendChild($embedNode);
119 $issueGalleyNode->appendChild($issueFileNode);
133 $issueGalleyNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'id', $issueGalley->getId()));
134 $node->setAttribute(
'type',
'internal');
135 $node->setAttribute(
'advice',
'ignore');
138 if ($pubId = $issueGalley->getStoredPubId(
'publisher-id')) {
139 $issueGalleyNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(),
'id', htmlspecialchars($pubId, ENT_COMPAT,
'UTF-8')));
140 $node->setAttribute(
'type',
'public');
141 $node->setAttribute(
'advice',
'update');