[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
05122024
/
htdocs
/
jurnal-kesmas
/
v1
/
lib
/
pkp
/
classes
/
doi
/
[
Home
]
File: RegistrationAgencySettings.php
<?php /** * @file classes/doi/RegistrationAgencySettings.php * * Copyright (c) 2014-2023 Simon Fraser University * Copyright (c) 2000-2023 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class RegistrationAgencySettings * * @ingroup doi * * @brief Base class for registration agency plugin settings management */ namespace PKP\doi; use APP\core\Services; use APP\plugins\IDoiRegistrationAgency; use Illuminate\Validation\Validator; use PKP\components\forms\Field; use PKP\context\Context; use PKP\plugins\Hook; use PKP\plugins\Plugin; use PKP\services\interfaces\EntityWriteInterface; use PKP\services\PKPSchemaService; use PKP\validation\ValidatorFactory; abstract class RegistrationAgencySettings { protected IDoiRegistrationAgency|Plugin $agencyPlugin; public function __construct(IDoiRegistrationAgency $agencyPlugin) { $this->agencyPlugin = $agencyPlugin; Hook::add('Schema::get::' . $this::class, [$this, 'addToSchema']); } public function validate(array $props): array { /** @var PKPSchemaService $schemaService */ $schemaService = Services::get('schema'); $validator = ValidatorFactory::make( $props, $schemaService->getValidationRules($this::class, []), ); // Check required ValidatorFactory::required( $validator, EntityWriteInterface::VALIDATE_ACTION_EDIT, $schemaService->getRequiredProps($this::class), $schemaService->getMultilingualProps($this::class), [], '', ); $this->addValidationChecks($validator, $props); if ($validator->fails()) { $errors = $schemaService->formatValidationErrors($validator->errors()); } return $errors ?? []; } abstract public function getSchema(): \stdClass; public function addToSchema($hookname, $args): bool { $schema = &$args[0]; $schema = $this->getSchema(); return Hook::CONTINUE; } /** * Gets plugin-specific settings field to inject into DOI registration settings form. * * @return Field[] */ abstract public function getFields(Context $context): array; /** * Overwrite to add additional, plugin-specific validation checks */ protected function addValidationChecks(Validator &$validator, array $props): void { } }