00001 <?php
00002
00015
00016
00017
00018 class AdminPeopleHandler extends AdminHandler {
00019
00023 function mergeUsers($args) {
00024 parent::validate();
00025 parent::setupTemplate(true);
00026
00027 $roleDao = &DAORegistry::getDAO('RoleDAO');
00028 $userDao =& DAORegistry::getDAO('UserDAO');
00029
00030 $templateMgr =& TemplateManager::getManager();
00031
00032 $oldUserId = Request::getUserVar('oldUserId');
00033 $newUserId = Request::getUserVar('newUserId');
00034
00035 if (!empty($oldUserId) && !empty($newUserId)) {
00036
00037
00038 $articleDao =& DAORegistry::getDAO('ArticleDAO');
00039 foreach ($articleDao->getArticlesByUserId($oldUserId) as $article) {
00040 $article->setUserId($newUserId);
00041 $articleDao->updateArticle($article);
00042 unset($article);
00043 }
00044
00045 $commentDao =& DAORegistry::getDAO('CommentDAO');
00046 foreach ($commentDao->getCommentsByUserId($oldUserId) as $comment) {
00047 $comment->setUserId($newUserId);
00048 $commentDao->updateComment($comment);
00049 unset($comment);
00050 }
00051
00052 $articleNoteDao =& DAORegistry::getDAO('ArticleNoteDAO');
00053 $articleNotes =& $articleNoteDao->getArticleNotesByUserId($oldUserId);
00054 while ($articleNote =& $articleNotes->next()) {
00055 $articleNote->setUserId($newUserId);
00056 $articleNoteDao->updateArticleNote($articleNote);
00057 unset($articleNote);
00058 }
00059
00060 $editAssignmentDao =& DAORegistry::getDAO('EditAssignmentDAO');
00061 $editAssignments =& $editAssignmentDao->getEditAssignmentsByUserId($oldUserId);
00062 while ($editAssignment =& $editAssignments->next()) {
00063 $editAssignment->setEditorId($newUserId);
00064 $editAssignmentDao->updateEditAssignment($editAssignment);
00065 unset($editAssignment);
00066 }
00067
00068 $editorSubmissionDao =& DAORegistry::getDAO('EditorSubmissionDAO');
00069 $editorSubmissionDao->transferEditorDecisions($oldUserId, $newUserId);
00070
00071 $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO');
00072 foreach ($reviewAssignmentDao->getReviewAssignmentsByUserId($oldUserId) as $reviewAssignment) {
00073 $reviewAssignment->setReviewerId($newUserId);
00074 $reviewAssignmentDao->updateReviewAssignment($reviewAssignment);
00075 unset($reviewAssignment);
00076 }
00077
00078 $copyeditorSubmissionDao =& DAORegistry::getDAO('CopyeditorSubmissionDAO');
00079 $copyeditorSubmissions =& $copyeditorSubmissionDao->getCopyeditorSubmissionsByCopyeditorId($oldUserId);
00080 while ($copyeditorSubmission =& $copyeditorSubmissions->next()) {
00081 $copyeditorSubmission->setCopyeditorId($newUserId);
00082 $copyeditorSubmissionDao->updateCopyeditorSubmission($copyeditorSubmission);
00083 unset($copyeditorSubmission);
00084 }
00085
00086 $layoutEditorSubmissionDao =& DAORegistry::getDAO('LayoutEditorSubmissionDAO');
00087 $layoutEditorSubmissions =& $layoutEditorSubmissionDao->getSubmissions($oldUserId);
00088 while ($layoutEditorSubmission =& $layoutEditorSubmissions->next()) {
00089 $layoutAssignment =& $layoutEditorSubmission->getLayoutAssignment();
00090 $layoutAssignment->setEditorId($newUserId);
00091 $layoutEditorSubmissionDao->updateSubmission($layoutEditorSubmission);
00092 unset($layoutAssignment);
00093 unset($layoutEditorSubmission);
00094 }
00095
00096 $proofreaderSubmissionDao =& DAORegistry::getDAO('ProofreaderSubmissionDAO');
00097 $proofreaderSubmissions =& $proofreaderSubmissionDao->getSubmissions($oldUserId);
00098 while ($proofreaderSubmission =& $proofreaderSubmissions->next()) {
00099 $proofAssignment =& $proofreaderSubmission->getProofAssignment();
00100 $proofAssignment->setProofreaderId($newUserId);
00101 $proofreaderSubmissionDao->updateSubmission($proofreaderSubmission);
00102 unset($proofAssignment);
00103 unset($proofreaderSubmission);
00104 }
00105
00106 $articleEmailLogDao =& DAORegistry::getDAO('ArticleEmailLogDAO');
00107 $articleEmailLogDao->transferArticleLogEntries($oldUserId, $newUserId);
00108 $articleEventLogDao =& DAORegistry::getDAO('ArticleEventLogDAO');
00109 $articleEventLogDao->transferArticleLogEntries($oldUserId, $newUserId);
00110
00111 $articleCommentDao =& DAORegistry::getDAO('ArticleCommentDAO');
00112 foreach ($articleCommentDao->getArticleCommentsByUserId($oldUserId) as $articleComment) {
00113 $articleComment->setAuthorId($newUserId);
00114 $articleCommentDao->updateArticleComment($articleComment);
00115 unset($articleComment);
00116 }
00117
00118 $accessKeyDao =& DAORegistry::getDAO('AccessKeyDAO');
00119 $accessKeyDao->transferAccessKeys($oldUserId, $newUserId);
00120
00121
00122 $sessionDao =& DAORegistry::getDAO('SessionDAO');
00123 $sessionDao->deleteSessionsByUserId($oldUserId);
00124 $subscriptionDao =& DAORegistry::getDAO('SubscriptionDAO');
00125 $subscriptionDao->deleteSubscriptionsByUserId($oldUserId);
00126 $temporaryFileDao =& DAORegistry::getDAO('TemporaryFileDAO');
00127 $temporaryFileDao->deleteTemporaryFilesByUserId($oldUserId);
00128 $notificationStatusDao =& DAORegistry::getDAO('NotificationStatusDAO');
00129 $notificationStatusDao->deleteNotificationStatusByUserId($oldUserId);
00130 $userSettingsDao =& DAORegistry::getDAO('UserSettingsDAO');
00131 $userSettingsDao->deleteSettings($oldUserId);
00132 $groupMembershipDao =& DAORegistry::getDAO('GroupMembershipDAO');
00133 $groupMembershipDao->deleteMembershipByUserId($oldUserId);
00134 $sectionEditorsDao =& DAORegistry::getDAO('SectionEditorsDAO');
00135 $sectionEditorsDao->deleteEditorsByUserId($oldUserId);
00136
00137
00138 $roles =& $roleDao->getRolesByUserId($oldUserId);
00139 foreach ($roles as $role) {
00140 if (!$roleDao->roleExists($role->getJournalId(), $newUserId, $role->getRoleId())) {
00141 $role->setUserId($newUserId);
00142 $roleDao->insertRole($role);
00143 }
00144 }
00145 $roleDao->deleteRoleByUserId($oldUserId);
00146
00147 $userDao->deleteUserById($oldUserId);
00148
00149 Request::redirect(null, 'admin', 'mergeUsers');
00150 }
00151
00152 if (!empty($oldUserId)) {
00153
00154 $oldUser =& $userDao->getUser($oldUserId);
00155 $templateMgr->assign('oldUsername', $oldUser->getUsername());
00156 unset($oldUser);
00157 }
00158
00159
00160 if (Request::getUserVar('roleSymbolic')!=null) $roleSymbolic = Request::getUserVar('roleSymbolic');
00161 else $roleSymbolic = isset($args[0])?$args[0]:'all';
00162
00163 if ($roleSymbolic != 'all' && String::regexp_match_get('/^(\w+)s$/', $roleSymbolic, $matches)) {
00164 $roleId = $roleDao->getRoleIdFromPath($matches[1]);
00165 if ($roleId == null) {
00166 Request::redirect(null, null, null, 'all');
00167 }
00168 $roleName = $roleDao->getRoleName($roleId, true);
00169 } else {
00170 $roleId = 0;
00171 $roleName = 'admin.mergeUsers.allUsers';
00172 }
00173
00174 $searchType = null;
00175 $searchMatch = null;
00176 $search = Request::getUserVar('search');
00177 $searchInitial = Request::getUserVar('searchInitial');
00178 if (isset($search)) {
00179 $searchType = Request::getUserVar('searchField');
00180 $searchMatch = Request::getUserVar('searchMatch');
00181
00182 } else if (isset($searchInitial)) {
00183 $searchInitial = String::strtoupper($searchInitial);
00184 $searchType = USER_FIELD_INITIAL;
00185 $search = $searchInitial;
00186 }
00187
00188 $rangeInfo = Handler::getRangeInfo('users');
00189
00190 if ($roleId) {
00191 $users = &$roleDao->getUsersByRoleId($roleId, null, $searchType, $search, $searchMatch, $rangeInfo);
00192 $templateMgr->assign('roleId', $roleId);
00193 } else {
00194 $users = &$userDao->getUsersByField($searchType, $searchMatch, $search, true, $rangeInfo);
00195 }
00196
00197 $templateMgr->assign('currentUrl', Request::url(null, null, 'mergeUsers'));
00198 $templateMgr->assign('helpTopicId', 'site.administrativeFunctions');
00199 $templateMgr->assign('roleName', $roleName);
00200 $templateMgr->assign_by_ref('users', $users);
00201 $templateMgr->assign_by_ref('thisUser', Request::getUser());
00202 $templateMgr->assign('isReviewer', $roleId == ROLE_ID_REVIEWER);
00203
00204 $templateMgr->assign('searchField', $searchType);
00205 $templateMgr->assign('searchMatch', $searchMatch);
00206 $templateMgr->assign('search', $search);
00207 $templateMgr->assign('searchInitial', Request::getUserVar('searchInitial'));
00208
00209 if ($roleId == ROLE_ID_REVIEWER) {
00210 $reviewAssignmentDao = &DAORegistry::getDAO('ReviewAssignmentDAO');
00211 $templateMgr->assign('rateReviewerOnQuality', $journal->getSetting('rateReviewerOnQuality'));
00212 $templateMgr->assign('qualityRatings', $journal->getSetting('rateReviewerOnQuality') ? $reviewAssignmentDao->getAverageQualityRatings($journalId) : null);
00213 }
00214 $templateMgr->assign('fieldOptions', Array(
00215 USER_FIELD_FIRSTNAME => 'user.firstName',
00216 USER_FIELD_LASTNAME => 'user.lastName',
00217 USER_FIELD_USERNAME => 'user.username',
00218 USER_FIELD_EMAIL => 'user.email',
00219 USER_FIELD_INTERESTS => 'user.interests'
00220 ));
00221 $templateMgr->assign('alphaList', explode(' ', Locale::translate('common.alphaList')));
00222 $templateMgr->assign('oldUserId', $oldUserId);
00223 $templateMgr->assign('rolePath', $roleDao->getRolePath($roleId));
00224 $templateMgr->assign('roleSymbolic', $roleSymbolic);
00225 $templateMgr->display('admin/selectMergeUser.tpl');
00226 }
00227
00228 }
00229
00230 ?>