[ Mini Kiebo ]
Server: Windows NT AKFAR_SERVER 10.0 build 26200 (Windows 10) AMD64
Path:
D:
/
Jurnal PSCP
/
lib
/
pkp
/
controllers
/
grid
/
settings
/
roles
/
[
Home
]
File: UserGroupGridCellProvider.inc.php
<?php /** * @file controllers/grid/settings/roles/UserGroupGridCellProvider.inc.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 UserGroupGridCellProvider * @ingroup controllers_grid_settings_roles * * @brief Cell provider for columns in a user group grid. */ import('lib.pkp.classes.controllers.grid.GridCellProvider'); class UserGroupGridCellProvider extends GridCellProvider { /** * Extracts variables for a given column from a data element * so that they may be assigned to template before rendering. * @param $row GridRow * @param $column GridColumn * @return array */ function getTemplateVarsFromRowColumn($row, $column) { $userGroup = $row->getData(); /* @var $userGroup UserGroup */ $columnId = $column->getId(); $workflowStages = Application::getApplicationStages(); $roleDao = DAORegistry::getDAO('RoleDAO'); /* @var $roleDao RoleDAO */ $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); /* @var $userGroupDao UserGroupDAO */ $assignedStages = $userGroupDao->getAssignedStagesByUserGroupId($userGroup->getContextId(), $userGroup->getId()); switch ($columnId) { case 'name': return array('label' => $userGroup->getLocalizedName()); case 'roleId': $roleNames = Application::getRoleNames(false, array($userGroup->getRoleId())); return array('label' => __(array_shift($roleNames))); case in_array($columnId, $workflowStages): // Set the state of the select element that will // be used to assign the stage to the user group. $selectDisabled = false; if (in_array($columnId, $roleDao->getForbiddenStages($userGroup->getRoleId()))) { // This stage should not be assigned to the user group. $selectDisabled = true; } return array('selected' => in_array($columnId, array_keys($assignedStages)), 'disabled' => $selectDisabled); default: break; } return parent::getTemplateVarsFromRowColumn($row, $column); } /** * @copydoc GridCellProvider::getCellActions() */ function getCellActions($request, $row, $column, $position = GRID_ACTION_POSITION_DEFAULT) { $workflowStages = Application::getApplicationStages(); $columnId = $column->getId(); if (in_array($columnId, $workflowStages)) { $userGroup = $row->getData(); /* @var $userGroup UserGroup */ $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); /* @var $userGroupDao UserGroupDAO */ $assignedStages = $userGroupDao->getAssignedStagesByUserGroupId($userGroup->getContextId(), $userGroup->getId()); $router = $request->getRouter(); $roleDao = DAORegistry::getDAO('RoleDAO'); /* @var $roleDao RoleDAO */ if (!in_array($columnId, $roleDao->getForbiddenStages($userGroup->getRoleId()))) { if (in_array($columnId, array_keys($assignedStages))) { $operation = 'unassignStage'; $actionTitleKey = 'grid.userGroup.unassignStage'; } else { $operation = 'assignStage'; $actionTitleKey = 'grid.userGroup.assignStage'; } $actionArgs = array_merge(array('stageId' => $columnId), $row->getRequestArgs()); $actionUrl = $router->url($request, null, null, $operation, null, $actionArgs); import('lib.pkp.classes.linkAction.request.AjaxAction'); $actionRequest = new AjaxAction($actionUrl); $linkAction = new LinkAction( $operation, $actionRequest, __($actionTitleKey), null ); return array($linkAction); } } return parent::getCellActions($request, $row, $column, $position); } }