[ 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
/
user
/
form
/
[
Home
]
File: UserFormHelper.php
<?php /** * @file classes/user/form/UserFormHelper.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 UserFormHelper * * @ingroup user_form * * @brief Helper functions for shared user form concerns. */ namespace PKP\user\form; use APP\core\Application; use APP\facades\Repo; use PKP\core\PKPRequest; use PKP\form\Form; use PKP\security\Role; use PKP\template\PKPTemplateManager; use PKP\user\User; class UserFormHelper { /** * Constructor */ public function __construct() { } /** * Assign role selection content to the template manager. * * @param PKPTemplateManager $templateMgr * @param PKPRequest $request */ public function assignRoleContent($templateMgr, $request) { // Need the count in order to determine whether to display // extras-on-demand for role selection in other contexts. $contextDao = Application::getContextDAO(); $contexts = $contextDao->getAll(true)->toArray(); $contextsWithUserRegistration = []; foreach ($contexts as $context) { if (!$context->getData('disableUserReg')) { $contextsWithUserRegistration[] = $context; } } $templateMgr->assign([ 'contexts' => $contexts, 'showOtherContexts' => !$request->getContext() || count($contextsWithUserRegistration) > 1, ]); // Expose potential self-registration user groups to template $authorUserGroups = $reviewerUserGroups = $readerUserGroups = []; foreach ($contexts as $context) { if ($context->getData('disableUserReg')) { continue; } $reviewerUserGroups[$context->getId()] = Repo::userGroup()->getByRoleIds([Role::ROLE_ID_REVIEWER], $context->getId())->toArray(); $authorUserGroups[$context->getId()] = Repo::userGroup()->getByRoleIds([Role::ROLE_ID_AUTHOR], $context->getId())->toArray(); $readerUserGroups[$context->getId()] = Repo::userGroup()->getByRoleIds([Role::ROLE_ID_READER], $context->getId())->toArray(); } $templateMgr->assign([ 'reviewerUserGroups' => $reviewerUserGroups, 'authorUserGroups' => $authorUserGroups, 'readerUserGroups' => $readerUserGroups, ]); } /** * Save role elements of an executed user form. * * @param Form $form The form from which to fetch elements * @param User $user The current user */ public function saveRoleContent($form, $user) { $contextDao = Application::getContextDAO(); $contexts = $contextDao->getAll(true); while ($context = $contexts->next()) { if ($context->getData('disableUserReg')) { continue; } foreach ([ [ 'roleId' => Role::ROLE_ID_REVIEWER, 'formElement' => 'reviewerGroup' ], [ 'roleId' => Role::ROLE_ID_AUTHOR, 'formElement' => 'authorGroup' ], [ 'roleId' => Role::ROLE_ID_READER, 'formElement' => 'readerGroup' ], ] as $groupData) { $groupFormData = (array) $form->getData($groupData['formElement']); $userGroups = Repo::userGroup()->getByRoleIds([$groupData['roleId']], $context->getId()); foreach ($userGroups as $userGroup) { if (!$userGroup->getPermitSelfRegistration()) { continue; } $groupId = $userGroup->getId(); $inGroup = Repo::userGroup()->userInGroup($user->getId(), $groupId); if (!$inGroup && array_key_exists($groupId, $groupFormData)) { Repo::userGroup()->assignUserToGroup($user->getId(), $groupId); } elseif ($inGroup && !array_key_exists($groupId, $groupFormData)) { Repo::userGroup()->removeUserFromGroup($user->getId(), $groupId, $context->getId()); } } } } } } if (!PKP_STRICT_MODE) { class_alias('\PKP\user\form\UserFormHelper', '\UserFormHelper'); }