Open Preprint Systems  3.3.0
CrossrefDepositPlugin.inc.php
1 <?php
18  public function register($category, $path, $mainContextId = NULL) {
19  $success = parent::register($category, $path);
20  if ($success && $this->getEnabled()) {
21  \HookRegistry::register('Publication::publish', [$this, 'depositOnPublish']);
22  }
23  return $success;
24  }
25 
29  public function getDisplayName() {
30  return __('plugins.generic.crossrefDeposit.name');
31  }
32 
36  public function getDescription() {
37  return __('plugins.generic.crossrefDeposit.description');
38  }
39 
49  function depositOnPublish($hookName, $args) {
50  PluginRegistry::loadCategory('importexport');
51  $crossrefExportPlugin = PluginRegistry::getPlugin('importexport', 'CrossRefExportPlugin');
52 
53  $newPublication = $args[0];
54  $objects[] = Services::get('submission')->get($newPublication->getData('submissionId'));
55  $request = Application::get()->getRequest();
56  $context = $request->getContext();
57  $filter = $crossrefExportPlugin->getSubmissionFilter();
58  $objectsFileNamePart = 'preprints';
59  $noValidation = null;
60 
61  import('lib.pkp.classes.file.FileManager');
62  $fileManager = new FileManager();
63  $resultErrors = array();
64  $errorsOccured = false;
65 
66  foreach ($objects as $object) {
67  $exportXml = $crossrefExportPlugin->exportXML(array($object), $filter, $context, $noValidation);
68  $objectsFileNamePart = $objectsFileNamePart . '-' . $object->getId();
69  $exportFileName = $crossrefExportPlugin->getExportFileName($crossrefExportPlugin->getExportPath(), $objectsFileNamePart, $context, '.xml');
70  $fileManager->writeFile($exportFileName, $exportXml);
71  $result = $crossrefExportPlugin->depositXML($object, $context, $exportFileName);
72  if (!$result) {
73  $errorsOccured = true;
74  }
75  if (is_array($result)) {
76  $resultErrors[] = $result;
77  }
78  $fileManager->deleteByPath($exportFileName);
79  }
80  return true;
81  }
82 }
CrossrefDepositPlugin
Deposit DOIs during the publish action.
Definition: CrossrefDepositPlugin.inc.php:14
CrossrefDepositPlugin\depositOnPublish
depositOnPublish($hookName, $args)
Definition: CrossrefDepositPlugin.inc.php:49
CrossrefDepositPlugin\getDescription
getDescription()
Definition: CrossrefDepositPlugin.inc.php:36
PluginRegistry\loadCategory
static loadCategory($category, $enabledOnly=false, $mainContextId=null)
Definition: PluginRegistry.inc.php:103
Plugin\getEnabled
getEnabled()
Definition: Plugin.inc.php:868
Plugin\$request
$request
Definition: Plugin.inc.php:68
PluginRegistry\getPlugin
static getPlugin($category, $name)
Definition: PluginRegistry.inc.php:85
HookRegistry\register
static register($hookName, $callback, $hookSequence=HOOK_SEQUENCE_NORMAL)
Definition: HookRegistry.inc.php:70
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
FileManager
Class defining basic operations for file management.
Definition: FileManager.inc.php:35
GenericPlugin
Abstract class for generic plugins.
Definition: GenericPlugin.inc.php:18
CrossrefDepositPlugin\getDisplayName
getDisplayName()
Definition: CrossrefDepositPlugin.inc.php:29
PKPServices\get
static get($service)
Definition: PKPServices.inc.php:49