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
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
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
00068 $this->setTitle('admin.mergeUsers');
00069
00070
00071
00072
00073 import('controllers.grid.admin.mergeUsers.MergeUsersGridCellProvider');
00074 $mergerUsersGridCellProvider = new MergeUsersGridCellProvider();
00075
00076
00077 $this->addColumn(
00078 new GridColumn(
00079 'username',
00080 'user.username',
00081 null,
00082 'controllers/grid/gridCell.tpl',
00083 $mergerUsersGridCellProvider
00084 )
00085 );
00086
00087
00088 $this->addColumn(
00089 new GridColumn(
00090 'name',
00091 'user.name',
00092 null,
00093 'controllers/grid/gridCell.tpl',
00094 $mergerUsersGridCellProvider
00095 )
00096 );
00097
00098
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
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
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
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
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 ?>