Open Monograph Press  3.3.0
Onix30ExportPlugin.inc.php
1 <?php
2 
16 import('lib.pkp.classes.plugins.ImportExportPlugin');
17 
22  function __construct() {
23  parent::__construct();
24  }
25 
29  function register($category, $path, $mainContextId = null) {
30  $success = parent::register($category, $path, $mainContextId);
31  if (!Config::getVar('general', 'installed') || defined('RUNNING_UPGRADE')) return $success;
32  if ($success && $this->getEnabled()) {
33  $this->addLocaleData();
34  $this->import('Onix30ExportDeployment');
35  }
36  return $success;
37  }
38 
44  function getName() {
45  return 'Onix30ExportPlugin';
46  }
47 
52  function getDisplayName() {
53  return __('plugins.importexport.onix30.displayName');
54  }
55 
60  function getDescription() {
61  return __('plugins.importexport.onix30.description');
62  }
63 
68  return 'onix30';
69  }
70 
76  function display($args, $request) {
77  $templateMgr = TemplateManager::getManager($request);
78  $context = $request->getContext();
79 
80  parent::display($args, $request);
81 
82  $templateMgr->assign('plugin', $this);
83 
84  switch (array_shift($args)) {
85  case 'index':
86  case '':
87  $apiUrl = $request->getDispatcher()->url($request, ROUTE_API, $context->getPath(), 'submissions');
88  $submissionsListPanel = new \APP\components\listPanels\SubmissionsListPanel(
89  'submissions',
90  __('common.publications'),
91  [
92  'apiUrl' => $apiUrl,
93  'count' => 100,
94  'getParams' => new stdClass(),
95  'lazyLoad' => true,
96  ]
97  );
98  $submissionsConfig = $submissionsListPanel->getConfig();
99  $submissionsConfig['addUrl'] = '';
100  $submissionsConfig['filters'] = array_slice($submissionsConfig['filters'], 1);
101  $templateMgr->setState([
102  'components' => [
103  'submissions' => $submissionsConfig,
104  ],
105  ]);
106  $templateMgr->assign([
107  'pageComponent' => 'ImportExportPage',
108  ]);
109  $templateMgr->display($this->getTemplateResource('index.tpl'));
110  break;
111  case 'export':
112  $exportXml = $this->exportSubmissions(
113  (array) $request->getUserVar('selectedSubmissions'),
114  $request->getContext(),
115  $request->getUser()
116  );
117  import('lib.pkp.classes.file.FileManager');
118  $fileManager = new FileManager();
119  $exportFileName = $this->getExportFileName($this->getExportPath(), 'monographs', $context, '.xml');
120  $fileManager->writeFile($exportFileName, $exportXml);
121  $fileManager->downloadByPath($exportFileName);
122  $fileManager->deleteByPath($exportFileName);
123  break;
124  default:
125  $dispatcher = $request->getDispatcher();
126  $dispatcher->handle404();
127  }
128  }
129 
137  function exportSubmissions($submissionIds, $context, $user) {
138  $submissionDao = DAORegistry::getDAO('SubmissionDAO'); /* @var $submissionDao SubmissionDAO */
139  $xml = '';
140  $filterDao = DAORegistry::getDAO('FilterDAO'); /* @var $filterDao FilterDAO */
141  $nativeExportFilters = $filterDao->getObjectsByGroup('monograph=>onix30-xml');
142  assert(count($nativeExportFilters) == 1); // Assert only a single serialization filter
143  $exportFilter = array_shift($nativeExportFilters);
144  $exportFilter->setDeployment(new Onix30ExportDeployment($context, $user));
145  $submissions = array();
146  foreach ($submissionIds as $submissionId) {
147  $submission = $submissionDao->getById($submissionId, $context->getId());
148  if ($submission) $submissions[] = $submission;
149  }
150  $submissionXml = $exportFilter->execute($submission);
151  if ($submissionXml) $xml = $submissionXml->saveXml();
152  else fatalError('Could not convert submissions.');
153  return $xml;
154  }
155 
159  function executeCLI($scriptName, &$args) {
160  fatalError('Not implemented.');
161  }
162 
166  function usage($scriptName) {
167  fatalError('Not implemented.');
168  }
169 }
Onix30ExportPlugin\getDisplayName
getDisplayName()
Definition: Onix30ExportPlugin.inc.php:52
Onix30ExportDeployment
Class configuring the native import/export process to this application's specifics.
Definition: Onix30ExportDeployment.inc.php:19
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
Onix30ExportPlugin\getName
getName()
Definition: Onix30ExportPlugin.inc.php:44
Onix30ExportPlugin\getPluginSettingsPrefix
getPluginSettingsPrefix()
Definition: Onix30ExportPlugin.inc.php:67
Onix30ExportPlugin\executeCLI
executeCLI($scriptName, &$args)
Definition: Onix30ExportPlugin.inc.php:159
ImportExportPlugin
Abstract class for import/export plugins.
Definition: ImportExportPlugin.inc.php:18
Plugin\getEnabled
getEnabled()
Definition: Plugin.inc.php:868
ImportExportPlugin\getExportFileName
getExportFileName($basePath, $objectsFileNamePart, $context, $extension='.xml')
Definition: ImportExportPlugin.inc.php:152
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
ImportExportPlugin\getExportPath
getExportPath()
Definition: ImportExportPlugin.inc.php:140
Onix30ExportPlugin
ONIX 3.0 XML import/export plugin.
Definition: Onix30ExportPlugin.inc.php:18
Onix30ExportPlugin\usage
usage($scriptName)
Definition: Onix30ExportPlugin.inc.php:166
Onix30ExportPlugin\exportSubmissions
exportSubmissions($submissionIds, $context, $user)
Definition: Onix30ExportPlugin.inc.php:137
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
Onix30ExportPlugin\getDescription
getDescription()
Definition: Onix30ExportPlugin.inc.php:60
Plugin\getTemplateResource
getTemplateResource($template=null, $inCore=false)
Definition: Plugin.inc.php:349
Plugin\$request
$request
Definition: Plugin.inc.php:68
Plugin\addLocaleData
addLocaleData($locale=null)
Definition: Plugin.inc.php:454
Onix30ExportPlugin\__construct
__construct()
Definition: Onix30ExportPlugin.inc.php:22
fatalError
if(!function_exists('import')) fatalError($reason)
Definition: functions.inc.php:32
FileManager
Class defining basic operations for file management.
Definition: FileManager.inc.php:35
Onix30ExportPlugin\display
display($args, $request)
Definition: Onix30ExportPlugin.inc.php:76