Open Journal Systems  3.3.0
UserSelectGridHandler.inc.php
1 <?php
2 
16 import('lib.pkp.classes.controllers.grid.GridHandler');
17 import('lib.pkp.controllers.grid.users.userSelect.UserSelectGridCellProvider');
18 
22 
26  function __construct() {
27  parent::__construct();
28  $this->addRoleAssignment(
29  array(ROLE_ID_SUB_EDITOR, ROLE_ID_MANAGER, ROLE_ID_ASSISTANT),
30  array('fetchGrid', 'fetchRows')
31  );
32  }
33 
34  //
35  // Implement template methods from PKPHandler
36  //
40  function authorize($request, &$args, $roleAssignments) {
41  $stageId = (int)$request->getUserVar('stageId');
42 
43  import('lib.pkp.classes.security.authorization.WorkflowStageAccessPolicy');
44  $this->addPolicy(new WorkflowStageAccessPolicy($request, $args, $roleAssignments, 'submissionId', $stageId));
45 
46  return parent::authorize($request, $args, $roleAssignments);
47  }
48 
52  function initialize($request, $args = null) {
53  parent::initialize($request, $args);
54 
56  LOCALE_COMPONENT_PKP_SUBMISSION,
57  LOCALE_COMPONENT_PKP_MANAGER,
58  LOCALE_COMPONENT_PKP_USER,
59  LOCALE_COMPONENT_PKP_EDITOR,
60  LOCALE_COMPONENT_APP_EDITOR
61  );
62 
63  $stageId = $this->getAuthorizedContextObject(ASSOC_TYPE_WORKFLOW_STAGE);
64  $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); /* @var $userGroupDao UserGroupDAO */
65  $userGroups = $userGroupDao->getUserGroupsByStage(
66  $request->getContext()->getId(),
67  $stageId
68  );
69  $this->_userGroupOptions = array();
70  while ($userGroup = $userGroups->next()) {
71  // Exclude reviewers.
72  if ($userGroup->getRoleId() == ROLE_ID_REVIEWER) continue;
73  $this->_userGroupOptions[$userGroup->getId()] = $userGroup->getLocalizedName();
74  }
75 
76  $this->setTitle('editor.submission.findAndSelectUser');
77 
78  // Columns
79  $cellProvider = new UserSelectGridCellProvider();
80  $this->addColumn(
81  new GridColumn(
82  'select',
83  '',
84  null,
85  'controllers/grid/users/userSelect/userSelectRadioButton.tpl',
86  $cellProvider,
87  array('width' => 5)
88  )
89  );
90  $this->addColumn(
91  new GridColumn(
92  'name',
93  'author.users.contributor.name',
94  null,
95  null,
96  $cellProvider,
97  array('alignment' => COLUMN_ALIGNMENT_LEFT,
98  'width' => 30
99  )
100  )
101  );
102  }
103 
104 
105  //
106  // Overridden methods from GridHandler
107  //
111  function initFeatures($request, $args) {
112  import('lib.pkp.classes.controllers.grid.feature.InfiniteScrollingFeature');
113  import('lib.pkp.classes.controllers.grid.feature.CollapsibleGridFeature');
114  return array(new InfiniteScrollingFeature('infiniteScrolling', $this->getItemsNumber()), new CollapsibleGridFeature());
115  }
116 
120  protected function loadData($request, $filter) {
121  list($filterUserGroupId, $name) = $this->getFilterValues($filter);
122  $submission = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION);
123  $stageId = $this->getAuthorizedContextObject(ASSOC_TYPE_WORKFLOW_STAGE);
124  $rangeInfo = $this->getGridRangeInfo($request, $this->getId());
125  $userStageAssignmentDao = DAORegistry::getDAO('UserStageAssignmentDAO'); /* @var $userStageAssignmentDao UserStageAssignmentDAO */
126  return $userStageAssignmentDao->filterUsersNotAssignedToStageInUserGroup($submission->getId(), $stageId, $filterUserGroupId, $name, $rangeInfo);
127  }
128 
132  function renderFilter($request, $filterData = array()) {
133  $submission = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION);
134  $stageId = $this->getAuthorizedContextObject(ASSOC_TYPE_WORKFLOW_STAGE);
135 
136  $keys = array_keys($this->_userGroupOptions);
137  $allFilterData = array_merge(
138  $filterData,
139  array(
140  'userGroupOptions' => $this->_userGroupOptions,
141  'selectedUserGroupId' => reset($keys),
142  'gridId' => $this->getId(),
143  'submissionId' => $submission->getId(),
144  'stageId' => $stageId,
145  ));
146  return parent::renderFilter($request, $allFilterData);
147  }
148 
152  function getFilterSelectionData($request) {
153  $name = (string) $request->getUserVar('name');
154  $filterUserGroupId = (int) $request->getUserVar('filterUserGroupId');
155  return array(
156  'name' => $name,
157  'filterUserGroupId' => $filterUserGroupId,
158  );
159  }
160 
164  protected function getFilterForm() {
165  return 'controllers/grid/users/userSelect/searchUserFilter.tpl';
166  }
167 
171  function getRequestArgs() {
172  $submission = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION);
173  $stageId = $this->getAuthorizedContextObject(ASSOC_TYPE_WORKFLOW_STAGE);
174  return array(
175  'submissionId' => $submission->getId(),
176  'stageId' => $stageId,
177  );
178  }
179 
184  protected function isFilterFormCollapsible() {
185  return false;
186  }
187 
192  protected function getItemsNumber() {
193  return 20;
194  }
195 
201  protected function getFilterValues($filter) {
202  if (isset($filter['filterUserGroupId']) && $filter['filterUserGroupId']) {
203  $filterUserGroupId = $filter['filterUserGroupId'];
204  } else {
205  $keys = array_keys($this->_userGroupOptions);
206  $filterUserGroupId = reset($keys);
207  }
208  if (isset($filter['name']) && $filter['name']) {
209  $name = $filter['name'];
210  } else {
211  $name = null;
212  }
213  return array($filterUserGroupId, $name);
214  }
215 
216 }
217 
218 
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
UserSelectGridHandler\$_userGroupOptions
$_userGroupOptions
Definition: UserSelectGridHandler.inc.php:24
GridColumn
The GridColumn class represents a column within a grid. It is used to format the data presented in a ...
Definition: GridColumn.inc.php:27
UserSelectGridHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: UserSelectGridHandler.inc.php:43
UserSelectGridCellProvider
Base class for a cell provider that retrieves data for selecting a user.
Definition: UserSelectGridCellProvider.inc.php:18
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
UserSelectGridHandler\isFilterFormCollapsible
isFilterFormCollapsible()
Definition: UserSelectGridHandler.inc.php:187
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
UserSelectGridHandler\getItemsNumber
getItemsNumber()
Definition: UserSelectGridHandler.inc.php:195
UserSelectGridHandler\getRequestArgs
getRequestArgs()
Definition: UserSelectGridHandler.inc.php:174
PKPHandler\getId
getId()
Definition: PKPHandler.inc.php:107
UserSelectGridHandler\getFilterForm
getFilterForm()
Definition: UserSelectGridHandler.inc.php:167
UserSelectGridHandler\initialize
initialize($request, $args=null)
Definition: UserSelectGridHandler.inc.php:55
UserSelectGridHandler\renderFilter
renderFilter($request, $filterData=array())
Definition: UserSelectGridHandler.inc.php:135
UserSelectGridHandler\getFilterSelectionData
getFilterSelectionData($request)
Definition: UserSelectGridHandler.inc.php:155
GridHandler\addColumn
addColumn($column)
Definition: GridHandler.inc.php:335
InfiniteScrollingFeature
Add infinite scrolling functionality to grids. It doesn't support category grids.
Definition: InfiniteScrollingFeature.inc.php:20
UserSelectGridHandler\getFilterValues
getFilterValues($filter)
Definition: UserSelectGridHandler.inc.php:204
GridHandler\setTitle
setTitle($title)
Definition: GridHandler.inc.php:215
UserSelectGridHandler
Handle user selector grid requests.
Definition: UserSelectGridHandler.inc.php:19
GridHandler\getGridRangeInfo
getGridRangeInfo($request, $rangeName, $contextData=null)
Definition: GridHandler.inc.php:589
UserSelectGridHandler\loadData
loadData($request, $filter)
Definition: UserSelectGridHandler.inc.php:123
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
WorkflowStageAccessPolicy
Class to control access to OMP's submission workflow stage components.
Definition: WorkflowStageAccessPolicy.inc.php:19
UserSelectGridHandler\__construct
__construct()
Definition: UserSelectGridHandler.inc.php:29
UserSelectGridHandler\initFeatures
initFeatures($request, $args)
Definition: UserSelectGridHandler.inc.php:114
GridHandler
This class defines basic operations for handling HTML grids. Grids are used to implement a standardiz...
Definition: GridHandler.inc.php:58
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
CollapsibleGridFeature
Add collapse and expand functionality to grids.
Definition: CollapsibleGridFeature.inc.php:20