[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
05122024
/
htdocs
/
jurnal-kesmas
/
lib
/
pkp
/
controllers
/
grid
/
settings
/
user
/
form
/
[
Home
]
File: UserForm.php
<?php /** * @file controllers/grid/settings/user/form/UserForm.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 UserForm * * @ingroup controllers_grid_settings_user_form * * @brief Base class for user forms. */ namespace PKP\controllers\grid\settings\user\form; use APP\core\Application; use APP\core\Request; use APP\facades\Repo; use APP\template\TemplateManager; use PKP\form\Form; class UserForm extends Form { /** @var int Id of the user being edited */ public $userId; /** * Constructor. * * @param int $userId optional */ public function __construct($template, $userId = null) { parent::__construct($template); $this->userId = isset($userId) ? (int) $userId : null; if (!is_null($userId)) { $this->addCheck(new \PKP\form\validation\FormValidator($this, 'userGroupIds', 'required', 'manager.users.roleRequired')); } } /** * Initialize form data from current user profile. */ public function initData() { $userGroupIds = []; if (!is_null($this->userId)) { $userGroups = Repo::userGroup()->userUserGroups($this->userId); foreach ($userGroups as $userGroup) { $userGroupIds[] = $userGroup->getId(); } } $this->setData('userGroupIds', $userGroupIds); parent::initData(); } /** * @copydoc Form::readInputData() */ public function readInputData() { $this->readUserVars(['userGroupIds']); parent::readInputData(); } /** * @copydoc Form::display * * @param null|mixed $request * @param null|mixed $template */ public function display($request = null, $template = null) { $context = $request->getContext(); $contextId = $context ? $context->getId() : \PKP\core\PKPApplication::CONTEXT_ID_NONE; $templateMgr = TemplateManager::getManager($request); $allUserGroups = []; $userGroups = Repo::userGroup()->getCollector() ->filterByContextIds([$contextId]) ->getMany(); foreach ($userGroups as $userGroup) { $allUserGroups[(int) $userGroup->getId()] = $userGroup->getLocalizedName(); } $templateMgr->assign([ 'allUserGroups' => $allUserGroups, 'assignedUserGroups' => array_map('intval', $this->getData('userGroupIds')), ]); return $this->fetch($request); } /** * @copydoc Form::execute() */ public function execute(...$functionArgs) { parent::execute(...$functionArgs); } /** * Save the user group assignments */ public function saveUserGroupAssignments(Request $request): void { if (!isset($this->userId)) { return; } Repo::userGroup() ->deleteAssignmentsByContextId( Application::get()->getRequest()->getContext()->getId(), $this->userId ); if ($this->getData('userGroupIds')) { $contextId = $request->getContext()->getId(); collect($this->getData('userGroupIds')) ->each( fn ($userGroupId) => Repo::userGroup()->contextHasGroup($contextId, $userGroupId) ? Repo::userGroup()->assignUserToGroup($this->userId, $userGroupId) : null ); } } }