[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
14082024
/
Data
/
htdocs
/
htdocs
/
jurnal-kesmas
/
lib
/
pkp
/
pages
/
dois
/
[
Home
]
File: PKPDoisHandler.php
<?php /** * @file /pages/dois/PKPDoisHandler.php * * Copyright (c) 2014-2021 Simon Fraser University * Copyright (c) 2003-2021 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class PKPDoisHandler * * @ingroup pages_doi * * @brief Handle requests for DOI management functions. */ namespace PKP\pages\dois; use APP\components\forms\context\DoiSetupSettingsForm; use APP\handler\Handler; use APP\template\TemplateManager; use PKP\components\forms\context\PKPDoiRegistrationSettingsForm; use PKP\components\forms\context\PKPDoiSetupSettingsForm; use PKP\context\Context; use PKP\core\PKPApplication; use PKP\core\PKPRequest; use PKP\plugins\Hook; use PKP\plugins\IPKPDoiRegistrationAgency; use PKP\security\authorization\DoisEnabledPolicy; use PKP\security\authorization\PolicySet; use PKP\security\authorization\RoleBasedHandlerOperationPolicy; use PKP\security\Role; abstract class PKPDoisHandler extends Handler { public $_isBackendPage = true; /** * Constructor */ public function __construct() { parent::__construct(); $this->addRoleAssignment( [Role::ROLE_ID_MANAGER, Role::ROLE_ID_SITE_ADMIN], ['index', 'management'] ); } /** * @copydoc PKPHandler::authorize() */ public function authorize($request, &$args, $roleAssignments) { $this->addPolicy(new \PKP\security\authorization\ContextRequiredPolicy($request, $roleAssignments)); // DOIs must be enabled to access DOI management page $this->addPolicy(new DoisEnabledPolicy($request->getContext())); $rolePolicy = new PolicySet(PolicySet::COMBINING_PERMIT_OVERRIDES); foreach ($roleAssignments as $role => $operations) { $rolePolicy->addPolicy(new RoleBasedHandlerOperationPolicy($request, $role, $operations)); } $this->addPolicy($rolePolicy); return parent::authorize($request, $args, $roleAssignments); } /** * Displays the DOI management page * * @param array $args * @param PKPRequest $request */ public function index($args, $request) { $this->setupTemplate($request); $context = $request->getContext(); $enabledDoiTypes = $context->getData(Context::SETTING_ENABLED_DOI_TYPES) ?? []; $versionDois = $context->getData(Context::SETTING_DOI_VERSIONING) ?? false; $templateMgr = TemplateManager::getManager($request); $commonArgs = [ 'doiPrefix' => $context->getData(Context::SETTING_DOI_PREFIX), 'doiApiUrl' => $request->getDispatcher()->url($request, PKPApplication::ROUTE_API, $context->getPath(), 'dois'), 'lazyLoad' => true, 'enabledDoiTypes' => $enabledDoiTypes, 'versionDois' => $versionDois, 'registrationAgencyInfo' => $this->_getRegistrationAgencyInfo($context), ]; Hook::call('DoisHandler::setListPanelArgs', [&$commonArgs]); $stateComponents = $this->getAppStateComponents($request, $enabledDoiTypes, $commonArgs); // DOI settings $router = $request->getRouter(); $dispatcher = $request->getDispatcher(); $contextApiUrl = $dispatcher->url($request, PKPApplication::ROUTE_API, $context->getPath(), 'contexts/' . $context->getId()); $supportedFormLocales = $context->getSupportedFormLocaleNames(); $locales = array_map(fn (string $key, string $name) => ['key' => $key, 'label' => $name], array_keys($supportedFormLocales), $supportedFormLocales); $doiSetupSettingsForm = new DoiSetupSettingsForm($contextApiUrl, $locales, $context); $doiRegistrationSettingsForm = new PKPDoiRegistrationSettingsForm($contextApiUrl, $locales, $context); $stateComponents[PKPDoiSetupSettingsForm::FORM_DOI_SETUP_SETTINGS] = $doiSetupSettingsForm->getConfig(); $stateComponents[PKPDoiRegistrationSettingsForm::FORM_DOI_REGISTRATION_SETTINGS] = $doiRegistrationSettingsForm->getConfig(); $templateMgr->setState(['components' => $stateComponents]); $templateMgr->assign($this->getTemplateVariables($enabledDoiTypes)); $templateMgr->display('management/dois.tpl'); } /** * Set app-specific state components to appear on DOI management page */ abstract protected function getAppStateComponents(\APP\core\Request $request, array $enabledDoiTypes, array $commonArgs): array; /** * Set Smarty template variables. Which tabs to display are set by the APP. */ protected function getTemplateVariables(array $enabledDoiTypes): array { return [ 'pageTitle' => __('doi.manager.displayName'), 'pageComponent' => 'DoiPage', ]; } protected function _getRegistrationAgencyInfo(Context $context): \stdClass { $info = new \stdClass(); $info->isConfigured = false; $info->displayName = ''; $info->errorMessageKey = null; $info->registeredMessageKey = null; $info->errorMessagePreamble = null; $info->registeredMessagePreamble = null; /** @var IPKPDoiRegistrationAgency $plugin */ $plugin = $context->getConfiguredDoiAgency(); if ($plugin != null) { $info->isConfigured = $plugin->isPluginConfigured($context); $info->displayName = $plugin->getRegistrationAgencyName(); $info->errorMessageKey = $plugin->getErrorMessageKey(); $info->registeredMessageKey = $plugin->getRegisteredMessageKey(); $info->errorMessagePreamble = __('manager.dois.registrationAgency.errorMessagePreamble', ['registrationAgency' => $plugin->getRegistrationAgencyName()]); $info->registeredMessagePreamble = __('manager.dois.registrationAgency.registeredMessagePreamble', ['registrationAgency' => $plugin->getRegistrationAgencyName()]); } return $info; } }