Open Journal 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 FormValidatorCustom($this, 'doiObjects', 'required', 'plugins.pubIds.doi.manager.settings.doiObjectsRequired', function($enableIssueDoi) use ($form) {
63  return $form->getData('enableIssueDoi') || $form->getData('enablePublicationDoi') || $form->getData('enableRepresentationDoi');
64  }));
65  $this->addCheck(new FormValidatorRegExp($this, 'doiPrefix', 'required', 'plugins.pubIds.doi.manager.settings.doiPrefixPattern', '/^10\.[0-9]{4,7}$/'));
66  $this->addCheck(new FormValidatorCustom($this, 'doiIssueSuffixPattern', 'required', 'plugins.pubIds.doi.manager.settings.doiIssueSuffixPatternRequired', function($doiIssueSuffixPattern) use ($form) {
67  if ($form->getData('doiSuffix') == 'pattern' && $form->getData('enableIssueDoi')) return $doiIssueSuffixPattern != '';
68  return true;
69  }));
70  $this->addCheck(new FormValidatorCustom($this, 'doiPublicationSuffixPattern', 'required', 'plugins.pubIds.doi.manager.settings.doiPublicationSuffixPatternRequired', function($doiPublicationSuffixPattern) use ($form) {
71  if ($form->getData('doiSuffix') == 'pattern' && $form->getData('enablePublicationDoi')) return $doiPublicationSuffixPattern != '';
72  return true;
73  }));
74  $this->addCheck(new FormValidatorCustom($this, 'doiRepresentationSuffixPattern', 'required', 'plugins.pubIds.doi.manager.settings.doiRepresentationSuffixPatternRequired', function($doiRepresentationSuffixPattern) use ($form) {
75  if ($form->getData('doiSuffix') == 'pattern' && $form->getData('enableRepresentationDoi')) return $doiRepresentationSuffixPattern != '';
76  return true;
77  }));
78  $this->addCheck(new FormValidatorPost($this));
79  $this->addCheck(new FormValidatorCSRF($this));
80 
81  // for DOI reset requests
82  import('lib.pkp.classes.linkAction.request.RemoteActionConfirmationModal');
83  $request = Application::get()->getRequest();
84  $this->setData('clearPubIdsLinkAction', new LinkAction(
85  'reassignDOIs',
87  $request->getSession(),
88  __('plugins.pubIds.doi.manager.settings.doiReassign.confirm'),
89  __('common.delete'),
90  $request->url(null, null, 'manage', null, array('verb' => 'clearPubIds', 'plugin' => $plugin->getName(), 'category' => 'pubIds')),
91  'modal_delete'
92  ),
93  __('plugins.pubIds.doi.manager.settings.doiReassign'),
94  'delete'
95  ));
96  $this->setData('assignJournalWidePubIdsLinkAction', new LinkAction(
97  'assignDOIs',
99  $request->getSession(),
100  __('plugins.pubIds.doi.manager.settings.doiAssignJournalWide.confirm'),
101  __('plugins.pubIds.doi.manager.settings.doiAssignJournalWide'),
102  $request->url(null, null, 'manage', null, array('verb' => 'assignPubIds', 'plugin' => $plugin->getName(), 'category' => 'pubIds')),
103  'modal_confirm'
104  ),
105  __('plugins.pubIds.doi.manager.settings.doiAssignJournalWide'),
106  'advance'
107  ));
108  $this->setData('pluginName', $plugin->getName());
109  }
110 
111 
112  //
113  // Implement template methods from Form
114  //
118  function initData() {
119  $contextId = $this->_getContextId();
120  $plugin = $this->_getPlugin();
121  foreach($this->_getFormFields() as $fieldName => $fieldType) {
122  $this->setData($fieldName, $plugin->getSetting($contextId, $fieldName));
123  }
124  }
125 
129  function readInputData() {
130  $this->readUserVars(array_keys($this->_getFormFields()));
131  }
132 
136  function execute(...$functionArgs) {
137  $plugin = $this->_getPlugin();
138  $contextId = $this->_getContextId();
139  foreach($this->_getFormFields() as $fieldName => $fieldType) {
140  $plugin->updateSetting($contextId, $fieldName, $this->getData($fieldName), $fieldType);
141  }
142  parent::execute(...$functionArgs);
143  }
144 
145 
146  //
147  // Private helper methods
148  //
149  function _getFormFields() {
150  return array(
151  'enableIssueDoi' => 'bool',
152  'enablePublicationDoi' => 'bool',
153  'enableRepresentationDoi' => 'bool',
154  'doiPrefix' => 'string',
155  'doiSuffix' => 'string',
156  'doiIssueSuffixPattern' => 'string',
157  'doiPublicationSuffixPattern' => 'string',
158  'doiRepresentationSuffixPattern' => 'string',
159  );
160  }
161 }
162 
163 
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:135
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:155
DOISettingsForm\$_plugin
$_plugin
Definition: DOISettingsForm.inc.php:42
DOISettingsForm\execute
execute(... $functionArgs)
Definition: DOISettingsForm.inc.php:142
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:124