[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
05122024
/
htdocs
/
jurnal-kesmas
/
plugins
/
generic
/
datacite
/
classes
/
[
Home
]
File: DataciteSettings.php
<?php /** * @file plugins/generic/datacite/classes/DataciteSetting.php * * Copyright (c) 2014-2023 Simon Fraser University * Copyright (c) 2003-2023 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class DataciteSettings * * @ingroup plugins_generic_datacite_classes * * @brief Setting management class to handle schema, fields, validation, etc. for Datacite plugin */ namespace APP\plugins\generic\datacite\classes; use Illuminate\Validation\Validator; use PKP\components\forms\FieldHTML; use PKP\components\forms\FieldOptions; use PKP\components\forms\FieldText; use PKP\context\Context; class DataciteSettings extends \PKP\doi\RegistrationAgencySettings { public function getSchema(): \stdClass { return (object) [ 'title' => 'Datacite Plugin', 'description' => 'Registration agency plugin for Datacite', 'type' => 'object', 'required' => [], 'properties' => (object) [ 'username' => (object) [ 'type' => 'string', 'validation' => ['nullable', 'max:50'] ], 'password' => (object) [ 'type' => 'string', 'validation' => ['nullable', 'max:50'] ], 'testMode' => (object) [ 'type' => 'boolean', 'validation' => ['nullable'] ], 'testUsername' => (object) [ 'type' => 'string', 'validation' => ['nullable', 'max:50'] ], 'testPassword' => (object) [ 'type' => 'string', 'validation' => ['nullable', 'max:50'] ], 'testDOIPrefix' => (object) [ 'type' => 'string', 'validation' => ['nullable', 'max:50'] ], ], ]; } /** * @inheritDoc */ public function getFields(Context $context): array { return [ new FieldHTML('preamble', [ 'label' => __('plugins.importexport.datacite.settings.label'), 'description' => $this->_getPreambleText(), ]), new FieldText('username', [ 'label' => __('plugins.importexport.datacite.settings.form.username'), 'value' => $this->agencyPlugin->getSetting($context->getId(), 'username'), ]), new FieldText('password', [ 'label' => __('plugins.importexport.common.settings.form.password'), 'description' => __('plugins.importexport.common.settings.form.password.description'), 'inputType' => 'password', 'value' => $this->agencyPlugin->getSetting($context->getId(), 'password'), ]), new FieldOptions('testMode', [ 'label' => __('plugins.importexport.common.settings.form.testMode.label'), 'options' => [ ['value' => true, 'label' => __('plugins.importexport.datacite.settings.form.testMode.description')], ], 'value' => $this->agencyPlugin->getSetting($context->getId(), 'testMode'), ]), new FieldText('testUsername', [ 'label' => __('plugins.importexport.datacite.settings.form.testUsername'), 'value' => $this->agencyPlugin->getSetting($context->getId(), 'testUsername'), ]), new FieldText('testPassword', [ 'label' => __('plugins.importexport.datacite.settings.form.testPassword'), 'description' => __('plugins.importexport.common.settings.form.password.description'), 'inputType' => 'password', 'value' => $this->agencyPlugin->getSetting($context->getId(), 'testPassword'), ]), new FieldText('testDOIPrefix', [ 'label' => __('plugins.importexport.datacite.settings.form.testDOIPrefix'), 'value' => $this->agencyPlugin->getSetting($context->getId(), 'testDOIPrefix'), ]), ]; } /** * @inheritDoc */ protected function addValidationChecks(Validator &$validator, $props): void { // If in test mode, the test DOI prefix must be set $validator->after(function (Validator $validator) use ($props) { if ($props['testMode']) { if (empty($props['testDOIPrefix'])) { $validator->errors()->add('testDOIPrefix', __('plugins.importexport.datacite.settings.form.testDOIPrefixRequired')); } } }); // If username exists, there will be the possibility to register from within OJS, // so the test username must exist too $validator->after(function (Validator $validator) use ($props) { if (!empty($props['username']) && empty($props['testUsername'])) { $validator->errors()->add('testUsername', __('plugins.importexport.datacite.settings.form.testUsernameRequired')); } }); } protected function _getPreambleText(): string { $text = ''; $text .= '<p>' . __('plugins.importexport.datacite.settings.description') . '</p>'; $text .= '<p>' . __('plugins.importexport.datacite.intro') . '</p>'; return $text; } }