Open Journal Systems  3.3.0
ExportableUsersGridHandler.inc.php
1 <?php
2 
16 import('lib.pkp.classes.controllers.grid.GridHandler');
17 import('lib.pkp.classes.controllers.grid.DataObjectGridCellProvider');
18 import('lib.pkp.classes.linkAction.request.RedirectConfirmationModal');
19 
21 
23 
27  function __construct() {
28  parent::__construct();
29  $this->addRoleAssignment(array(
30  ROLE_ID_MANAGER),
31  array('fetchGrid', 'fetchRow')
32  );
33  }
34 
35 
36  //
37  // Implement template methods from PKPHandler.
38  //
42  function authorize($request, &$args, $roleAssignments) {
43  import('lib.pkp.classes.security.authorization.ContextAccessPolicy');
44  $this->addPolicy(new ContextAccessPolicy($request, $roleAssignments));
45  return parent::authorize($request, $args, $roleAssignments);
46  }
47 
51  function initialize($request, $args = null) {
52  parent::initialize($request, $args);
53 
54  // Load user-related translations.
56  LOCALE_COMPONENT_PKP_USER,
57  LOCALE_COMPONENT_PKP_MANAGER,
58  LOCALE_COMPONENT_APP_MANAGER
59  );
60 
61  // Basic grid configuration.
62  $this->setTitle('grid.user.currentUsers');
63 
64  // Grid actions.
65  $router = $request->getRouter();
66  $pluginName = $request->getUserVar('pluginName');
67  assert(!empty($pluginName));
68  $this->_pluginName = $pluginName;
69 
70  $dispatcher = $request->getDispatcher();
71  $url = $dispatcher->url($request, ROUTE_PAGE, null, 'management', 'importexport', array('plugin', $pluginName, 'exportAllUsers'));
72 
73  $this->addAction(
74  new LinkAction(
75  'exportAllUsers',
77  __('grid.users.confirmExportAllUsers'),
78  null,
79  $url
80  ),
81  __('grid.action.exportAllUsers'),
82  'export_users'
83  )
84  );
85 
86  //
87  // Grid columns.
88  //
89 
90  // First Name.
91  $cellProvider = new DataObjectGridCellProvider();
92  $this->addColumn(
93  new GridColumn(
94  'givenName',
95  'user.givenName',
96  null,
97  null,
98  $cellProvider
99  )
100  );
101 
102  // Last Name.
103  $cellProvider = new DataObjectGridCellProvider();
104  $this->addColumn(
105  new GridColumn(
106  'familyName',
107  'user.familyName',
108  null,
109  null,
110  $cellProvider
111  )
112  );
113 
114  // User name.
115  $cellProvider = new DataObjectGridCellProvider();
116  $this->addColumn(
117  new GridColumn(
118  'username',
119  'user.username',
120  null,
121  null,
122  $cellProvider
123  )
124  );
125 
126  // Email.
127  $cellProvider = new DataObjectGridCellProvider();
128  $this->addColumn(
129  new GridColumn(
130  'email',
131  'user.email',
132  null,
133  null,
134  $cellProvider
135  )
136  );
137  }
138 
139 
140  //
141  // Implement methods from GridHandler.
142  //
146  function initFeatures($request, $args) {
147  import('lib.pkp.classes.controllers.grid.feature.selectableItems.SelectableItemsFeature');
148  import('lib.pkp.classes.controllers.grid.feature.PagingFeature');
149  return array(new SelectableItemsFeature(), new PagingFeature());
150  }
151 
155  function getSelectName() {
156  return 'selectedUsers';
157  }
158 
159  //
160  // Implemented methods from GridHandler.
161  //
165  function isDataElementSelected($gridDataElement) {
166  return false; // Nothing is selected by default
167  }
168 
174  protected function loadData($request, $filter) {
175  // Get the context.
176  $context = $request->getContext();
177 
178  // Get all users for this context that match search criteria.
179  $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); /* @var $userGroupDao UserGroupDAO */
180  $rangeInfo = $this->getGridRangeInfo($request, $this->getId());
181 
182  return $users = $userGroupDao->getUsersById(
183  $filter['userGroup'],
184  $context->getId(),
185  $filter['searchField'],
186  $filter['search']?$filter['search']:null,
187  $filter['searchMatch'],
188  $rangeInfo
189  );
190  }
191 
195  function renderFilter($request, $filterData = array()) {
196  $context = $request->getContext();
197  $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); /* @var $userGroupDao UserGroupDAO */
198  $userGroups = $userGroupDao->getByContextId($context->getId());
199  $userGroupOptions = array('' => __('grid.user.allRoles'));
200  while ($userGroup = $userGroups->next()) {
201  $userGroupOptions[$userGroup->getId()] = $userGroup->getLocalizedName();
202  }
203 
204  // Import UserDAO to define the USER_FIELD_* constants.
205  import('lib.pkp.classes.user.UserDAO');
206  $fieldOptions = array(
207  IDENTITY_SETTING_GIVENNAME => 'user.givenName',
208  IDENTITY_SETTING_FAMILYNAME => 'user.familyName',
209  USER_FIELD_USERNAME => 'user.username',
210  USER_FIELD_EMAIL => 'user.email'
211  );
212 
213  $matchOptions = array(
214  'contains' => 'form.contains',
215  'is' => 'form.is'
216  );
217 
218  $filterData = array(
219  'userGroupOptions' => $userGroupOptions,
220  'fieldOptions' => $fieldOptions,
221  'matchOptions' => $matchOptions
222  );
223 
224  return parent::renderFilter($request, $filterData);
225  }
226 
231  function getFilterSelectionData($request) {
232  // Get the search terms.
233  $userGroup = $request->getUserVar('userGroup') ? (int)$request->getUserVar('userGroup') : null;
234  $searchField = $request->getUserVar('searchField');
235  $searchMatch = $request->getUserVar('searchMatch');
236  $search = $request->getUserVar('search');
237 
238  return $filterSelectionData = array(
239  'userGroup' => $userGroup,
240  'searchField' => $searchField,
241  'searchMatch' => $searchMatch,
242  'search' => $search ? $search : ''
243  );
244  }
245 
250  protected function getFilterForm() {
251  return 'controllers/grid/users/exportableUsers/userGridFilter.tpl';
252  }
253 
257  function getRequestArgs() {
258  return array_merge(parent::getRequestArgs(), array('pluginName' => $this->_getPluginName()));
259  }
260 
265  function _getPluginName() {
266  return $this->_pluginName;
267  }
268 }
269 
270 
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
ExportableUsersGridHandler\loadData
loadData($request, $filter)
Definition: ExportableUsersGridHandler.inc.php:174
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
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
ExportableUsersGridHandler\renderFilter
renderFilter($request, $filterData=array())
Definition: ExportableUsersGridHandler.inc.php:195
ExportableUsersGridHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: ExportableUsersGridHandler.inc.php:42
ContextAccessPolicy
Class to control access to PKP applications' setup components.
Definition: ContextAccessPolicy.inc.php:17
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
ExportableUsersGridHandler\isDataElementSelected
isDataElementSelected($gridDataElement)
Definition: ExportableUsersGridHandler.inc.php:165
PKPHandler\getId
getId()
Definition: PKPHandler.inc.php:107
ExportableUsersGridHandler\getSelectName
getSelectName()
Definition: ExportableUsersGridHandler.inc.php:155
GridHandler\addAction
addAction($action, $position=GRID_ACTION_POSITION_ABOVE)
Definition: GridHandler.inc.php:266
GridHandler\addColumn
addColumn($column)
Definition: GridHandler.inc.php:335
ExportableUsersGridHandler\initFeatures
initFeatures($request, $args)
Definition: ExportableUsersGridHandler.inc.php:146
ExportableUsersGridHandler\getRequestArgs
getRequestArgs()
Definition: ExportableUsersGridHandler.inc.php:257
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
SelectableItemsFeature
Implements grid widgets selectable items functionality.
Definition: SelectableItemsFeature.inc.php:19
PagingFeature
Add paging functionality to grids.
Definition: PagingFeature.inc.php:19
ExportableUsersGridHandler\getFilterForm
getFilterForm()
Definition: ExportableUsersGridHandler.inc.php:250
GridHandler\setTitle
setTitle($title)
Definition: GridHandler.inc.php:215
ExportableUsersGridHandler\_getPluginName
_getPluginName()
Definition: ExportableUsersGridHandler.inc.php:265
ExportableUsersGridHandler
Handle exportable user grid requests.
Definition: ExportableUsersGridHandler.inc.php:20
RedirectConfirmationModal
Class defining a simple confirmation modal with a redirect url and ok/cancel buttons.
Definition: RedirectConfirmationModal.inc.php:18
GridHandler\getGridRangeInfo
getGridRangeInfo($request, $rangeName, $contextData=null)
Definition: GridHandler.inc.php:589
DataObjectGridCellProvider
Base class for a cell provider that can retrieve simple labels from DataObjects. If you need more com...
Definition: DataObjectGridCellProvider.inc.php:22
ExportableUsersGridHandler\initialize
initialize($request, $args=null)
Definition: ExportableUsersGridHandler.inc.php:51
GridHandler
This class defines basic operations for handling HTML grids. Grids are used to implement a standardiz...
Definition: GridHandler.inc.php:58
ExportableUsersGridHandler\__construct
__construct()
Definition: ExportableUsersGridHandler.inc.php:27
ExportableUsersGridHandler\getFilterSelectionData
getFilterSelectionData($request)
Definition: ExportableUsersGridHandler.inc.php:231
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
ExportableUsersGridHandler\$_pluginName
$_pluginName
Definition: ExportableUsersGridHandler.inc.php:22