16 import(
'lib.pkp.classes.controllers.grid.GridHandler');
17 import(
'lib.pkp.classes.controllers.grid.DataObjectGridCellProvider');
19 import(
'lib.pkp.controllers.grid.settings.user.UserGridRow');
20 import(
'lib.pkp.controllers.grid.settings.user.form.UserDetailsForm');
30 parent::__construct();
32 ROLE_ID_MANAGER, ROLE_ID_SITE_ADMIN),
33 array(
'fetchGrid',
'fetchRow',
'editUser',
'updateUser',
'updateUserRoles',
34 'editDisableUser',
'disableUser',
'removeUser',
'addUser',
35 'editEmail',
'sendEmail',
'mergeUsers')
46 function authorize($request, &$args, $roleAssignments) {
47 import(
'lib.pkp.classes.security.authorization.ContextAccessPolicy');
49 return parent::authorize($request, $args, $roleAssignments);
56 parent::initialize($request, $args);
60 LOCALE_COMPONENT_PKP_USER,
61 LOCALE_COMPONENT_PKP_MANAGER,
62 LOCALE_COMPONENT_APP_MANAGER
65 $this->_oldUserId = (int) $request->getUserVar(
'oldUserId');
67 $this->
setTitle(
'grid.user.currentUsers');
70 $router = $request->getRouter();
72 import(
'lib.pkp.classes.linkAction.request.AjaxModal');
77 $router->url($request,
null,
null,
'addUser',
null,
null),
152 import(
'lib.pkp.classes.controllers.grid.feature.PagingFeature');
163 $context = $request->getContext();
169 return $userGroupDao->getUsersById(
170 $filter[
'userGroup'],
171 $filter[
'includeNoRole']?
null:$context->getId(),
172 $filter[
'searchField'],
173 $filter[
'search']?$filter[
'search']:
null,
174 $filter[
'searchMatch'],
183 $context = $request->getContext();
185 $userGroups = $userGroupDao->getByContextId($context->getId());
186 $userGroupOptions = array(
'' => __(
'grid.user.allRoles'));
187 while ($userGroup = $userGroups->next()) {
188 $userGroupOptions[$userGroup->getId()] = $userGroup->getLocalizedName();
192 import(
'lib.pkp.classes.user.UserDAO');
193 $fieldOptions = array(
194 IDENTITY_SETTING_GIVENNAME =>
'user.givenName',
195 IDENTITY_SETTING_FAMILYNAME =>
'user.familyName',
196 USER_FIELD_USERNAME =>
'user.username',
197 USER_FIELD_EMAIL =>
'user.email'
200 $matchOptions = array(
201 'contains' =>
'form.contains',
206 'userGroupOptions' => $userGroupOptions,
207 'fieldOptions' => $fieldOptions,
208 'matchOptions' => $matchOptions,
210 'oldUserId' => $request->getUserVar(
'oldUserId'),
213 return parent::renderFilter($request, $filterData);
222 $includeNoRole = $request->getUserVar(
'includeNoRole') ? (int) $request->getUserVar(
'includeNoRole') :
null;
223 $userGroup = $request->getUserVar(
'userGroup') ? (int)$request->getUserVar(
'userGroup') :
null;
224 $searchField = $request->getUserVar(
'searchField');
225 $searchMatch = $request->getUserVar(
'searchMatch');
226 $search = $request->getUserVar(
'search');
228 return $filterSelectionData = array(
229 'includeNoRole' => $includeNoRole,
230 'userGroup' => $userGroup,
231 'searchField' => $searchField,
232 'searchMatch' => $searchMatch,
233 'search' => $search ? $search :
''
242 return 'controllers/grid/settings/user/userGridFilter.tpl';
250 return '$.pkp.controllers.grid.users.UserGridHandler';
264 return $this->
editUser($args, $request);
275 $userId = $request->getUserVar(
'rowId');
276 if (!$userId) $userId = $request->getUserVar(
'userId');
278 $user = $request->getUser();
281 return new JSONMessage(
false, __(
'grid.user.cannotAdminister'));
285 $userForm->initData();
287 return new JSONMessage(
true, $userForm->display($request));
298 $user = $request->getUser();
301 $userId = $request->getUserVar(
'userId');
305 return new JSONMessage(
false, __(
'grid.user.cannotAdminister'));
310 $userForm->readInputData();
312 if ($userForm->validate()) {
313 $user = $userForm->execute();
317 import(
'lib.pkp.controllers.grid.settings.user.form.UserRoleForm');
318 $userRoleForm =
new UserRoleForm($user->getId(), $user->getFullName());
319 $userRoleForm->initData();
320 return new JSONMessage(
true, $userRoleForm->display($request));
325 $user = $request->getUser();
326 $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array(
'contents' => __(
'notification.editedUser')));
343 $user = $request->getUser();
346 $userId = $request->getUserVar(
'userId');
350 return new JSONMessage(
false, __(
'grid.user.cannotAdminister'));
354 import(
'lib.pkp.controllers.grid.settings.user.form.UserRoleForm');
355 $userRoleForm =
new UserRoleForm($userId, $user->getFullName());
356 $userRoleForm->readInputData();
358 if ($userRoleForm->validate()) {
359 $userRoleForm->execute();
375 $user = $request->getUser();
378 $userId = $request->getUserVar(
'rowId');
379 if (!$userId) $userId = $request->getUserVar(
'userId');
382 $enable = isset($args[
'enable']) ? (bool) $args[
'enable'] :
false;
386 return new JSONMessage(
false, __(
'grid.user.cannotAdminister'));
389 import(
'lib.pkp.controllers.grid.settings.user.form.UserDisableForm');
392 $userForm->initData();
394 return new JSONMessage(
true, $userForm->display($request));
405 $user = $request->getUser();
408 $userId = $request->getUserVar(
'userId');
411 $enable = (bool) $request->getUserVar(
'enable');
415 return new JSONMessage(
false, __(
'grid.user.cannotAdminister'));
419 import(
'lib.pkp.controllers.grid.settings.user.form.UserDisableForm');
422 $userForm->readInputData();
424 if ($userForm->validate()) {
425 $user = $userForm->execute();
432 return new JSONMessage(
false, $userForm->display($request));
443 if (!$request->checkCSRF())
return new JSONMessage(
false);
445 $context = $request->getContext();
446 $user = $request->getUser();
449 $userId = $request->getUserVar(
'rowId');
453 return new JSONMessage(
false, __(
'grid.user.cannotAdminister'));
460 if (!$userGroupDao->userInAnyGroup($userId, $context->getId())) {
461 return new JSONMessage(
false, __(
'grid.user.userNoRoles'));
463 $userGroupDao->deleteAssignmentsByContextId($context->getId(), $userId);
475 $user = $request->getUser();
476 $context = $request->getContext();
479 $userId = $request->getUserVar(
'rowId');
483 !$roleDao->userHasRole(CONTEXT_SITE, $user->getId(), ROLE_ID_SITE_ADMIN) && !(
485 $roleDao->userHasRole($context->getId(), $user->getId(), ROLE_ID_MANAGER)
489 return new JSONMessage(
false, __(
'grid.user.cannotAdminister'));
492 import(
'lib.pkp.controllers.grid.settings.user.form.UserEmailForm');
494 $userEmailForm->initData();
496 return new JSONMessage(
true, $userEmailForm->fetch($request));
507 $user = $request->getUser();
508 $context = $request->getContext();
511 $userId = $request->getUserVar(
'userId');
515 !$roleDao->userHasRole(CONTEXT_SITE, $user->getId(), ROLE_ID_SITE_ADMIN) && !(
517 $roleDao->userHasRole($context->getId(), $user->getId(), ROLE_ID_MANAGER)
521 return new JSONMessage(
false, __(
'grid.user.cannotAdminister'));
524 import(
'lib.pkp.controllers.grid.settings.user.form.UserEmailForm');
526 $userEmailForm->readInputData();
528 if ($userEmailForm->validate()) {
529 $userEmailForm->execute();
532 return new JSONMessage(
false, __(
'validator.filled'));
544 $newUserId = (int) $request->getUserVar(
'newUserId');
545 $oldUserId = (int) $request->getUserVar(
'oldUserId');
546 $user = $request->getUser();
550 if (!$request->checkCSRF())
return new JSONMessage(
false);
551 import(
'classes.user.UserAction');
553 $userAction->mergeUsers($oldUserId, $newUserId);
555 $json->setGlobalEvent(
'userMerged', array(
556 'oldUserId' => $oldUserId,
557 'newUserId' => $newUserId,
564 $userGrid->initialize($request);
565 $userGrid->setTitle(
'grid.user.mergeUsers.mergeIntoUser');
566 return $userGrid->fetchGrid($args, $request);
574 $requestArgs = (array) parent::getRequestArgs();