<?php
/**
* @file plugins/importexport/doaj/classes/form/DOAJSettingsForm.php
*
* Copyright (c) 2014-2022 Simon Fraser University
* Copyright (c) 2003-2022 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @class DOAJSettingsForm
*
* @brief Form for journal managers to setup DOAJ plugin
*/
namespace APP\plugins\importexport\doaj\classes\form;
use PKP\form\Form;
class DOAJSettingsForm extends Form
{
//
// Private properties
//
/** @var int */
public $_contextId;
/**
* Get the context ID.
*
* @return int
*/
public function _getContextId()
{
return $this->_contextId;
}
/** @var \PKP\plugins\Plugin */
public $_plugin;
/**
* Get the plugin.
*
* @return \PKP\plugins\Plugin
*/
public function _getPlugin()
{
return $this->_plugin;
}
//
// Constructor
//
/**
* Constructor
*
* @param \PKP\plugins\Plugin $plugin
* @param int $contextId
*/
public function __construct($plugin, $contextId)
{
$this->_contextId = $contextId;
$this->_plugin = $plugin;
parent::__construct($plugin->getTemplateResource('settingsForm.tpl'));
// Add form validation checks.
$this->addCheck(new \PKP\form\validation\FormValidatorPost($this));
$this->addCheck(new \PKP\form\validation\FormValidatorCSRF($this));
}
//
// Implement template methods from Form
//
/**
* @copydoc Form::initData()
*/
public function initData()
{
$contextId = $this->_getContextId();
$plugin = $this->_getPlugin();
foreach ($this->getFormFields() as $fieldName => $fieldType) {
$this->setData($fieldName, $plugin->getSetting($contextId, $fieldName));
}
}
/**
* @copydoc Form::readInputData()
*/
public function readInputData()
{
$this->readUserVars(array_keys($this->getFormFields()));
}
/**
* @copydoc Form::execute()
*/
public function execute(...$functionArgs)
{
$plugin = $this->_getPlugin();
$contextId = $this->_getContextId();
parent::execute(...$functionArgs);
foreach ($this->getFormFields() as $fieldName => $fieldType) {
$plugin->updateSetting($contextId, $fieldName, $this->getData($fieldName), $fieldType);
}
}
//
// Public helper methods
//
/**
* Get form fields
*
* @return array (field name => field type)
*/
public function getFormFields()
{
return [
'apiKey' => 'string',
'automaticRegistration' => 'bool',
'testMode' => 'bool'
];
}
/**
* Is the form field optional
*
* @param string $settingName
*
* @return bool
*/
public function isOptional($settingName)
{
return in_array($settingName, ['apiKey', 'automaticRegistration', 'testMode']);
}
}
|