Open Journal Systems  3.3.0
SubscriberSelectGridHandler.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_MANAGER, ROLE_ID_SUBSCRIPTION_MANAGER),
30  array('fetchGrid', 'fetchRows')
31  );
32  }
33 
34  //
35  // Implement template methods from PKPHandler
36  //
40  function authorize($request, &$args, $roleAssignments) {
41  import('lib.pkp.classes.security.authorization.ContextAccessPolicy');
42  $this->addPolicy(new ContextAccessPolicy($request, $roleAssignments));
43  return parent::authorize($request, $args, $roleAssignments);
44  }
45 
49  function initialize($request, $args = null) {
50  parent::initialize($request, $args);
51 
53  LOCALE_COMPONENT_PKP_SUBMISSION,
54  LOCALE_COMPONENT_PKP_MANAGER,
55  LOCALE_COMPONENT_PKP_USER,
56  LOCALE_COMPONENT_PKP_EDITOR,
57  LOCALE_COMPONENT_APP_EDITOR
58  );
59 
60  $stageId = $this->getAuthorizedContextObject(ASSOC_TYPE_WORKFLOW_STAGE);
61  $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); /* @var $userGroupDao UserGroupDAO */
62  $userGroups = $userGroupDao->getUserGroupsByStage(
63  $request->getContext()->getId(),
64  $stageId
65  );
66  $this->_userGroupOptions = array();
67  while ($userGroup = $userGroups->next()) {
68  $this->_userGroupOptions[$userGroup->getId()] = $userGroup->getLocalizedName();
69  }
70 
71  $this->setTitle('editor.submission.findAndSelectUser');
72 
73  // Columns
74  $cellProvider = new UserSelectGridCellProvider($request->getUserVar('userId'));
75  $this->addColumn(
76  new GridColumn(
77  'select',
78  '',
79  null,
80  'controllers/grid/users/userSelect/userSelectRadioButton.tpl',
81  $cellProvider,
82  array('width' => 5)
83  )
84  );
85  $this->addColumn(
86  new GridColumn(
87  'name',
88  'author.users.contributor.name',
89  null,
90  null,
91  $cellProvider,
92  array('alignment' => COLUMN_ALIGNMENT_LEFT,
93  'width' => 30
94  )
95  )
96  );
97  }
98 
99 
100  //
101  // Overridden methods from GridHandler
102  //
106  function initFeatures($request, $args) {
107  import('lib.pkp.classes.controllers.grid.feature.InfiniteScrollingFeature');
108  import('lib.pkp.classes.controllers.grid.feature.CollapsibleGridFeature');
109  return array(new InfiniteScrollingFeature('infiniteScrolling', $this->getItemsNumber()), new CollapsibleGridFeature());
110  }
111 
115  protected function loadData($request, $filter) {
116  $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); /* @var $userGroupDao UserGroupDAO */
117  return $users = $userGroupDao->getUsersById(
118  $filter['userGroup'],
119  $request->getContext()->getId(),
120  $filter['searchField'],
121  $filter['search']?$filter['search']:null,
122  $filter['searchMatch'],
123  $this->getGridRangeInfo($request, $this->getId())
124  );
125  }
126 
130  function renderFilter($request, $filterData = array()) {
131  $context = $request->getContext();
132  $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); /* @var $userGroupDao UserGroupDAO */
133  $userGroups = $userGroupDao->getByContextId($context->getId());
134  $userGroupOptions = array('' => __('grid.user.allRoles'));
135  while ($userGroup = $userGroups->next()) {
136  $userGroupOptions[$userGroup->getId()] = $userGroup->getLocalizedName();
137  }
138 
139  return parent::renderFilter(
140  $request,
141  array(
142  'userGroupOptions' => $userGroupOptions,
143  )
144  );
145  }
146 
151  function getFilterSelectionData($request) {
152  // If we're editing an existing subscription, use the filter form to ensure that
153  // the already-selected user is chosen.
154  if (($userId = $request->getUserVar('userId')) && !$request->getUserVar('clientSubmit')) {
155  $userDao = DAORegistry::getDAO('UserDAO'); /* @var $userDao UserDAO */
156  $user = $userDao->getById($userId);
157  return array(
158  'userGroup' => null,
159  'searchField' => USER_FIELD_USERNAME,
160  'searchMatch' => 'is',
161  'search' => $user->getUsername(),
162  );
163  }
164 
165  return array(
166  'userGroup' => $request->getUserVar('userGroup') ? (int)$request->getUserVar('userGroup') : null,
167  'searchField' => $request->getUserVar('searchField'),
168  'searchMatch' => $request->getUserVar('searchMatch'),
169  'search' => (string) $request->getUserVar('search'),
170  );
171  }
172 
177  protected function getFilterForm() {
178  return 'controllers/grid/users/exportableUsers/userGridFilter.tpl';
179  }
180 
185  protected function isFilterFormCollapsible() {
186  return false;
187  }
188 
193  protected function getItemsNumber() {
194  return 5;
195  }
196 
200  function getRequestArgs() {
201  $request = Application::get()->getRequest();
202  return array_merge(parent::getRequestArgs(), array(
203  'userId' => $request->getUserVar('userId'),
204  ));
205  }
206 }
207 
208 
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
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
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
SubscriberSelectGridHandler\getFilterForm
getFilterForm()
Definition: SubscriberSelectGridHandler.inc.php:180
ContextAccessPolicy
Class to control access to PKP applications' setup components.
Definition: ContextAccessPolicy.inc.php:17
SubscriberSelectGridHandler\getFilterSelectionData
getFilterSelectionData($request)
Definition: SubscriberSelectGridHandler.inc.php:154
SubscriberSelectGridHandler\initialize
initialize($request, $args=null)
Definition: SubscriberSelectGridHandler.inc.php:52
SubscriberSelectGridHandler\getRequestArgs
getRequestArgs()
Definition: SubscriberSelectGridHandler.inc.php:203
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
SubscriberSelectGridHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: SubscriberSelectGridHandler.inc.php:43
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
SubscriberSelectGridHandler
Handle subscriber selector grid requests.
Definition: SubscriberSelectGridHandler.inc.php:19
SubscriberSelectGridHandler\renderFilter
renderFilter($request, $filterData=array())
Definition: SubscriberSelectGridHandler.inc.php:133
GridHandler\setTitle
setTitle($title)
Definition: GridHandler.inc.php:215
SubscriberSelectGridHandler\$_userGroupOptions
$_userGroupOptions
Definition: SubscriberSelectGridHandler.inc.php:24
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
SubscriberSelectGridHandler\__construct
__construct()
Definition: SubscriberSelectGridHandler.inc.php:29
GridHandler
This class defines basic operations for handling HTML grids. Grids are used to implement a standardiz...
Definition: GridHandler.inc.php:58
SubscriberSelectGridHandler\getItemsNumber
getItemsNumber()
Definition: SubscriberSelectGridHandler.inc.php:196
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
SubscriberSelectGridHandler\initFeatures
initFeatures($request, $args)
Definition: SubscriberSelectGridHandler.inc.php:109
CollapsibleGridFeature
Add collapse and expand functionality to grids.
Definition: CollapsibleGridFeature.inc.php:20
SubscriberSelectGridHandler\loadData
loadData($request, $filter)
Definition: SubscriberSelectGridHandler.inc.php:118
SubscriberSelectGridHandler\isFilterFormCollapsible
isFilterFormCollapsible()
Definition: SubscriberSelectGridHandler.inc.php:188