Open Journal Systems  3.3.0
MarkupSettingsForm.inc.php
1 <?php
2 
16 import('lib.pkp.classes.form.Form');
17 
18 define('MARKUP_CSL_STYLE_DEFAULT', '674e1c66aa817a0713a410915ac1b298');
19 define('MARKUP_DOCUMENT_SERVER_URL_DEFAULT', 'https://pkp-xml-demo.lib.sfu.ca/');
20 
21 class MarkupSettingsForm extends Form {
22 
24  protected $_journalId;
25 
27  protected $_plugin;
28 
30  protected $_settings;
31 
37  function __construct($plugin, $journalId) {
38  $this->_journalId = $journalId;
39  $this->_plugin = $plugin;
40 
41  parent::__construct($plugin->getTemplateResource('settingsForm.tpl'));
42 
43  // Validation checks for this form
44  $this->_settings = array(
45  'cslStyle' => 'string',
46  'markupHostPass' => 'string',
47  'markupHostURL' => 'string',
48  'markupHostUser' => 'string',
49  'wantedFormats' => 'object',
50  'xmlConversionStages' => 'object',
51  );
52 
53  $this->_plugin->import('classes.MarkupConversionHelper');
54  }
55 
61  function initData() {
62  $journalId = $this->_journalId;
63  $plugin = $this->_plugin;
64 
65  // User must at least load settings page for plugin to work with defaults.
66  if ($plugin->getSetting($journalId, 'cslStyle') == '') {
67  $plugin->updateSetting($journalId, 'cslStyle', MARKUP_CSL_STYLE_DEFAULT);
68  }
69  if ($plugin->getSetting($journalId, 'markupHostURL') == '') {
70  $plugin->updateSetting($journalId, 'markupHostURL', MARKUP_DOCUMENT_SERVER_URL_DEFAULT);
71  }
72 
73  $this->setData('authType', $plugin->getSetting($journalId, 'authType'));
74  $this->setData('cslStyle', $plugin->getSetting($journalId, 'cslStyle'));
75 
76  // Check if admin has entered credentials in config file.
79  $this->setData('markupConfigCredsAvailable', true);
80  // javascript needs this to construct csl style full url
81  $this->setData('markupHostURL', $configCreds['host']);
82  }
83  else {
84  $this->setData('markupConfigCredsAvailable', false);
85  $this->setData('markupHostUser', $plugin->getSetting($journalId, 'markupHostUser'));
86  $this->setData('markupHostPass', $plugin->getSetting($journalId, 'markupHostPass'));
87  $this->setData('markupHostURL', $plugin->getSetting($journalId, 'markupHostURL'));
88  }
89 
90  // Check if admin has specified a default citation style
91  $citationStyleHash = Config::getVar('markup', 'ots_citation_style_hash');
92  if (is_null($citationStyleHash)) {
93  $this->setData('markupConfigDefaultCitationHashAvailable', false);
94  }
95  else {
96  $this->setData('markupConfigDefaultCitationHashAvailable', true);
97  }
98 
99  // wanted formats
100  $wantedFormats = $plugin->getSetting($journalId, 'wantedFormats');
101  if (is_null($wantedFormats)) {
102  $wantedFormats = $this->_plugin->getFormatList();
103  }
104 
105  // conversion stages
106  $xmlConversionStages = $plugin->getSetting($journalId, 'xmlConversionStages');
107  if (is_null($xmlConversionStages)) {
108  $xmlConversionStages = $this->_plugin->getXmlConversionStages();
109  }
110 
111  $this->setData('wantedFormats', $wantedFormats);
112  $this->setData('xmlConversionStages', $xmlConversionStages);
113  }
114 
120  function readInputData() {
121  $this->readUserVars(
122  array(
123  'cslStyle',
124  'markupHostPass',
125  'markupHostURL',
126  'markupHostUser',
127  'wantedFormats',
128  'authType',
129  'xmlConversionStages',
130  )
131  );
132  }
133 
139  function validate() {
140 
141  // user credentials fields are available only when credentials are not set in config.inc.php
144  $authType = $this->getData('authType');
145  $loginCredsFieldsType = ($authType == 'site') ? 'required' : 'optional';
146  $this->addCheck(new FormValidator($this, 'authType', 'required', 'plugins.generic.markup.required.authType'));
147  $this->addCheck(new FormValidator($this, 'markupHostUser', $loginCredsFieldsType, "plugins.generic.markup.{$loginCredsFieldsType}.markupHostUser"));
148  $this->addCheck(new FormValidator($this, 'markupHostPass', $loginCredsFieldsType, "plugins.generic.markup.{$loginCredsFieldsType}.markupHostPass"));
149  $this->addCheck(new FormValidator($this, 'markupHostURL', 'required', 'plugins.generic.markup.required.markupHostURL'));
150  }
151 
152  // citation style field is available only if not set in config.inc.php my admin
153  $citationStyleHash = Config::getVar('markup', 'ots_citation_style_hash');
154  if (is_null($citationStyleHash)) {
155  $this->addCheck(new FormValidator($this, 'cslStyle', 'required', 'plugins.generic.markup.required.cslStyle'));
156  }
157 
158  $this->addCheck(new FormValidatorPost($this));
159  $this->addCheck(new FormValidator($this, 'wantedFormats', 'required', 'plugins.generic.markup.required.wantedFormats'));
160  $this->addCheck(new FormValidator($this, 'xmlConversionStages', 'required', 'plugins.generic.markup.required.xmlConversionStages'));
161 
162  return parent::validate();
163  }
164 
168  function fetch($request) {
169  $templateMgr = TemplateManager::getManager($request);
170  $templateMgr->assign('pluginJavaScriptURL', $this->_plugin->getJsUrl($request));
171 
172  $templateMgr->assign('pluginName', $this->_plugin->getName());
173  $templateMgr->assign('templatePath', $this->_plugin->getTemplatePath());
174 
175  // Signals indicating plugin compatibility
176  $templateMgr->assign('curlSupport', function_exists('curl_init') ? __('plugins.generic.markup.settings.installed') : __('plugins.generic.markup.settings.notInstalled'));
177  $templateMgr->assign('zipSupport', extension_loaded('zlib') ? __('plugins.generic.markup.settings.installed') : __('plugins.generic.markup.settings.notInstalled'));
178  $templateMgr->assign('pathInfo', $request->isPathInfoEnabled() ? __('plugins.generic.markup.settings.enabled') : __('plugins.generic.markup.settings.disabled'));
179 
180  return parent::fetch($request);
181  }
182 
186  function execute(...$functionArgs) {
187  $plugin = $this->_plugin;
188  $journalId = $this->_journalId;
189 
190  $markupHostURL = $this->getData('markupHostURL');
191  if ($markupHostURL) {
192  if (!parse_url($markupHostURL, PHP_URL_SCHEME)) {
193  $markupHostURL = 'http://' . $markupHostURL;
194  }
195  if (substr(parse_url($markupHostURL, PHP_URL_PATH), -1) != '/') {
196  $markupHostURL .= '/';
197  }
198  }
199 
200  $authType = $this->getData('authType');
201  $markupHostUser = $this->getData('markupHostUser');
202  $markupHostPass = $this->getData('markupHostPass');
203 
204  // clear user and password when authentication type is user
205  if ($authType == 'user') {
206  $markupHostUser = $markupHostPass = '';
207  }
208 
209  // if credentials are not set by admin, these fields will be available and validated
210  // thus need to be saved
213  $plugin->updateSetting($journalId, 'authType', $authType);
214  $plugin->updateSetting($journalId, 'markupHostURL', $markupHostURL);
215  $plugin->updateSetting($journalId, 'markupHostUser', $markupHostUser);
216  $plugin->updateSetting($journalId, 'markupHostPass', $markupHostPass);
217  }
218 
219  // same for citation style field
220  $citationStyleHash = Config::getVar('markup', 'ots_citation_style_hash');
221  if (is_null($citationStyleHash)) {
222  $plugin->updateSetting($journalId, 'cslStyle', $this->getData('cslStyle'));
223  }
224 
225  $plugin->updateSetting($journalId, 'wantedFormats', $this->getData('wantedFormats'));
226  $plugin->updateSetting($journalId, 'xmlConversionStages', $this->getData('xmlConversionStages'));
227 
228  parent::execute(...$functionArgs);
229  }
230 }
MarkupSettingsForm\$_settings
$_settings
Definition: MarkupSettingsForm.inc.php:39
MarkupSettingsForm\initData
initData()
Definition: MarkupSettingsForm.inc.php:70
MarkupSettingsForm\fetch
fetch($request)
Definition: MarkupSettingsForm.inc.php:177
MarkupSettingsForm
Form for Document Markup gateway plugin settings.
Definition: MarkupSettingsForm.inc.php:21
Form\setData
setData($key, $value=null)
Definition: Form.inc.php:229
Form\readUserVars
readUserVars($vars)
Definition: Form.inc.php:378
Form\getData
getData($key)
Definition: Form.inc.php:220
MarkupSettingsForm\$_journalId
$_journalId
Definition: MarkupSettingsForm.inc.php:27
MarkupSettingsForm\__construct
__construct($plugin, $journalId)
Definition: MarkupSettingsForm.inc.php:46
FormValidatorPost
Form validation check to make sure the form is POSTed.
Definition: FormValidatorPost.inc.php:18
MarkupConversionHelper\readCredentialsFromConfig
static readCredentialsFromConfig()
Definition: MarkupConversionHelper.inc.php:611
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
FormValidator
Class to represent a form validation check.
Definition: FormValidator.inc.php:23
MarkupConversionHelper\canUseCredentialsFromConfig
static canUseCredentialsFromConfig($creds)
Definition: MarkupConversionHelper.inc.php:624
MarkupSettingsForm\validate
validate()
Definition: MarkupSettingsForm.inc.php:148
Form\addCheck
addCheck($formValidator)
Definition: Form.inc.php:395
MarkupSettingsForm\readInputData
readInputData()
Definition: MarkupSettingsForm.inc.php:129
Form
Class defining basic operations for handling HTML forms.
Definition: Form.inc.php:47
MarkupSettingsForm\execute
execute(... $functionArgs)
Definition: MarkupSettingsForm.inc.php:195
MarkupSettingsForm\$_plugin
$_plugin
Definition: MarkupSettingsForm.inc.php:33