Open Preprint Systems  3.3.0
PubObjectsExportPlugin.inc.php
1 <?php
2 
16 import('lib.pkp.classes.plugins.ImportExportPlugin');
17 
18 // The statuses.
19 define('EXPORT_STATUS_ANY', '');
20 define('EXPORT_STATUS_NOT_DEPOSITED', 'notDeposited');
21 define('EXPORT_STATUS_MARKEDREGISTERED', 'markedRegistered');
22 define('EXPORT_STATUS_REGISTERED', 'registered');
23 
24 // The actions.
25 define('EXPORT_ACTION_EXPORT', 'export');
26 define('EXPORT_ACTION_MARKREGISTERED', 'markRegistered');
27 define('EXPORT_ACTION_DEPOSIT', 'deposit');
28 
29 // Configuration errors.
30 define('EXPORT_CONFIG_ERROR_SETTINGS', 0x02);
31 
32 
35  var $_cache;
36 
41  function getCache() {
42  if (!is_a($this->_cache, 'PubObjectCache')) {
43  // Instantiate the cache.
44  import('classes.plugins.PubObjectCache');
45  $this->_cache = new PubObjectCache();
46  }
47  return $this->_cache;
48  }
49 
53  function register($category, $path, $mainContextId = null) {
54  if (!parent::register($category, $path, $mainContextId)) return false;
55 
56  AppLocale::requireComponents(LOCALE_COMPONENT_APP_MANAGER);
57  $this->addLocaleData();
58 
59  HookRegistry::register('AcronPlugin::parseCronTab', array($this, 'callbackParseCronTab'));
60  foreach ($this->_getDAOs() as $dao) {
61  if ($dao instanceof SchemaDAO) {
62  HookRegistry::register('Schema::get::' . $dao->schemaName, array($this, 'addToSchema'));
63  } else {
64  HookRegistry::register(strtolower_codesafe(get_class($dao)) . '::getAdditionalFieldNames', array(&$this, 'getAdditionalFieldNames'));
65  }
66  }
67  return true;
68  }
69 
73  function manage($args, $request) {
74  $user = $request->getUser();
75  $router = $request->getRouter();
76  $context = $router->getContext($request);
77 
78  $form = $this->_instantiateSettingsForm($context);
79  $notificationManager = new NotificationManager();
80  switch ($request->getUserVar('verb')) {
81  case 'save':
82  $form->readInputData();
83  if ($form->validate()) {
84  $form->execute();
85  $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS);
86  return new JSONMessage(true);
87  } else {
88  return new JSONMessage(true, $form->fetch($request));
89  }
90  case 'index':
91  $form->initData();
92  return new JSONMessage(true, $form->fetch($request));
93  case 'statusMessage':
94  $statusMessage = $this->getStatusMessage($request);
95  if ($statusMessage) {
96  $templateMgr = TemplateManager::getManager($request);
97  $templateMgr->assign(array(
98  'statusMessage' => htmlentities($statusMessage),
99  ));
100  return new JSONMessage(true, $templateMgr->fetch($this->getTemplateResource('statusMessage.tpl')));
101  }
102  }
103  return parent::manage($args, $request);
104  }
105 
109  function display($args, $request) {
110  parent::display($args, $request);
111 
112  $context = $request->getContext();
113  switch (array_shift($args)) {
114  case 'index':
115  case '':
116  // Check for configuration errors:
117  $configurationErrors = array();
118  // missing plugin settings
119  $form = $this->_instantiateSettingsForm($context);
120  foreach($form->getFormFields() as $fieldName => $fieldType) {
121  if ($form->isOptional($fieldName)) continue;
122  $pluginSetting = $this->getSetting($context->getId(), $fieldName);
123  if (empty($pluginSetting)) {
124  $configurationErrors[] = EXPORT_CONFIG_ERROR_SETTINGS;
125  break;
126  }
127  }
128 
129  // Add link actions
130  $actions = $this->getExportActions($context);
131  $actionNames = array_intersect_key($this->getExportActionNames(), array_flip($actions));
132  import('lib.pkp.classes.linkAction.request.NullAction');
133  $linkActions = array();
134  foreach ($actionNames as $action => $actionName) {
135  $linkActions[] = new LinkAction($action, new NullAction(), $actionName);
136  }
137  $templateMgr = TemplateManager::getManager($request);
138  $templateMgr->assign(array(
139  'plugin' => $this,
140  'actionNames' => $actionNames,
141  'configurationErrors' => $configurationErrors,
142  ));
143  break;
144  case 'exportSubmissions':
145  case 'exportRepresentations':
146  $selectedSubmissions = (array) $request->getUserVar('selectedSubmissions');
147  $selectedRepresentations = (array) $request->getUserVar('selectedRepresentations');
148  $tab = (string) $request->getUserVar('tab');
149  $noValidation = $request->getUserVar('validation') ? false : true;
150 
151  if (empty($selectedSubmissions) && empty($selectedRepresentations)) {
152  fatalError(__('plugins.importexport.common.error.noObjectsSelected'));
153  }
154  if (!empty($selectedSubmissions)) {
155  $objects = $this->getPublishedSubmissions($selectedSubmissions, $context);
156  $filter = $this->getSubmissionFilter();
157  $objectsFileNamePart = 'preprints';
158  } elseif (!empty($selectedRepresentations)) {
159  $objects = $this->getArticleGalleys($selectedRepresentations);
160  $filter = $this->getRepresentationFilter();
161  $objectsFileNamePart = 'galleys';
162  }
163 
164  // Execute export action
165  $this->executeExportAction($request, $objects, $filter, $tab, $objectsFileNamePart, $noValidation);
166  }
167  }
168 
178  function executeExportAction($request, $objects, $filter, $tab, $objectsFileNamePart, $noValidation = null) {
179  $context = $request->getContext();
180  $path = array('plugin', $this->getName());
181  if ($request->getUserVar(EXPORT_ACTION_EXPORT)) {
182  assert($filter != null);
183  // Get the XML
184  $exportXml = $this->exportXML($objects, $filter, $context, $noValidation);
185  import('lib.pkp.classes.file.FileManager');
186  $fileManager = new FileManager();
187  $exportFileName = $this->getExportFileName($this->getExportPath(), $objectsFileNamePart, $context, '.xml');
188  $fileManager->writeFile($exportFileName, $exportXml);
189  $fileManager->downloadByPath($exportFileName);
190  $fileManager->deleteByPath($exportFileName);
191  } elseif ($request->getUserVar(EXPORT_ACTION_DEPOSIT)) {
192  assert($filter != null);
193  // Get the XML
194  $exportXml = $this->exportXML($objects, $filter, $context, $noValidation);
195  // Write the XML to a file.
196  // export file name example: crossref-20160723-160036-articles-1.xml
197  import('lib.pkp.classes.file.FileManager');
198  $fileManager = new FileManager();
199  $exportFileName = $this->getExportFileName($this->getExportPath(), $objectsFileNamePart, $context, '.xml');
200  $fileManager->writeFile($exportFileName, $exportXml);
201  // Deposit the XML file.
202  $result = $this->depositXML($objects, $context, $exportFileName);
203  // send notifications
204  if ($result === true) {
205  $this->_sendNotification(
206  $request->getUser(),
207  $this->getDepositSuccessNotificationMessageKey(),
208  NOTIFICATION_TYPE_SUCCESS
209  );
210  } else {
211  if (is_array($result)) {
212  foreach($result as $error) {
213  assert(is_array($error) && count($error) >= 1);
214  $this->_sendNotification(
215  $request->getUser(),
216  $error[0],
217  NOTIFICATION_TYPE_ERROR,
218  (isset($error[1]) ? $error[1] : null)
219  );
220  }
221  }
222  }
223  // Remove all temporary files.
224  $fileManager->deleteByPath($exportFileName);
225  // redirect back to the right tab
226  $request->redirect(null, null, null, $path, null, $tab);
227  } elseif ($request->getUserVar(EXPORT_ACTION_MARKREGISTERED)) {
228  $this->markRegistered($context, $objects);
229  // redirect back to the right tab
230  $request->redirect(null, null, null, $path, null, $tab);
231  } else {
232  $dispatcher = $request->getDispatcher();
233  $dispatcher->handle404();
234  }
235  }
236 
242  return 'plugins.importexport.common.register.success';
243  }
244 
253  abstract function depositXML($objects, $context, $filename);
254 
261  function getStatusMessage($request) {
262  return null;
263  }
264 
269  function getSubmissionFilter() {
270  return null;
271  }
272 
277  function getRepresentationFilter() {
278  return null;
279  }
280 
285  function getStatusNames() {
286  return array(
287  EXPORT_STATUS_ANY => __('plugins.importexport.common.status.any'),
288  EXPORT_STATUS_NOT_DEPOSITED => __('plugins.importexport.common.status.notDeposited'),
289  EXPORT_STATUS_MARKEDREGISTERED => __('plugins.importexport.common.status.markedRegistered'),
290  EXPORT_STATUS_REGISTERED => __('plugins.importexport.common.status.registered'),
291  );
292  }
293 
300  function getStatusActions($pubObject) {
301  return array();
302  }
303 
309  function getExportActions($context) {
310  $actions = array(EXPORT_ACTION_EXPORT, EXPORT_ACTION_MARKREGISTERED);
311  if ($this->getSetting($context->getId(), 'username') && $this->getSetting($context->getId(), 'password')) {
312  array_unshift($actions, EXPORT_ACTION_DEPOSIT);
313  }
314  return $actions;
315  }
316 
321  function getExportActionNames() {
322  return array(
323  EXPORT_ACTION_DEPOSIT => __('plugins.importexport.common.action.register'),
324  EXPORT_ACTION_EXPORT => __('plugins.importexport.common.action.export'),
325  EXPORT_ACTION_MARKREGISTERED => __('plugins.importexport.common.action.markRegistered'),
326  );
327  }
328 
333  abstract function getExportDeploymentClassName();
334 
343  function exportXML($objects, $filter, $context, $noValidation = null) {
344  $filterDao = DAORegistry::getDAO('FilterDAO'); /* @var $filterDao FilterDAO */
345  $exportFilters = $filterDao->getObjectsByGroup($filter);
346  assert(count($exportFilters) == 1); // Assert only a single serialization filter
347  $exportFilter = array_shift($exportFilters);
348  $exportDeployment = $this->_instantiateExportDeployment($context);
349  $exportFilter->setDeployment($exportDeployment);
350  if ($noValidation) $exportFilter->setNoValidation($noValidation);
351  libxml_use_internal_errors(true);
352  $exportXml = $exportFilter->execute($objects, true);
353  $xml = $exportXml->saveXml();
354  $errors = array_filter(libxml_get_errors(), function($a) {
355  return $a->level == LIBXML_ERR_ERROR || $a->level == LIBXML_ERR_FATAL;
356  });
357  if (!empty($errors)) {
358  $this->displayXMLValidationErrors($errors, $xml);
359  }
360  return $xml;
361  }
362 
368  function markRegistered($context, $objects) {
369  foreach ($objects as $object) {
370  $object->setData($this->getDepositStatusSettingName(), EXPORT_STATUS_MARKEDREGISTERED);
371  $this->updateObject($object);
372  }
373  }
374 
379  protected function updateObject($object) {
380  // Register a hook for the required additional
381  // object fields. We do this on a temporary
382  // basis as the hook adds a performance overhead
383  // and the field will "stealthily" survive even
384  // when the DAO does not know about it.
385  $dao = $object->getDAO();
386  $dao->updateObject($object);
387  }
388 
397  function getAdditionalFieldNames($hookName, $args) {
398  assert(count($args) == 2);
399  $additionalFields =& $args[1];
400  assert(is_array($additionalFields));
401  foreach ($this->_getObjectAdditionalSettings() as $fieldName) {
402  $additionalFields[] = $fieldName;
403  }
404 
405  return false;
406  }
407 
416  public function addToSchema($hookName, $params) {
417  $schema =& $params[0];
418  foreach ($this->_getObjectAdditionalSettings() as $fieldName) {
419  $schema->properties->{$fieldName} = (object) [
420  'type' => 'string',
421  'apiSummary' => true,
422  'validation' => ['nullable'],
423  ];
424  }
425 
426  return false;
427  }
428 
433  protected function _getObjectAdditionalSettings() {
434  return array($this->getDepositStatusSettingName());
435  }
436 
440  function callbackParseCronTab($hookName, $args) {
441  $taskFilesPath =& $args[0];
442  $taskFilesPath[] = $this->getPluginPath() . DIRECTORY_SEPARATOR . 'scheduledTasks.xml';
443  return false;
444  }
445 
451  function getUnregisteredArticles($context) {
452  // Retrieve all published submissions that have not yet been registered.
453  $submissionDao = DAORegistry::getDAO('SubmissionDAO'); /* @var $submissionDao SubmissionDAO */
454  $articles = $submissionDao->getExportable(
455  $context->getId(),
456  null,
457  null,
458  null,
459  null,
460  $this->getDepositStatusSettingName(),
461  EXPORT_STATUS_NOT_DEPOSITED,
462  null
463  );
464  return $articles->toArray();
465  }
471  function isTestMode($context) {
472  return ($this->getSetting($context->getId(), 'testMode') == 1);
473  }
474 
479  function getDepositStatusSettingName() {
480  return $this->getPluginSettingsPrefix().'::status';
481  }
482 
483 
484 
488  function usage($scriptName) {
489  echo __(
490  'plugins.importexport.' . $this->getPluginSettingsPrefix() . '.cliUsage',
491  array(
492  'scriptName' => $scriptName,
493  'pluginName' => $this->getName()
494  )
495  ) . "\n";
496  }
497 
501  function executeCLI($scriptName, &$args) {
502  AppLocale::requireComponents(LOCALE_COMPONENT_APP_MANAGER);
503 
504  $command = array_shift($args);
505  if (!in_array($command, array('export', 'register'))) {
506  $this->usage($scriptName);
507  return;
508  }
509 
510  $outputFile = $command == 'export' ? array_shift($args) : null;
511  $contextPath = array_shift($args);
512  $objectType = array_shift($args);
513 
514  $contextDao = DAORegistry::getDAO('JournalDAO');
515  $context = $contextDao->getByPath($contextPath);
516  if (!$context) {
517  if ($contextPath != '') {
518  echo __('plugins.importexport.common.cliError') . "\n";
519  echo __('plugins.importexport.common.error.unknownJournal', array('journalPath' => $contextPath)) . "\n\n";
520  }
521  $this->usage($scriptName);
522  return;
523  }
524 
525  if ($outputFile) {
526  if ($this->isRelativePath($outputFile)) {
527  $outputFile = PWD . '/' . $outputFile;
528  }
529  $outputDir = dirname($outputFile);
530  if (!is_writable($outputDir) || (file_exists($outputFile) && !is_writable($outputFile))) {
531  echo __('plugins.importexport.common.cliError') . "\n";
532  echo __('plugins.importexport.common.export.error.outputFileNotWritable', array('param' => $outputFile)) . "\n\n";
533  $this->usage($scriptName);
534  return;
535  }
536  }
537 
538  switch ($objectType) {
539  case 'articles':
540  $objects = $this->getPublishedSubmissions($args, $context);
541  $filter = $this->getSubmissionFilter();
542  $objectsFileNamePart = 'preprints';
543  break;
544  case 'galleys':
545  $objects = $this->getArticleGalleys($args);
546  $filter = $this->getRepresentationFilter();
547  $objectsFileNamePart = 'galleys';
548  break;
549  default:
550  $this->usage($scriptName);
551  return;
552 
553  }
554  if (empty($objects)) {
555  echo __('plugins.importexport.common.cliError') . "\n";
556  echo __('plugins.importexport.common.error.unknownObjects') . "\n\n";
557  $this->usage($scriptName);
558  return;
559  }
560  if (!$filter) {
561  $this->usage($scriptName);
562  return;
563  }
564 
565  $this->executeCLICommand($scriptName, $command, $context, $outputFile, $objects, $filter, $objectsFileNamePart);
566  return;
567  }
568 
579  function executeCLICommand($scriptName, $command, $context, $outputFile, $objects, $filter, $objectsFileNamePart) {
580  $exportXml = $this->exportXML($objects, $filter, $context);
581  if ($command == 'export' && $outputFile) file_put_contents($outputFile, $exportXml);
582 
583  if ($command == 'register') {
584  import('lib.pkp.classes.file.FileManager');
585  $fileManager = new FileManager();
586  $exportFileName = $this->getExportFileName($this->getExportPath(), $objectsFileNamePart, $context, '.xml');
587  $fileManager->writeFile($exportFileName, $exportXml);
588  $result = $this->depositXML($objects, $context, $exportFileName);
589  if ($result === true) {
590  echo __('plugins.importexport.common.register.success') . "\n";
591  } else {
592  echo __('plugins.importexport.common.cliError') . "\n";
593  if (is_array($result)) {
594  foreach($result as $error) {
595  assert(is_array($error) && count($error) >= 1);
596  $errorMessage = __($error[0], array('param' => (isset($error[1]) ? $error[1] : null)));
597  echo "*** $errorMessage\n";
598  }
599  echo "\n";
600  } else {
601  echo __('plugins.importexport.common.register.error.mdsError', array('param' => ' - ')) . "\n\n";
602  }
603  $this->usage($scriptName);
604  }
605  $fileManager->deleteByPath($exportFileName);
606  }
607  }
608 
615  function getPublishedSubmissions($submissionIds, $context) {
616  $submissions = array_map(function($submissionId) {
617  return Services::get('submission')->get($submissionId);
618  }, $submissionIds);
619  return array_filter($submissions, function($submission) {
620  return $submission->getData('status') === STATUS_PUBLISHED;
621  });
622  }
623 
629  function getArticleGalleys($galleyIds) {
630  $galleys = array();
631  $articleGalleyDao = DAORegistry::getDAO('ArticleGalleyDAO');
632  foreach ($galleyIds as $galleyId) {
633  $articleGalley = $articleGalleyDao->getById($galleyId);
634  if ($articleGalley) $galleys[] = $articleGalley;
635  }
636  return $galleys;
637  }
638 
646  function _sendNotification($user, $message, $notificationType, $param = null) {
647  static $notificationManager = null;
648  if (is_null($notificationManager)) {
649  import('classes.notification.NotificationManager');
650  $notificationManager = new NotificationManager();
651  }
652  if (!is_null($param)) {
653  $params = array('param' => $param);
654  } else {
655  $params = null;
656  }
657  $notificationManager->createTrivialNotification(
658  $user->getId(),
659  $notificationType,
660  array('contents' => __($message, $params))
661  );
662  }
663 
669  function _instantiateExportDeployment($context) {
670  $exportDeploymentClassName = $this->getExportDeploymentClassName();
671  $this->import($exportDeploymentClassName);
672  $exportDeployment = new $exportDeploymentClassName($context, $this);
673  return $exportDeployment;
674  }
675 
681  function _instantiateSettingsForm($context) {
682  $settingsFormClassName = $this->getSettingsFormClassName();
683  $this->import('classes.form.' . $settingsFormClassName);
684  $settingsForm = new $settingsFormClassName($this, $context->getId());
685  return $settingsForm;
686  }
687 
692  protected function _getDAOs() {
693  return array(
694  DAORegistry::getDAO('PublicationDAO'),
695  DAORegistry::getDAO('SubmissionDAO'),
697  DAORegistry::getDAO('SubmissionFileDAO'),
698  );
699  }
700 }
701 
702 
PubObjectsExportPlugin\executeExportAction
executeExportAction($request, $objects, $filter, $tab, $objectsFileNamePart, $noValidation=null)
Definition: PubObjectsExportPlugin.inc.php:181
PubObjectsExportPlugin\getCache
getCache()
Definition: PubObjectsExportPlugin.inc.php:44
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
PubObjectsExportPlugin\getAdditionalFieldNames
getAdditionalFieldNames($hookName, $args)
Definition: PubObjectsExportPlugin.inc.php:400
PubObjectsExportPlugin\manage
manage($args, $request)
Definition: PubObjectsExportPlugin.inc.php:76
PubObjectsExportPlugin\getExportActions
getExportActions($context)
Definition: PubObjectsExportPlugin.inc.php:312
PubObjectsExportPlugin\_getObjectAdditionalSettings
_getObjectAdditionalSettings()
Definition: PubObjectsExportPlugin.inc.php:436
Application\getRepresentationDAO
static getRepresentationDAO()
Definition: Application.inc.php:143
PubObjectsExportPlugin\getDepositStatusSettingName
getDepositStatusSettingName()
Definition: PubObjectsExportPlugin.inc.php:482
ImportExportPlugin\displayXMLValidationErrors
displayXMLValidationErrors($errors, $xml)
Definition: ImportExportPlugin.inc.php:161
PubObjectsExportPlugin\_sendNotification
_sendNotification($user, $message, $notificationType, $param=null)
Definition: PubObjectsExportPlugin.inc.php:649
Plugin\getName
getName()
PubObjectsExportPlugin\getDepositSuccessNotificationMessageKey
getDepositSuccessNotificationMessageKey()
Definition: PubObjectsExportPlugin.inc.php:244
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
PubObjectsExportPlugin\getArticleGalleys
getArticleGalleys($galleyIds)
Definition: PubObjectsExportPlugin.inc.php:632
PubObjectsExportPlugin\display
display($args, $request)
Definition: PubObjectsExportPlugin.inc.php:112
PubObjectsExportPlugin\executeCLICommand
executeCLICommand($scriptName, $command, $context, $outputFile, $objects, $filter, $objectsFileNamePart)
Definition: PubObjectsExportPlugin.inc.php:582
PubObjectsExportPlugin\getExportActionNames
getExportActionNames()
Definition: PubObjectsExportPlugin.inc.php:324
PubObjectsExportPlugin\isTestMode
isTestMode($context)
Definition: PubObjectsExportPlugin.inc.php:474
PubObjectsExportPlugin\_instantiateSettingsForm
_instantiateSettingsForm($context)
Definition: PubObjectsExportPlugin.inc.php:684
PubObjectsExportPlugin\getUnregisteredArticles
getUnregisteredArticles($context)
Definition: PubObjectsExportPlugin.inc.php:454
PubObjectsExportPlugin\getExportDeploymentClassName
getExportDeploymentClassName()
PubObjectsExportPlugin\exportXML
exportXML($objects, $filter, $context, $noValidation=null)
Definition: PubObjectsExportPlugin.inc.php:346
PubObjectsExportPlugin\_instantiateExportDeployment
_instantiateExportDeployment($context)
Definition: PubObjectsExportPlugin.inc.php:672
PubObjectsExportPlugin\getStatusMessage
getStatusMessage($request)
Definition: PubObjectsExportPlugin.inc.php:264
PubObjectsExportPlugin\getSubmissionFilter
getSubmissionFilter()
Definition: PubObjectsExportPlugin.inc.php:272
ImportExportPlugin
Abstract class for import/export plugins.
Definition: ImportExportPlugin.inc.php:18
PubObjectsExportPlugin\getPublishedSubmissions
getPublishedSubmissions($submissionIds, $context)
Definition: PubObjectsExportPlugin.inc.php:618
ImportExportPlugin\getExportFileName
getExportFileName($basePath, $objectsFileNamePart, $context, $extension='.xml')
Definition: ImportExportPlugin.inc.php:152
NullAction
This action does nothing.
Definition: NullAction.inc.php:18
JSONMessage
Class to represent a JSON (Javascript Object Notation) message.
Definition: JSONMessage.inc.php:18
Plugin\getSetting
getSetting($contextId, $name)
Definition: Plugin.inc.php:473
ImportExportPlugin\getExportPath
getExportPath()
Definition: ImportExportPlugin.inc.php:140
PubObjectsExportPlugin\getRepresentationFilter
getRepresentationFilter()
Definition: PubObjectsExportPlugin.inc.php:280
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
PubObjectsExportPlugin\$_cache
$_cache
Definition: PubObjectsExportPlugin.inc.php:38
PubObjectCache
A cache for publication objects required during export.
Definition: PubObjectCache.inc.php:17
PubObjectsExportPlugin\usage
usage($scriptName)
Definition: PubObjectsExportPlugin.inc.php:491
PubObjectsExportPlugin\_getDAOs
_getDAOs()
Definition: PubObjectsExportPlugin.inc.php:695
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1226
PubObjectsExportPlugin\executeCLI
executeCLI($scriptName, &$args)
Definition: PubObjectsExportPlugin.inc.php:504
PubObjectsExportPlugin
Basis class for XML metadata export plugins.
Definition: PubObjectsExportPlugin.inc.php:33
strtolower_codesafe
strtolower_codesafe($str)
Definition: functions.inc.php:280
PubObjectsExportPlugin\updateObject
updateObject($object)
Definition: PubObjectsExportPlugin.inc.php:382
Plugin\$request
$request
Definition: Plugin.inc.php:68
PubObjectsExportPlugin\depositXML
depositXML($objects, $context, $filename)
Plugin\addLocaleData
addLocaleData($locale=null)
Definition: Plugin.inc.php:454
HookRegistry\register
static register($hookName, $callback, $hookSequence=HOOK_SEQUENCE_NORMAL)
Definition: HookRegistry.inc.php:70
NotificationManager
Definition: NotificationManager.inc.php:19
PubObjectsExportPlugin\getStatusActions
getStatusActions($pubObject)
Definition: PubObjectsExportPlugin.inc.php:303
PubObjectsExportPlugin\addToSchema
addToSchema($hookName, $params)
Definition: PubObjectsExportPlugin.inc.php:419
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
PubObjectsExportPlugin\markRegistered
markRegistered($context, $objects)
Definition: PubObjectsExportPlugin.inc.php:371
PubObjectsExportPlugin\callbackParseCronTab
callbackParseCronTab($hookName, $args)
Definition: PubObjectsExportPlugin.inc.php:443
PubObjectsExportPlugin\getStatusNames
getStatusNames()
Definition: PubObjectsExportPlugin.inc.php:288
SchemaDAO
A base class for DAOs which rely on a json-schema file to define the data object.
Definition: SchemaDAO.inc.php:18
PKPServices\get
static get($service)
Definition: PKPServices.inc.php:49