• Main Page
  • Modules
  • Classes
  • Files
  • File List

controllers/grid/admin/mergeUsers/MergeUsersGridHandler.inc.php

00001 <?php
00002 
00015 import('lib.pkp.classes.controllers.grid.GridHandler');
00016 import('controllers.grid.admin.mergeUsers.MergeUsersGridRow');
00017 
00018 class MergeUsersGridHandler extends GridHandler {
00020    var $_oldUserId;
00021 
00025    function MergeUsersGridHandler() {
00026       parent::GridHandler();
00027       $this->addRoleAssignment(array(
00028          ROLE_ID_SITE_ADMIN),
00029          array('fetchGrid', 'fetchRow', 'mergeUser')
00030       );
00031    }
00032 
00033 
00034    //
00035    // Implement template methods from PKPHandler.
00036    //
00040    function authorize(&$request, $args, $roleAssignments) {
00041       import('lib.pkp.classes.security.authorization.PolicySet');
00042       $rolePolicy = new PolicySet(COMBINING_PERMIT_OVERRIDES);
00043 
00044       import('lib.pkp.classes.security.authorization.RoleBasedHandlerOperationPolicy');
00045       foreach($roleAssignments as $role => $operations) {
00046          $rolePolicy->addPolicy(new RoleBasedHandlerOperationPolicy($request, $role, $operations));
00047       }
00048       $this->addPolicy($rolePolicy);
00049 
00050       return parent::authorize($request, $args, $roleAssignments);
00051    }
00052 
00056    function initialize(&$request) {
00057       parent::initialize($request);
00058 
00059       // Load user-related translations.
00060       AppLocale::requireComponents(
00061          LOCALE_COMPONENT_PKP_USER,
00062          LOCALE_COMPONENT_OMP_ADMIN,
00063          LOCALE_COMPONENT_OMP_MANAGER,
00064          LOCALE_COMPONENT_APPLICATION_COMMON
00065       );
00066 
00067       // Basic grid configuration.
00068       $this->setTitle('admin.mergeUsers');
00069 
00070       //
00071       // Grid columns.
00072       //
00073       import('controllers.grid.admin.mergeUsers.MergeUsersGridCellProvider');
00074       $mergerUsersGridCellProvider = new MergeUsersGridCellProvider();
00075 
00076       // username
00077       $this->addColumn(
00078          new GridColumn(
00079             'username',
00080             'user.username',
00081             null,
00082             'controllers/grid/gridCell.tpl',
00083             $mergerUsersGridCellProvider
00084          )
00085       );
00086 
00087       // User's real name.
00088       $this->addColumn(
00089          new GridColumn(
00090             'name',
00091             'user.name',
00092             null,
00093             'controllers/grid/gridCell.tpl',
00094             $mergerUsersGridCellProvider
00095          )
00096       );
00097 
00098       // User's email address.
00099       $this->addColumn(
00100          new GridColumn(
00101             'email',
00102             'user.email',
00103             null,
00104             'controllers/grid/gridCell.tpl',
00105             $mergerUsersGridCellProvider
00106          )
00107       );
00108 
00109    }
00110 
00111 
00112    //
00113    // Implement methods from GridHandler.
00114    //
00119    function &getRowInstance() {
00120       $row = new MergeUsersGridRow($this->_oldUserId);
00121       return $row;
00122    }
00123 
00129    function loadData(&$request, $filter) {
00130       $userGroupDao =& DAORegistry::getDAO('UserGroupDAO');
00131       $userDao =& DAORegistry::getDAO('UserDAO');
00132       $roleDao =& DAORegistry::getDAO('RoleDAO');
00133 
00134       if ($filter['roleSymbolic'] != 'all' && String::regexp_match_get('/^(\w+)$/', $filter['roleSymbolic'], $matches)) {
00135          $roleId = $roleDao->getRoleIdFromPath($matches[1]);
00136          if ($roleId == null) {
00137             $roleId = 0;
00138          }
00139       } else {
00140          $roleId = 0;
00141       }
00142 
00143       if ($roleId) {
00144          $users =& $roleDao->getUsersByRoleId($roleId, null, $filter['searchField'], $filter['search'], $filter['searchMatch']);
00145       } else {
00146          $users =& $userDao->getUsersByField($filter['searchField'], $filter['searchMatch'], $filter['search'], true);
00147       }
00148 
00149       $userArray = $users->toAssociativeArray();
00150 
00151       // remove the chosen user from the grid, if one has been picked.
00152       if ($filter['oldUserId']) {
00153          if (array_key_exists($filter['oldUserId'], $userArray)) {
00154             unset($userArray[$filter['oldUserId']]);
00155          }
00156       }
00157 
00158       return $userArray;
00159    }
00160 
00165    function getFilterForm() {
00166       return 'controllers/grid/admin/mergeUsers/mergeUsersGridFilter.tpl';
00167    }
00168 
00172    function renderFilter(&$request) {
00173 
00174       $fieldOptions = array(
00175             USER_FIELD_FIRSTNAME => 'user.firstName',
00176             USER_FIELD_LASTNAME => 'user.lastName',
00177             USER_FIELD_USERNAME => 'user.username',
00178             USER_FIELD_EMAIL => 'user.email',
00179             USER_FIELD_INTERESTS => 'user.interests',
00180       );
00181 
00182       $roleSymbolicOptions = array(
00183             'all' => 'admin.mergeUsers.allUsers',
00184             'manager' => 'user.role.managers',
00185             'seriesEditor' => 'user.role.seriesEditors',
00186             'copyeditor' => 'user.role.copyeditors',
00187             'proofreader' => 'user.role.proofreaders',
00188             'reviewer' => 'user.role.reviewers',
00189             'author' => 'user.role.authors',
00190             'reader' => 'user.role.readers',
00191       );
00192 
00193       $searchMatchOptions = array(
00194             'contains' => 'form.contains',
00195             'is' => 'form.is',
00196       );
00197 
00198       $filterData = array(
00199             'roleSymbolicOptions' => $roleSymbolicOptions,
00200             'fieldOptions' => $fieldOptions,
00201             'searchMatchOptions' => $searchMatchOptions,
00202             'oldUserId' => $request->getUserVar('oldUserId'),
00203       );
00204 
00205       return parent::renderFilter($request, $filterData);
00206    }
00207 
00212    function getFilterSelectionData(&$request) {
00213       // Get the search terms.
00214       $searchField = $request->getUserVar('searchField');
00215       $searchMatch = $request->getUserVar('searchMatch');
00216       $search = $request->getUserVar('search');
00217       $roleSymbolic = $request->getUserVar('roleSymbolic') ? $request->getUserVar('roleSymbolic') : 0;
00218       $oldUserId = $request->getUserVar('oldUserId');
00219 
00220       // stash this since the grid row requires it.
00221       $this->_oldUserId = $oldUserId;
00222 
00223       return array(
00224          'searchField' => $searchField,
00225          'searchMatch' => $searchMatch,
00226          'search' => $search,
00227          'roleSymbolic' => $roleSymbolic,
00228          'oldUserId' => $oldUserId,
00229       );
00230 
00231    }
00232 }
00233 ?>

Generated on Mon Sep 17 2012 13:58:55 for Open Monograph Press by  doxygen 1.7.1