Open Monograph Press  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  public function _getContextId() {
32  return $this->_contextId;
33  }
34 
36  var $_plugin;
37 
42  public function _getPlugin() {
43  return $this->_plugin;
44  }
45 
46 
47  //
48  // Constructor
49  //
55  public 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($enablePublicationDoi) use ($form) {
63  return $form->getData('enablePublicationDoi') || $form->getData('enableRepresentationDoi') || $form->getData('enableSubmissionFileDoi');
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, 'doiPublicationSuffixPattern', 'required', 'plugins.pubIds.doi.manager.settings.doiPublicationSuffixPatternRequired', function($doiPublicationSuffixPattern) use ($form) {
67  if ($form->getData('doiSuffix') == 'pattern' && $form->getData('enablePublicationDoi')) return $doiPublicationSuffixPattern != '';
68  return true;
69  }));
70  $this->addCheck(new FormValidatorCustom($this, 'doiChapterSuffixPattern', 'required', 'plugins.pubIds.doi.manager.settings.doiChapterSuffixPatternRequired', function($doiChapterSuffixPattern) use ($form) {
71  if ($form->getData('doiSuffix') == 'pattern' && $form->getData('enableChapterDoi')) return $doiChapterSuffixPattern != '';
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 FormValidatorCustom($this, 'doiSubmissionFileSuffixPattern', 'required', 'plugins.pubIds.doi.manager.settings.doiSubmissionFileSuffixPatternRequired', function($doiSubmissionFileSuffixPattern) use ($form) {
79  if ($form->getData('doiSuffix') == 'pattern' && $form->getData('enableSubmissionFileDoi')) return $doiSubmissionFileSuffixPattern != '';
80  return true;
81  }));
82  $this->addCheck(new FormValidatorPost($this));
83  $this->addCheck(new FormValidatorCSRF($this));
84 
85  // for DOI reset requests
86  import('lib.pkp.classes.linkAction.request.RemoteActionConfirmationModal');
87  $request = Application::get()->getRequest();
88  $this->setData('clearPubIdsLinkAction', new LinkAction(
89  'reassignDOIs',
91  $request->getSession(),
92  __('plugins.pubIds.doi.manager.settings.doiReassign.confirm'),
93  __('common.delete'),
94  $request->url(null, null, 'manage', null, array('verb' => 'clearPubIds', 'plugin' => $plugin->getName(), 'category' => 'pubIds')),
95  'modal_delete'
96  ),
97  __('plugins.pubIds.doi.manager.settings.doiReassign'),
98  'delete'
99  ));
100  $this->setData('pluginName', $plugin->getName());
101  }
102 
103 
104  //
105  // Implement template methods from Form
106  //
110  public function initData() {
111  $contextId = $this->_getContextId();
112  $plugin = $this->_getPlugin();
113  foreach($this->_getFormFields() as $fieldName => $fieldType) {
114  $this->setData($fieldName, $plugin->getSetting($contextId, $fieldName));
115  }
116  }
117 
121  public function readInputData() {
122  $this->readUserVars(array_keys($this->_getFormFields()));
123  }
124 
128  public function execute(...$functionArgs) {
129  $plugin = $this->_getPlugin();
130  $contextId = $this->_getContextId();
131  foreach($this->_getFormFields() as $fieldName => $fieldType) {
132  $plugin->updateSetting($contextId, $fieldName, $this->getData($fieldName), $fieldType);
133  }
134  parent::execute(...$functionArgs);
135  }
136 
137 
138  //
139  // Private helper methods
140  //
141  public function _getFormFields() {
142  return array(
143  'enablePublicationDoi' => 'bool',
144  'enableChapterDoi' => 'bool',
145  'enableRepresentationDoi' => 'bool',
146  'enableSubmissionFileDoi' => 'bool',
147  'doiPrefix' => 'string',
148  'doiSuffix' => 'string',
149  'doiPublicationSuffixPattern' => 'string',
150  'doiChapterSuffixPattern' => 'string',
151  'doiRepresentationSuffixPattern' => 'string',
152  'doiSubmissionFileSuffixPattern' => 'string',
153  );
154  }
155 }
156 
157 
RemoteActionConfirmationModal
Class defining a simple confirmation modal with a remote action and ok/cancel buttons.
Definition: RemoteActionConfirmationModal.inc.php:18
DOISettingsForm
Form for press 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:127
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:147
DOISettingsForm\$_plugin
$_plugin
Definition: DOISettingsForm.inc.php:42
DOISettingsForm\execute
execute(... $functionArgs)
Definition: DOISettingsForm.inc.php:134
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:116