Open Preprint Systems  3.3.0
DOIPubIdExportPlugin.inc.php
1 <?php
2 
16 import('classes.plugins.PubObjectsExportPlugin');
17 
18 // Configuration errors.
19 define('DOI_EXPORT_CONFIG_ERROR_DOIPREFIX', 0x01);
20 
21 // The name of the setting used to save the registered DOI.
22 define('DOI_EXPORT_REGISTERED_DOI', 'registeredDoi');
23 
28  function display($args, $request) {
29  parent::display($args, $request);
30  $context = $request->getContext();
31  switch (array_shift($args)) {
32  case 'index':
33  case '':
34  $templateMgr = TemplateManager::getManager($request);
35  // Check for configuration errors:
36  $configurationErrors = $templateMgr->getTemplateVars('configurationErrors');
37  // missing DOI prefix
38  $doiPrefix = null;
39  $pubIdPlugins = PluginRegistry::loadCategory('pubIds', true);
40  if (isset($pubIdPlugins['doipubidplugin'])) {
41  $doiPlugin = $pubIdPlugins['doipubidplugin'];
42  $doiPrefix = $doiPlugin->getSetting($context->getId(), $doiPlugin->getPrefixFieldName());
43  $templateMgr->assign(array(
44  'exportArticles' => $doiPlugin->getSetting($context->getId(), 'enablePublicationDoi'),
45  'exportRepresentations' => $doiPlugin->getSetting($context->getId(), 'enableRepresentationDoi'),
46  ));
47  }
48  if (empty($doiPrefix)) {
49  $configurationErrors[] = DOI_EXPORT_CONFIG_ERROR_DOIPREFIX;
50  }
51  $templateMgr->display($this->getTemplateResource('index.tpl'));
52  break;
53  }
54  }
55 
60  function getPubIdType() {
61  return 'doi';
62  }
63 
68  function getPubIdDisplayType() {
69  return 'DOI';
70  }
71 
77  function markRegistered($context, $objects) {
78  foreach ($objects as $object) {
79  $object->setData($this->getDepositStatusSettingName(), EXPORT_STATUS_MARKEDREGISTERED);
80  $this->saveRegisteredDoi($context, $object);
81  }
82  }
83 
95  function saveRegisteredDoi($context, $object, $testPrefix = '10.1234') {
96  $registeredDoi = $object->getStoredPubId('doi');
97  assert(!empty($registeredDoi));
98  if ($this->isTestMode($context)) {
99  $registeredDoi = PKPString::regexp_replace('#^[^/]+/#', $testPrefix . '/', $registeredDoi);
100  }
101  $object->setData($this->getPluginSettingsPrefix() . '::' . DOI_EXPORT_REGISTERED_DOI, $registeredDoi);
102  $this->updateObject($object);
103  }
104 
109  protected function _getObjectAdditionalSettings() {
110  return array_merge(parent::_getObjectAdditionalSettings(), array(
111  $this->getPluginSettingsPrefix() . '::' . DOI_EXPORT_REGISTERED_DOI
112  ));
113  }
114 
120  function getUnregisteredArticles($context) {
121  // Retrieve all published submissions that have not yet been registered.
122  $submissionDao = DAORegistry::getDAO('SubmissionDAO'); /* @var $submissionDao SubmissionDAO */
123  $articles = $submissionDao->getExportable(
124  $context->getId(),
125  $this->getPubIdType(),
126  null,
127  null,
128  null,
129  $this->getPluginSettingsPrefix(). '::' . DOI_EXPORT_REGISTERED_DOI,
130  null,
131  null
132  );
133  return $articles->toArray();
134  }
135 
141  function getUnregisteredGalleys($context) {
142  // Retrieve all galleys that have not yet been registered.
143  $galleyDao = DAORegistry::getDAO('ArticleGalleyDAO'); /* @var $galleyDao ArticleGalleyDAO */
144  $galleys = $galleyDao->getExportable(
145  $context?$context->getId():null,
146  $this->getPubIdType(),
147  null,
148  null,
149  null,
150  $this->getPluginSettingsPrefix(). '::' . DOI_EXPORT_REGISTERED_DOI,
151  null,
152  null
153  );
154  return $galleys->toArray();
155  }
156 
163  function getPublishedSubmissions($submissionIds, $context) {
164  $submissions = array_map(function($submissionId) {
165  return Services::get('submission')->get($submissionId);
166  }, $submissionIds);
167  return array_filter($submissions, function($submission) {
168  return $submission->getData('status') === STATUS_PUBLISHED && !!$submission->getStoredPubId('doi');
169  });
170  }
171 
177  function getArticleGalleys($galleyIds) {
178  $galleys = array();
179  $articleGalleyDao = DAORegistry::getDAO('ArticleGalleyDAO');
180  foreach ($galleyIds as $galleyId) {
181  $articleGalley = $articleGalleyDao->getById($galleyId);
182  if ($articleGalley && $articleGalley->getStoredPubId('doi')) $galleys[] = $articleGalley;
183  }
184  return $galleys;
185  }
186 }
187 
188 
PKPString\regexp_replace
static regexp_replace($pattern, $replacement, $subject, $limit=-1)
Definition: PKPString.inc.php:279
PubObjectsExportPlugin\getDepositStatusSettingName
getDepositStatusSettingName()
Definition: PubObjectsExportPlugin.inc.php:482
DOIPubIdExportPlugin\getPubIdType
getPubIdType()
Definition: DOIPubIdExportPlugin.inc.php:60
DOIPubIdExportPlugin\getUnregisteredGalleys
getUnregisteredGalleys($context)
Definition: DOIPubIdExportPlugin.inc.php:141
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
DOIPubIdExportPlugin
Basis class for DOI XML metadata export plugins.
Definition: DOIPubIdExportPlugin.inc.php:24
PubObjectsExportPlugin\isTestMode
isTestMode($context)
Definition: PubObjectsExportPlugin.inc.php:474
DOIPubIdExportPlugin\_getObjectAdditionalSettings
_getObjectAdditionalSettings()
Definition: DOIPubIdExportPlugin.inc.php:109
PluginRegistry\loadCategory
static loadCategory($category, $enabledOnly=false, $mainContextId=null)
Definition: PluginRegistry.inc.php:103
DOIPubIdExportPlugin\saveRegisteredDoi
saveRegisteredDoi($context, $object, $testPrefix='10.1234')
Definition: DOIPubIdExportPlugin.inc.php:95
DOIPubIdExportPlugin\markRegistered
markRegistered($context, $objects)
Definition: DOIPubIdExportPlugin.inc.php:77
DOIPubIdExportPlugin\getPublishedSubmissions
getPublishedSubmissions($submissionIds, $context)
Definition: DOIPubIdExportPlugin.inc.php:163
DOIPubIdExportPlugin\getArticleGalleys
getArticleGalleys($galleyIds)
Definition: DOIPubIdExportPlugin.inc.php:177
DOIPubIdExportPlugin\getUnregisteredArticles
getUnregisteredArticles($context)
Definition: DOIPubIdExportPlugin.inc.php:120
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1226
ImportExportPlugin\getPluginSettingsPrefix
getPluginSettingsPrefix()
Definition: ImportExportPlugin.inc.php:132
PubObjectsExportPlugin
Basis class for XML metadata export plugins.
Definition: PubObjectsExportPlugin.inc.php:33
Plugin\getTemplateResource
getTemplateResource($template=null, $inCore=false)
Definition: Plugin.inc.php:349
PubObjectsExportPlugin\updateObject
updateObject($object)
Definition: PubObjectsExportPlugin.inc.php:382
Plugin\$request
$request
Definition: Plugin.inc.php:68
DOIPubIdExportPlugin\display
display($args, $request)
Definition: DOIPubIdExportPlugin.inc.php:28
PKPServices\get
static get($service)
Definition: PKPServices.inc.php:49
DOIPubIdExportPlugin\getPubIdDisplayType
getPubIdDisplayType()
Definition: DOIPubIdExportPlugin.inc.php:68