Open Journal Systems  3.3.0
MedraSettingsForm.inc.php
1 <?php
2 
16 import('lib.pkp.classes.form.Form');
17 
18 class MedraSettingsForm extends Form {
19 
20  //
21  // Private properties
22  //
24  var $_contextId;
25 
30  function _getContextId() {
31  return $this->_contextId;
32  }
33 
35  var $_plugin;
36 
41  function _getPlugin() {
42  return $this->_plugin;
43  }
44 
45  //
46  // Constructor
47  //
53  function __construct($plugin, $contextId) {
54  $this->_contextId = $contextId;
55  $this->_plugin = $plugin;
56 
57  parent::__construct($plugin->getTemplateResource('settingsForm.tpl'));
58 
59  // DOI plugin settings action link
60  $pubIdPlugins = PluginRegistry::loadCategory('pubIds', true);
61  if (isset($pubIdPlugins['doipubidplugin'])) {
63  $request = $application->getRequest();
64  $dispatcher = $application->getDispatcher();
65  import('lib.pkp.classes.linkAction.request.AjaxModal');
66  $doiPluginSettingsLinkAction = new LinkAction(
67  'settings',
68  new AjaxModal(
69  $dispatcher->url($request, ROUTE_COMPONENT, null, 'grid.settings.plugins.SettingsPluginGridHandler', 'manage', null, array('plugin' => 'doipubidplugin', 'category' => 'pubIds')),
70  __('plugins.importexport.common.settings.DOIPluginSettings')
71  ),
72  __('plugins.importexport.common.settings.DOIPluginSettings'),
73  null
74  );
75  $this->setData('doiPluginSettingsLinkAction', $doiPluginSettingsLinkAction);
76  }
77 
78  // Add form validation checks.
79  $this->addCheck(new FormValidator($this, 'registrantName', FORM_VALIDATOR_REQUIRED_VALUE, 'plugins.importexport.medra.settings.form.registrantNameRequired'));
80  $this->addCheck(new FormValidator($this, 'fromCompany', FORM_VALIDATOR_REQUIRED_VALUE, 'plugins.importexport.medra.settings.form.fromCompanyRequired'));
81  $this->addCheck(new FormValidator($this, 'fromName', FORM_VALIDATOR_REQUIRED_VALUE, 'plugins.importexport.medra.settings.form.fromNameRequired'));
82  $this->addCheck(new FormValidatorEmail($this, 'fromEmail', FORM_VALIDATOR_REQUIRED_VALUE, 'plugins.importexport.medra.settings.form.fromEmailRequired'));
83  $this->addCheck(new FormValidatorInSet($this, 'exportIssuesAs', FORM_VALIDATOR_REQUIRED_VALUE, 'plugins.importexport.medra.settings.form.exportIssuesAs', array(O4DOI_ISSUE_AS_WORK, O4DOI_ISSUE_AS_MANIFESTATION)));
84  $this->addCheck(new FormValidatorInSet($this, 'publicationCountry', FORM_VALIDATOR_REQUIRED_VALUE, 'plugins.importexport.medra.settings.form.publicationCountry', array_keys($this->_getCountries())));
85  // The username is used in HTTP basic authentication and according to RFC2617 it therefore may not contain a colon.
86  $this->addCheck(new FormValidatorRegExp($this, 'username', FORM_VALIDATOR_OPTIONAL_VALUE, 'plugins.importexport.medra.settings.form.usernameRequired', '/^[^:]+$/'));
87  $this->addCheck(new FormValidatorPost($this));
88  }
89 
90 
91  //
92  // Implement template methods from Form
93  //
97  function initData() {
98  $contextId = $this->_getContextId();
99  $plugin = $this->_getPlugin();
100  foreach($this->getFormFields() as $fieldName => $fieldType) {
101  $this->setData($fieldName, $plugin->getSetting($contextId, $fieldName));
102  }
103  }
104 
108  function fetch($request) {
109  $templateMgr = TemplateManager::getManager($request);
110 
111  // Issue export options.
112  $exportIssueOptions = array(
113  O4DOI_ISSUE_AS_WORK => __('plugins.importexport.medra.settings.form.work'),
114  O4DOI_ISSUE_AS_MANIFESTATION => __('plugins.importexport.medra.settings.form.manifestation'),
115  );
116  $templateMgr->assign('exportIssueOptions', $exportIssueOptions);
117 
118  // Countries.
119  $templateMgr->assign('countries', $this->_getCountries());
120  return parent::fetch($request);
121  }
122 
126  function readInputData() {
127  $this->readUserVars(array_keys($this->getFormFields()));
128  }
129 
133  function execute(...$functionArgs) {
134  $plugin = $this->_getPlugin();
135  $contextId = $this->_getContextId();
136  parent::execute(...$functionArgs);
137  foreach($this->getFormFields() as $fieldName => $fieldType) {
138  $plugin->updateSetting($contextId, $fieldName, $this->getData($fieldName), $fieldType);
139  }
140  }
141 
142 
143  //
144  // Public helper methods
145  //
150  function getFormFields() {
151  return array(
152  'registrantName' => 'string',
153  'fromCompany' => 'string',
154  'fromName' => 'string',
155  'fromEmail' => 'string',
156  'publicationCountry' => 'string',
157  'exportIssuesAs' => 'int',
158  'username' => 'string',
159  'password' => 'string',
160  'automaticRegistration' => 'bool',
161  'testMode' => 'bool'
162  );
163  }
164 
170  function isOptional($settingName) {
171  return in_array($settingName, array('username', 'password', 'automaticRegistration', 'testMode'));
172  }
173 
174 
175  //
176  // Private helper methods
177  //
182  function _getCountries() {
183  $isoCodes = new \Sokil\IsoCodes\IsoCodesFactory();
184  $countries = array();
185  foreach ($isoCodes->getCountries() as $country) {
186  $countries[$country->getAlpha2()] = $country->getLocalName();
187  }
188  asort($countries);
189  return $countries;
190  }
191 }
192 
193 
$application
$application
Definition: index.php:65
MedraSettingsForm\$_contextId
$_contextId
Definition: MedraSettingsForm.inc.php:27
MedraSettingsForm\_getCountries
_getCountries()
Definition: MedraSettingsForm.inc.php:188
Form\setData
setData($key, $value=null)
Definition: Form.inc.php:229
Form\readUserVars
readUserVars($vars)
Definition: Form.inc.php:378
FormValidatorEmail
Form validation check for email addresses.
Definition: FormValidatorEmail.inc.php:20
Form\getData
getData($key)
Definition: Form.inc.php:220
MedraSettingsForm\getFormFields
getFormFields()
Definition: MedraSettingsForm.inc.php:156
FormValidatorPost
Form validation check to make sure the form is POSTed.
Definition: FormValidatorPost.inc.php:18
MedraSettingsForm\_getPlugin
_getPlugin()
Definition: MedraSettingsForm.inc.php:47
PluginRegistry\loadCategory
static loadCategory($category, $enabledOnly=false, $mainContextId=null)
Definition: PluginRegistry.inc.php:103
MedraSettingsForm\readInputData
readInputData()
Definition: MedraSettingsForm.inc.php:132
MedraSettingsForm\isOptional
isOptional($settingName)
Definition: MedraSettingsForm.inc.php:176
MedraSettingsForm\__construct
__construct($plugin, $contextId)
Definition: MedraSettingsForm.inc.php:59
AjaxModal
A modal that retrieves its content from via AJAX.
Definition: AjaxModal.inc.php:18
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
MedraSettingsForm\_getContextId
_getContextId()
Definition: MedraSettingsForm.inc.php:33
MedraSettingsForm\execute
execute(... $functionArgs)
Definition: MedraSettingsForm.inc.php:139
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
FormValidator
Class to represent a form validation check.
Definition: FormValidator.inc.php:23
FormValidatorRegExp
Form validation check using a regular expression.
Definition: FormValidatorRegExp.inc.php:18
MedraSettingsForm\$_plugin
$_plugin
Definition: MedraSettingsForm.inc.php:41
Form\addCheck
addCheck($formValidator)
Definition: Form.inc.php:395
FormValidatorInSet
Form validation check that checks if value is within a certain set.
Definition: FormValidatorInSet.inc.php:18
Form
Class defining basic operations for handling HTML forms.
Definition: Form.inc.php:47
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
MedraSettingsForm\fetch
fetch($request)
Definition: MedraSettingsForm.inc.php:114
MedraSettingsForm
Form for journal managers to setup the mEDRA plug-in.
Definition: MedraSettingsForm.inc.php:18
MedraSettingsForm\initData
initData()
Definition: MedraSettingsForm.inc.php:103