Open Preprint Systems  3.3.0
DOISettingsForm.inc.php
1 <?php
2 
17 import('lib.pkp.classes.form.Form');
18 
19 class DOISettingsForm extends Form {
20 
21  //
22  // Private properties
23  //
25  var $_contextId;
26 
31  function _getContextId() {
32  return $this->_contextId;
33  }
34 
36  var $_plugin;
37 
42  function _getPlugin() {
43  return $this->_plugin;
44  }
45 
46 
47  //
48  // Constructor
49  //
55  function __construct($plugin, $contextId) {
56  $this->_contextId = $contextId;
57  $this->_plugin = $plugin;
58 
59  parent::__construct($plugin->getTemplateResource('settingsForm.tpl'));
60 
61  $form = $this;
62  $this->addCheck(new FormValidatorRegExp($this, 'doiPrefix', 'required', 'plugins.pubIds.doi.manager.settings.doiPrefixPattern', '/^10\.[0-9]{4,7}$/'));
63  $this->addCheck(new FormValidatorCustom($this, 'doiPublicationSuffixPattern', 'required', 'plugins.pubIds.doi.manager.settings.doiPublicationSuffixPatternRequired', function($doiPublicationSuffixPattern) use ($form) {
64  if ($form->getData('doiSuffix') == 'pattern' && $form->getData('enablePublicationDoi')) return $doiPublicationSuffixPattern != '';
65  return true;
66  }));
67  $this->addCheck(new FormValidatorCustom($this, 'doiRepresentationSuffixPattern', 'required', 'plugins.pubIds.doi.manager.settings.doiRepresentationSuffixPatternRequired', function($doiRepresentationSuffixPattern) use ($form) {
68  if ($form->getData('doiSuffix') == 'pattern' && $form->getData('enableRepresentationDoi')) return $doiRepresentationSuffixPattern != '';
69  return true;
70  }));
71  $this->addCheck(new FormValidatorPost($this));
72  $this->addCheck(new FormValidatorCSRF($this));
73 
74  // for DOI reset requests
75  import('lib.pkp.classes.linkAction.request.RemoteActionConfirmationModal');
76  $request = Application::get()->getRequest();
77  $this->setData('clearPubIdsLinkAction', new LinkAction(
78  'reassignDOIs',
80  $request->getSession(),
81  __('plugins.pubIds.doi.manager.settings.doiReassign.confirm'),
82  __('common.delete'),
83  $request->url(null, null, 'manage', null, array('verb' => 'clearPubIds', 'plugin' => $plugin->getName(), 'category' => 'pubIds')),
84  'modal_delete'
85  ),
86  __('plugins.pubIds.doi.manager.settings.doiReassign'),
87  'delete'
88  ));
89  $this->setData('assignJournalWidePubIdsLinkAction', new LinkAction(
90  'assignDOIs',
92  $request->getSession(),
93  __('plugins.pubIds.doi.manager.settings.doiAssignJournalWide.confirm'),
94  __('plugins.pubIds.doi.manager.settings.doiAssignJournalWide'),
95  $request->url(null, null, 'manage', null, array('verb' => 'assignPubIds', 'plugin' => $plugin->getName(), 'category' => 'pubIds')),
96  'modal_confirm'
97  ),
98  __('plugins.pubIds.doi.manager.settings.doiAssignJournalWide'),
99  'advance'
100  ));
101  $this->setData('pluginName', $plugin->getName());
102  }
103 
104 
105  //
106  // Implement template methods from Form
107  //
111  function initData() {
112  $contextId = $this->_getContextId();
113  $plugin = $this->_getPlugin();
114  foreach($this->_getFormFields() as $fieldName => $fieldType) {
115  $this->setData($fieldName, $plugin->getSetting($contextId, $fieldName));
116  }
117  }
118 
122  function readInputData() {
123  $this->readUserVars(array_keys($this->_getFormFields()));
124  }
125 
129  function execute(...$functionArgs) {
130  $plugin = $this->_getPlugin();
131  $contextId = $this->_getContextId();
132  foreach($this->_getFormFields() as $fieldName => $fieldType) {
133  $plugin->updateSetting($contextId, $fieldName, $this->getData($fieldName), $fieldType);
134  }
135  parent::execute(...$functionArgs);
136  }
137 
138 
139  //
140  // Private helper methods
141  //
142  function _getFormFields() {
143  return array(
144  'enablePublicationDoi' => 'bool',
145  'enableRepresentationDoi' => 'bool',
146  'enablePublicationDoiAutoAssign' => 'bool',
147  'doiPrefix' => 'string',
148  'doiSuffix' => 'string',
149  'doiPublicationSuffixPattern' => 'string',
150  'doiRepresentationSuffixPattern' => 'string',
151  );
152  }
153 }
154 
155 
RemoteActionConfirmationModal
Class defining a simple confirmation modal with a remote action and ok/cancel buttons.
Definition: RemoteActionConfirmationModal.inc.php:18
DOISettingsForm
Form for journal managers to setup DOI plugin.
Definition: DOISettingsForm.inc.php:19
DOISettingsForm\_getPlugin
_getPlugin()
Definition: DOISettingsForm.inc.php:48
Form\setData
setData($key, $value=null)
Definition: Form.inc.php:229
DOISettingsForm\readInputData
readInputData()
Definition: DOISettingsForm.inc.php:128
Form\readUserVars
readUserVars($vars)
Definition: Form.inc.php:378
Form\getData
getData($key)
Definition: Form.inc.php:220
FormValidatorPost
Form validation check to make sure the form is POSTed.
Definition: FormValidatorPost.inc.php:18
DOISettingsForm\_getFormFields
_getFormFields()
Definition: DOISettingsForm.inc.php:148
DOISettingsForm\$_plugin
$_plugin
Definition: DOISettingsForm.inc.php:42
DOISettingsForm\execute
execute(... $functionArgs)
Definition: DOISettingsForm.inc.php:135
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
DOISettingsForm\_getContextId
_getContextId()
Definition: DOISettingsForm.inc.php:34
FormValidatorRegExp
Form validation check using a regular expression.
Definition: FormValidatorRegExp.inc.php:18
Form\addCheck
addCheck($formValidator)
Definition: Form.inc.php:395
FormValidatorCSRF
Form validation check to make sure the CSRF token is correct.
Definition: FormValidatorCSRF.inc.php:18
DOISettingsForm\$_contextId
$_contextId
Definition: DOISettingsForm.inc.php:28
Form
Class defining basic operations for handling HTML forms.
Definition: Form.inc.php:47
DOISettingsForm\__construct
__construct($plugin, $contextId)
Definition: DOISettingsForm.inc.php:61
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
FormValidatorCustom
Form validation check with a custom user function performing the validation check.
Definition: FormValidatorCustom.inc.php:18
DOISettingsForm\initData
initData()
Definition: DOISettingsForm.inc.php:117