Open Journal Systems  3.3.0
UserGroupGridCellProvider.inc.php
1 <?php
2 
16 import('lib.pkp.classes.controllers.grid.GridCellProvider');
17 
19 
27  function getTemplateVarsFromRowColumn($row, $column) {
28  $userGroup = $row->getData(); /* @var $userGroup UserGroup */
29  $columnId = $column->getId();
30  $workflowStages = Application::getApplicationStages();
31  $roleDao = DAORegistry::getDAO('RoleDAO'); /* @var $roleDao RoleDAO */
32  $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); /* @var $userGroupDao UserGroupDAO */
33  $assignedStages = $userGroupDao->getAssignedStagesByUserGroupId($userGroup->getContextId(), $userGroup->getId());
34 
35  switch ($columnId) {
36  case 'name':
37  return array('label' => $userGroup->getLocalizedName());
38  case 'roleId':
39  $roleNames = Application::getRoleNames(false, array($userGroup->getRoleId()));
40  return array('label' => __(array_shift($roleNames)));
41  case in_array($columnId, $workflowStages):
42  // Set the state of the select element that will
43  // be used to assign the stage to the user group.
44  $selectDisabled = false;
45  if (in_array($columnId, $roleDao->getForbiddenStages($userGroup->getRoleId()))) {
46  // This stage should not be assigned to the user group.
47  $selectDisabled = true;
48  }
49 
50  return array('selected' => in_array($columnId, array_keys($assignedStages)),
51  'disabled' => $selectDisabled);
52  default:
53  break;
54  }
55 
56  return parent::getTemplateVarsFromRowColumn($row, $column);
57  }
58 
62  function getCellActions($request, $row, $column, $position = GRID_ACTION_POSITION_DEFAULT) {
63  $workflowStages = Application::getApplicationStages();
64  $columnId = $column->getId();
65 
66  if (in_array($columnId, $workflowStages)) {
67  $userGroup = $row->getData(); /* @var $userGroup UserGroup */
68  $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); /* @var $userGroupDao UserGroupDAO */
69  $assignedStages = $userGroupDao->getAssignedStagesByUserGroupId($userGroup->getContextId(), $userGroup->getId());
70 
71  $router = $request->getRouter();
72  $roleDao = DAORegistry::getDAO('RoleDAO'); /* @var $roleDao RoleDAO */
73 
74  if (!in_array($columnId, $roleDao->getForbiddenStages($userGroup->getRoleId()))) {
75  if (in_array($columnId, array_keys($assignedStages))) {
76  $operation = 'unassignStage';
77  $actionTitleKey = 'grid.userGroup.unassignStage';
78  } else {
79  $operation = 'assignStage';
80  $actionTitleKey = 'grid.userGroup.assignStage';
81  }
82  $actionArgs = array_merge(array('stageId' => $columnId),
83  $row->getRequestArgs());
84 
85  $actionUrl = $router->url($request, null, null, $operation, null, $actionArgs);
86  import('lib.pkp.classes.linkAction.request.AjaxAction');
87  $actionRequest = new AjaxAction($actionUrl);
88 
89  $linkAction = new LinkAction(
90  $operation,
91  $actionRequest,
92  __($actionTitleKey),
93  null
94  );
95 
96  return array($linkAction);
97  }
98  }
99 
100  return parent::getCellActions($request, $row, $column, $position);
101  }
102 }
103 
104 
Application\getRoleNames
static getRoleNames($contextOnly=false, $roleIds=null)
Definition: Application.inc.php:213
UserGroupGridCellProvider\getCellActions
getCellActions($request, $row, $column, $position=GRID_ACTION_POSITION_DEFAULT)
Definition: UserGroupGridCellProvider.inc.php:62
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
AjaxAction
Class defining an AJAX action.
Definition: AjaxAction.inc.php:21
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
GridCellProvider
Base class for a grid column's cell provider.
Definition: GridCellProvider.inc.php:20
UserGroupGridCellProvider
Cell provider for columns in a user group grid.
Definition: UserGroupGridCellProvider.inc.php:18
Application\getApplicationStages
static getApplicationStages()
Definition: Application.inc.php:185
UserGroupGridCellProvider\getTemplateVarsFromRowColumn
getTemplateVarsFromRowColumn($row, $column)
Definition: UserGroupGridCellProvider.inc.php:27