00001 <?php
00002
00015
00016
00017
00018 class PeopleHandler extends ManagerHandler {
00019
00024 function people($args) {
00025 parent::validate();
00026 parent::setupTemplate(true);
00027
00028 $roleDao = &DAORegistry::getDAO('RoleDAO');
00029
00030 if (Request::getUserVar('roleSymbolic')!=null) $roleSymbolic = Request::getUserVar('roleSymbolic');
00031 else $roleSymbolic = isset($args[0])?$args[0]:'all';
00032
00033 if ($roleSymbolic != 'all' && String::regexp_match_get('/^(\w+)s$/', $roleSymbolic, $matches)) {
00034 $roleId = $roleDao->getRoleIdFromPath($matches[1]);
00035 if ($roleId == null) {
00036 Request::redirect(null, null, null, 'all');
00037 }
00038 $roleName = $roleDao->getRoleName($roleId, true);
00039
00040 } else {
00041 $roleId = 0;
00042 $roleName = 'manager.people.allUsers';
00043 }
00044
00045 $journal = &Request::getJournal();
00046 $templateMgr = &TemplateManager::getManager();
00047
00048 $searchType = null;
00049 $searchMatch = null;
00050 $search = Request::getUserVar('search');
00051 $searchInitial = Request::getUserVar('searchInitial');
00052 if (isset($search)) {
00053 $searchType = Request::getUserVar('searchField');
00054 $searchMatch = Request::getUserVar('searchMatch');
00055
00056 } else if (isset($searchInitial)) {
00057 $searchInitial = String::strtoupper($searchInitial);
00058 $searchType = USER_FIELD_INITIAL;
00059 $search = $searchInitial;
00060 }
00061
00062 $rangeInfo = Handler::getRangeInfo('users');
00063
00064 if ($roleId) {
00065 $users = &$roleDao->getUsersByRoleId($roleId, $journal->getJournalId(), $searchType, $search, $searchMatch, $rangeInfo);
00066 $templateMgr->assign('roleId', $roleId);
00067 switch($roleId) {
00068 case ROLE_ID_JOURNAL_MANAGER:
00069 $helpTopicId = 'journal.roles.journalManager';
00070 break;
00071 case ROLE_ID_EDITOR:
00072 $helpTopicId = 'journal.roles.editor';
00073 break;
00074 case ROLE_ID_SECTION_EDITOR:
00075 $helpTopicId = 'journal.roles.sectionEditor';
00076 break;
00077 case ROLE_ID_LAYOUT_EDITOR:
00078 $helpTopicId = 'journal.roles.layoutEditor';
00079 break;
00080 case ROLE_ID_REVIEWER:
00081 $helpTopicId = 'journal.roles.reviewer';
00082 break;
00083 case ROLE_ID_COPYEDITOR:
00084 $helpTopicId = 'journal.roles.copyeditor';
00085 break;
00086 case ROLE_ID_PROOFREADER:
00087 $helpTopicId = 'journal.roles.proofreader';
00088 break;
00089 case ROLE_ID_AUTHOR:
00090 $helpTopicId = 'journal.roles.author';
00091 break;
00092 case ROLE_ID_READER:
00093 $helpTopicId = 'journal.roles.reader';
00094 break;
00095 case ROLE_ID_SUBSCRIPTION_MANAGER:
00096 $helpTopicId = 'journal.roles.subscriptionManager';
00097 break;
00098 default:
00099 $helpTopicId = 'journal.roles.index';
00100 break;
00101 }
00102 } else {
00103 $users = &$roleDao->getUsersByJournalId($journal->getJournalId(), $searchType, $search, $searchMatch, $rangeInfo);
00104 $helpTopicId = 'journal.users.allUsers';
00105 }
00106
00107 $templateMgr->assign('currentUrl', Request::url(null, null, 'people', 'all'));
00108 $templateMgr->assign('roleName', $roleName);
00109 $templateMgr->assign_by_ref('users', $users);
00110 $templateMgr->assign_by_ref('thisUser', Request::getUser());
00111 $templateMgr->assign('isReviewer', $roleId == ROLE_ID_REVIEWER);
00112
00113 $templateMgr->assign('searchField', $searchType);
00114 $templateMgr->assign('searchMatch', $searchMatch);
00115 $templateMgr->assign('search', $search);
00116 $templateMgr->assign('searchInitial', Request::getUserVar('searchInitial'));
00117
00118 if ($roleId == ROLE_ID_REVIEWER) {
00119 $reviewAssignmentDao = &DAORegistry::getDAO('ReviewAssignmentDAO');
00120 $templateMgr->assign('rateReviewerOnQuality', $journal->getSetting('rateReviewerOnQuality'));
00121 $templateMgr->assign('qualityRatings', $journal->getSetting('rateReviewerOnQuality') ? $reviewAssignmentDao->getAverageQualityRatings($journal->getJournalId()) : null);
00122 }
00123 $templateMgr->assign('helpTopicId', $helpTopicId);
00124 $fieldOptions = Array(
00125 USER_FIELD_FIRSTNAME => 'user.firstName',
00126 USER_FIELD_LASTNAME => 'user.lastName',
00127 USER_FIELD_USERNAME => 'user.username',
00128 USER_FIELD_INTERESTS => 'user.interests',
00129 USER_FIELD_EMAIL => 'user.email'
00130 );
00131 if ($roleId == ROLE_ID_REVIEWER) $fieldOptions = array_merge(array(USER_FIELD_INTERESTS => 'user.interests'), $fieldOptions);
00132 $templateMgr->assign('fieldOptions', $fieldOptions);
00133 $templateMgr->assign('rolePath', $roleDao->getRolePath($roleId));
00134 $templateMgr->assign('alphaList', explode(' ', Locale::translate('common.alphaList')));
00135 $templateMgr->assign('roleSymbolic', $roleSymbolic);
00136 $templateMgr->display('manager/people/enrollment.tpl');
00137 }
00138
00143 function enrollSearch($args) {
00144 parent::validate();
00145
00146 $roleDao = &DAORegistry::getDAO('RoleDAO');
00147 $journalDao = &DAORegistry::getDAO('JournalDAO');
00148 $userDao = &DAORegistry::getDAO('UserDAO');
00149
00150 $roleId = (int)(isset($args[0])?$args[0]:Request::getUserVar('roleId'));
00151 $journal = &$journalDao->getJournalByPath(Request::getRequestedJournalPath());
00152
00153 $templateMgr = &TemplateManager::getManager();
00154
00155 parent::setupTemplate(true);
00156
00157 $searchType = null;
00158 $searchMatch = null;
00159 $search = Request::getUserVar('search');
00160 $searchInitial = Request::getUserVar('searchInitial');
00161 if (isset($search)) {
00162 $searchType = Request::getUserVar('searchField');
00163 $searchMatch = Request::getUserVar('searchMatch');
00164
00165 } else if (isset($searchInitial)) {
00166 $searchInitial = String::strtoupper($searchInitial);
00167 $searchType = USER_FIELD_INITIAL;
00168 $search = $searchInitial;
00169 }
00170
00171 $rangeInfo = Handler::getRangeInfo('users');
00172
00173 $users = &$userDao->getUsersByField($searchType, $searchMatch, $search, true, $rangeInfo);
00174
00175 $templateMgr->assign('searchField', $searchType);
00176 $templateMgr->assign('searchMatch', $searchMatch);
00177 $templateMgr->assign('search', $search);
00178 $templateMgr->assign('searchInitial', Request::getUserVar('searchInitial'));
00179
00180 $templateMgr->assign('roleId', $roleId);
00181 $templateMgr->assign('roleName', $roleDao->getRoleName($roleId));
00182 $fieldOptions = Array(
00183 USER_FIELD_FIRSTNAME => 'user.firstName',
00184 USER_FIELD_LASTNAME => 'user.lastName',
00185 USER_FIELD_USERNAME => 'user.username',
00186 USER_FIELD_EMAIL => 'user.email'
00187 );
00188 if ($roleId == ROLE_ID_REVIEWER) $fieldOptions = array_merge(array(USER_FIELD_INTERESTS => 'user.interests'), $fieldOptions);
00189 $templateMgr->assign('fieldOptions', $fieldOptions);
00190 $templateMgr->assign_by_ref('users', $users);
00191 $templateMgr->assign_by_ref('thisUser', Request::getUser());
00192 $templateMgr->assign('alphaList', explode(' ', Locale::translate('common.alphaList')));
00193 $templateMgr->assign('helpTopicId', 'journal.users.index');
00194 $templateMgr->display('manager/people/searchUsers.tpl');
00195 }
00196
00200 function enroll($args) {
00201 parent::validate();
00202 $roleId = (int)(isset($args[0])?$args[0]:Request::getUserVar('roleId'));
00203
00204
00205
00206
00207 $users = Request::getUserVar('users');
00208 if (!isset($users) && Request::getUserVar('userId') != null) {
00209 $users = array(Request::getUserVar('userId'));
00210 }
00211
00212 $journalDao = &DAORegistry::getDAO('JournalDAO');
00213 $journal = &$journalDao->getJournalByPath(Request::getRequestedJournalPath());
00214 $roleDao = &DAORegistry::getDAO('RoleDAO');
00215 $rolePath = $roleDao->getRolePath($roleId);
00216
00217 if ($users != null && is_array($users) && $rolePath != '' && $rolePath != 'admin') {
00218 for ($i=0; $i<count($users); $i++) {
00219 if (!$roleDao->roleExists($journal->getJournalId(), $users[$i], $roleId)) {
00220 $role = &new Role();
00221 $role->setJournalId($journal->getJournalId());
00222 $role->setUserId($users[$i]);
00223 $role->setRoleId($roleId);
00224
00225 $roleDao->insertRole($role);
00226 }
00227 }
00228 }
00229
00230 Request::redirect(null, null, 'people', (empty($rolePath) ? null : $rolePath . 's'));
00231 }
00232
00236 function unEnroll($args) {
00237 $roleId = isset($args[0])?$args[0]:0;
00238 parent::validate();
00239
00240 $journalDao = &DAORegistry::getDAO('JournalDAO');
00241 $journal = &$journalDao->getJournalByPath(Request::getRequestedJournalPath());
00242
00243 $roleDao = &DAORegistry::getDAO('RoleDAO');
00244 if ($roleId != $roleDao->getRoleIdFromPath('admin')) {
00245 $roleDao->deleteRoleByUserId(Request::getUserVar('userId'), $journal->getJournalId(), $roleId);
00246 }
00247
00248 Request::redirect(null, null, 'people');
00249 }
00250
00254 function enrollSyncSelect($args) {
00255 parent::validate();
00256
00257 $rolePath = isset($args[0]) ? $args[0] : '';
00258 $roleDao = &DAORegistry::getDAO('RoleDAO');
00259 $roleId = $roleDao->getRoleIdFromPath($rolePath);
00260 if ($roleId) {
00261 $roleName = $roleDao->getRoleName($roleId, true);
00262 } else {
00263 $rolePath = '';
00264 $roleName = '';
00265 }
00266
00267 $journalDao = &DAORegistry::getDAO('JournalDAO');
00268 $journalTitles = &$journalDao->getJournalTitles();
00269
00270 $journal = &Request::getJournal();
00271 unset($journalTitles[$journal->getJournalId()]);
00272
00273 $templateMgr = &TemplateManager::getManager();
00274 $templateMgr->assign('rolePath', $rolePath);
00275 $templateMgr->assign('roleName', $roleName);
00276 $templateMgr->assign('journalOptions', $journalTitles);
00277 $templateMgr->display('manager/people/enrollSync.tpl');
00278 }
00279
00283 function enrollSync($args) {
00284 parent::validate();
00285
00286 $journal = &Request::getJournal();
00287 $rolePath = Request::getUserVar('rolePath');
00288 $syncJournal = Request::getUserVar('syncJournal');
00289
00290 $roleDao = &DAORegistry::getDAO('RoleDAO');
00291 $roleId = $roleDao->getRoleIdFromPath($rolePath);
00292
00293 if ((!empty($roleId) || $rolePath == 'all') && !empty($syncJournal)) {
00294 $roles = &$roleDao->getRolesByJournalId($syncJournal == 'all' ? null : $syncJournal, $roleId);
00295 while (!$roles->eof()) {
00296 $role = &$roles->next();
00297 $role->setJournalId($journal->getJournalId());
00298 if ($role->getRolePath() != 'admin' && !$roleDao->roleExists($role->getJournalId(), $role->getUserId(), $role->getRoleId())) {
00299 $roleDao->insertRole($role);
00300 }
00301 }
00302 }
00303
00304 Request::redirect(null, null, 'people', $roleDao->getRolePath($roleId));
00305 }
00306
00310 function createUser() {
00311 PeopleHandler::editUser();
00312 }
00313
00318 function suggestUsername() {
00319 parent::validate();
00320 $suggestion = Validation::suggestUsername(
00321 Request::getUserVar('firstName'),
00322 Request::getUserVar('lastName')
00323 );
00324 echo $suggestion;
00325 }
00326
00331 function editUser($args = array()) {
00332 parent::validate();
00333 parent::setupTemplate(true);
00334
00335 $journal = &Request::getJournal();
00336
00337 $userId = isset($args[0])?$args[0]:null;
00338
00339 $templateMgr = &TemplateManager::getManager();
00340
00341 if ($userId !== null && !Validation::canAdminister($journal->getJournalId(), $userId)) {
00342
00343
00344 $templateMgr->assign('pageTitle', 'manager.people');
00345 $templateMgr->assign('errorMsg', 'manager.people.noAdministrativeRights');
00346 $templateMgr->assign('backLink', Request::url(null, null, 'people', 'all'));
00347 $templateMgr->assign('backLinkLabel', 'manager.people.allUsers');
00348 return $templateMgr->display('common/error.tpl');
00349 }
00350
00351 import('manager.form.UserManagementForm');
00352
00353 $templateMgr->assign('currentUrl', Request::url(null, null, 'people', 'all'));
00354 $userForm = &new UserManagementForm($userId);
00355 if ($userForm->isLocaleResubmit()) {
00356 $userForm->readInputData();
00357 } else {
00358 $userForm->initData();
00359 }
00360 $userForm->display();
00361 }
00362
00366 function mergeUsers($args) {
00367 parent::validate();
00368 parent::setupTemplate(true);
00369
00370 $roleDao = &DAORegistry::getDAO('RoleDAO');
00371 $userDao =& DAORegistry::getDAO('UserDAO');
00372
00373 $journal =& Request::getJournal();
00374 $journalId = $journal->getJournalId();
00375 $templateMgr =& TemplateManager::getManager();
00376
00377 $oldUserId = Request::getUserVar('oldUserId');
00378 $newUserId = Request::getUserVar('newUserId');
00379
00380
00381 if (
00382 (!empty($oldUserId) && !Validation::canAdminister($journalId, $oldUserId)) ||
00383 (!empty($newUserId) && !Validation::canAdminister($journalId, $newUserId))
00384 ) {
00385 $templateMgr->assign('pageTitle', 'manager.people');
00386 $templateMgr->assign('errorMsg', 'manager.people.noAdministrativeRights');
00387 $templateMgr->assign('backLink', Request::url(null, null, 'people', 'all'));
00388 $templateMgr->assign('backLinkLabel', 'manager.people.allUsers');
00389 return $templateMgr->display('common/error.tpl');
00390 }
00391
00392 if (!empty($oldUserId) && !empty($newUserId)) {
00393
00394
00395 $articleDao =& DAORegistry::getDAO('ArticleDAO');
00396 foreach ($articleDao->getArticlesByUserId($oldUserId) as $article) {
00397 $article->setUserId($newUserId);
00398 $articleDao->updateArticle($article);
00399 unset($article);
00400 }
00401
00402 $commentDao =& DAORegistry::getDAO('CommentDAO');
00403 foreach ($commentDao->getCommentsByUserId($oldUserId) as $comment) {
00404 $comment->setUserId($newUserId);
00405 $commentDao->updateComment($comment);
00406 unset($comment);
00407 }
00408
00409 $articleNoteDao =& DAORegistry::getDAO('ArticleNoteDAO');
00410 $articleNotes =& $articleNoteDao->getArticleNotesByUserId($oldUserId);
00411 while ($articleNote =& $articleNotes->next()) {
00412 $articleNote->setUserId($newUserId);
00413 $articleNoteDao->updateArticleNote($articleNote);
00414 unset($articleNote);
00415 }
00416
00417 $editAssignmentDao =& DAORegistry::getDAO('EditAssignmentDAO');
00418 $editAssignments =& $editAssignmentDao->getEditAssignmentsByUserId($oldUserId);
00419 while ($editAssignment =& $editAssignments->next()) {
00420 $editAssignment->setEditorId($newUserId);
00421 $editAssignmentDao->updateEditAssignment($editAssignment);
00422 unset($editAssignment);
00423 }
00424
00425 $editorSubmissionDao =& DAORegistry::getDAO('EditorSubmissionDAO');
00426 $editorSubmissionDao->transferEditorDecisions($oldUserId, $newUserId);
00427
00428 $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO');
00429 foreach ($reviewAssignmentDao->getReviewAssignmentsByUserId($oldUserId) as $reviewAssignment) {
00430 $reviewAssignment->setReviewerId($newUserId);
00431 $reviewAssignmentDao->updateReviewAssignment($reviewAssignment);
00432 unset($reviewAssignment);
00433 }
00434
00435 $copyeditorSubmissionDao =& DAORegistry::getDAO('CopyeditorSubmissionDAO');
00436 $copyeditorSubmissions =& $copyeditorSubmissionDao->getCopyeditorSubmissionsByCopyeditorId($oldUserId);
00437 while ($copyeditorSubmission =& $copyeditorSubmissions->next()) {
00438 $copyeditorSubmission->setCopyeditorId($newUserId);
00439 $copyeditorSubmissionDao->updateCopyeditorSubmission($copyeditorSubmission);
00440 unset($copyeditorSubmission);
00441 }
00442
00443 $layoutEditorSubmissionDao =& DAORegistry::getDAO('LayoutEditorSubmissionDAO');
00444 $layoutEditorSubmissions =& $layoutEditorSubmissionDao->getSubmissions($oldUserId);
00445 while ($layoutEditorSubmission =& $layoutEditorSubmissions->next()) {
00446 $layoutAssignment =& $layoutEditorSubmission->getLayoutAssignment();
00447 $layoutAssignment->setEditorId($newUserId);
00448 $layoutEditorSubmissionDao->updateSubmission($layoutEditorSubmission);
00449 unset($layoutAssignment);
00450 unset($layoutEditorSubmission);
00451 }
00452
00453 $proofreaderSubmissionDao =& DAORegistry::getDAO('ProofreaderSubmissionDAO');
00454 $proofreaderSubmissions =& $proofreaderSubmissionDao->getSubmissions($oldUserId);
00455 while ($proofreaderSubmission =& $proofreaderSubmissions->next()) {
00456 $proofAssignment =& $proofreaderSubmission->getProofAssignment();
00457 $proofAssignment->setProofreaderId($newUserId);
00458 $proofreaderSubmissionDao->updateSubmission($proofreaderSubmission);
00459 unset($proofAssignment);
00460 unset($proofreaderSubmission);
00461 }
00462
00463 $articleEmailLogDao =& DAORegistry::getDAO('ArticleEmailLogDAO');
00464 $articleEmailLogDao->transferArticleLogEntries($oldUserId, $newUserId);
00465 $articleEventLogDao =& DAORegistry::getDAO('ArticleEventLogDAO');
00466 $articleEventLogDao->transferArticleLogEntries($oldUserId, $newUserId);
00467
00468 $articleCommentDao =& DAORegistry::getDAO('ArticleCommentDAO');
00469 foreach ($articleCommentDao->getArticleCommentsByUserId($oldUserId) as $articleComment) {
00470 $articleComment->setAuthorId($newUserId);
00471 $articleCommentDao->updateArticleComment($articleComment);
00472 unset($articleComment);
00473 }
00474
00475 $accessKeyDao =& DAORegistry::getDAO('AccessKeyDAO');
00476 $accessKeyDao->transferAccessKeys($oldUserId, $newUserId);
00477
00478
00479 $sessionDao =& DAORegistry::getDAO('SessionDAO');
00480 $sessionDao->deleteSessionsByUserId($oldUserId);
00481 $subscriptionDao =& DAORegistry::getDAO('SubscriptionDAO');
00482 $subscriptionDao->deleteSubscriptionsByUserId($oldUserId);
00483 $temporaryFileDao =& DAORegistry::getDAO('TemporaryFileDAO');
00484 $temporaryFileDao->deleteTemporaryFilesByUserId($oldUserId);
00485 $notificationStatusDao =& DAORegistry::getDAO('NotificationStatusDAO');
00486 $notificationStatusDao->deleteNotificationStatusByUserId($oldUserId);
00487 $userSettingsDao =& DAORegistry::getDAO('UserSettingsDAO');
00488 $userSettingsDao->deleteSettings($oldUserId);
00489 $groupMembershipDao =& DAORegistry::getDAO('GroupMembershipDAO');
00490 $groupMembershipDao->deleteMembershipByUserId($oldUserId);
00491 $sectionEditorsDao =& DAORegistry::getDAO('SectionEditorsDAO');
00492 $sectionEditorsDao->deleteEditorsByUserId($oldUserId);
00493
00494
00495 $roles =& $roleDao->getRolesByUserId($oldUserId);
00496 foreach ($roles as $role) {
00497 if (!$roleDao->roleExists($role->getJournalId(), $newUserId, $role->getRoleId())) {
00498 $role->setUserId($newUserId);
00499 $roleDao->insertRole($role);
00500 }
00501 }
00502 $roleDao->deleteRoleByUserId($oldUserId);
00503
00504 $userDao->deleteUserById($oldUserId);
00505
00506 Request::redirect(null, 'manager');
00507 }
00508
00509 if (!empty($oldUserId)) {
00510
00511 $oldUser =& $userDao->getUser($oldUserId);
00512 $templateMgr->assign('oldUsername', $oldUser->getUsername());
00513 unset($oldUser);
00514 }
00515
00516
00517 if (Request::getUserVar('roleSymbolic')!=null) $roleSymbolic = Request::getUserVar('roleSymbolic');
00518 else $roleSymbolic = isset($args[0])?$args[0]:'all';
00519
00520 if ($roleSymbolic != 'all' && String::regexp_match_get('/^(\w+)s$/', $roleSymbolic, $matches)) {
00521 $roleId = $roleDao->getRoleIdFromPath($matches[1]);
00522 if ($roleId == null) {
00523 Request::redirect(null, null, null, 'all');
00524 }
00525 $roleName = $roleDao->getRoleName($roleId, true);
00526 } else {
00527 $roleId = 0;
00528 $roleName = 'manager.people.allUsers';
00529 }
00530
00531 $searchType = null;
00532 $searchMatch = null;
00533 $search = Request::getUserVar('search');
00534 $searchInitial = Request::getUserVar('searchInitial');
00535 if (isset($search)) {
00536 $searchType = Request::getUserVar('searchField');
00537 $searchMatch = Request::getUserVar('searchMatch');
00538
00539 } else if (isset($searchInitial)) {
00540 $searchInitial = String::strtoupper($searchInitial);
00541 $searchType = USER_FIELD_INITIAL;
00542 $search = $searchInitial;
00543 }
00544
00545 $rangeInfo = Handler::getRangeInfo('users');
00546
00547 if ($roleId) {
00548 $users = &$roleDao->getUsersByRoleId($roleId, $journalId, $searchType, $search, $searchMatch, $rangeInfo);
00549 $templateMgr->assign('roleId', $roleId);
00550 } else {
00551 $users = &$roleDao->getUsersByJournalId($journalId, $searchType, $search, $searchMatch, $rangeInfo);
00552 }
00553
00554 $templateMgr->assign('currentUrl', Request::url(null, null, 'people', 'all'));
00555 $templateMgr->assign('helpTopicId', 'journal.managementPages.mergeUsers');
00556 $templateMgr->assign('roleName', $roleName);
00557 $templateMgr->assign_by_ref('users', $users);
00558 $templateMgr->assign_by_ref('thisUser', Request::getUser());
00559 $templateMgr->assign('isReviewer', $roleId == ROLE_ID_REVIEWER);
00560
00561 $templateMgr->assign('searchField', $searchType);
00562 $templateMgr->assign('searchMatch', $searchMatch);
00563 $templateMgr->assign('search', $search);
00564 $templateMgr->assign('searchInitial', Request::getUserVar('searchInitial'));
00565
00566 if ($roleId == ROLE_ID_REVIEWER) {
00567 $reviewAssignmentDao = &DAORegistry::getDAO('ReviewAssignmentDAO');
00568 $templateMgr->assign('rateReviewerOnQuality', $journal->getSetting('rateReviewerOnQuality'));
00569 $templateMgr->assign('qualityRatings', $journal->getSetting('rateReviewerOnQuality') ? $reviewAssignmentDao->getAverageQualityRatings($journalId) : null);
00570 }
00571 $templateMgr->assign('fieldOptions', Array(
00572 USER_FIELD_FIRSTNAME => 'user.firstName',
00573 USER_FIELD_LASTNAME => 'user.lastName',
00574 USER_FIELD_USERNAME => 'user.username',
00575 USER_FIELD_EMAIL => 'user.email',
00576 USER_FIELD_INTERESTS => 'user.interests'
00577 ));
00578 $templateMgr->assign('alphaList', explode(' ', Locale::translate('common.alphaList')));
00579 $templateMgr->assign('oldUserId', $oldUserId);
00580 $templateMgr->assign('rolePath', $roleDao->getRolePath($roleId));
00581 $templateMgr->assign('roleSymbolic', $roleSymbolic);
00582 $templateMgr->display('manager/people/selectMergeUser.tpl');
00583 }
00584
00589 function disableUser($args) {
00590 parent::validate();
00591 parent::setupTemplate(true);
00592
00593 $userId = isset($args[0])?$args[0]:Request::getUserVar('userId');
00594 $user = &Request::getUser();
00595 $journal = &Request::getJournal();
00596
00597 if ($userId != null && $userId != $user->getUserId()) {
00598 if (!Validation::canAdminister($journal->getJournalId(), $userId)) {
00599
00600
00601 $templateMgr = &TemplateManager::getManager();
00602 $templateMgr->assign('pageTitle', 'manager.people');
00603 $templateMgr->assign('errorMsg', 'manager.people.noAdministrativeRights');
00604 $templateMgr->assign('backLink', Request::url(null, null, 'people', 'all'));
00605 $templateMgr->assign('backLinkLabel', 'manager.people.allUsers');
00606 return $templateMgr->display('common/error.tpl');
00607 }
00608 $userDao = &DAORegistry::getDAO('UserDAO');
00609 $user = &$userDao->getUser($userId);
00610 if ($user) {
00611 $user->setDisabled(1);
00612 $user->setDisabledReason(Request::getUserVar('reason'));
00613 }
00614 $userDao->updateUser($user);
00615 }
00616
00617 Request::redirect(null, null, 'people', 'all');
00618 }
00619
00624 function enableUser($args) {
00625 parent::validate();
00626 parent::setupTemplate(true);
00627
00628 $userId = isset($args[0])?$args[0]:null;
00629 $user = &Request::getUser();
00630
00631 if ($userId != null && $userId != $user->getUserId()) {
00632 $userDao = &DAORegistry::getDAO('UserDAO');
00633 $user = &$userDao->getUser($userId, true);
00634 if ($user) {
00635 $user->setDisabled(0);
00636 }
00637 $userDao->updateUser($user);
00638 }
00639
00640 Request::redirect(null, null, 'people', 'all');
00641 }
00642
00647 function removeUser($args) {
00648 parent::validate();
00649 parent::setupTemplate(true);
00650
00651 $userId = isset($args[0])?$args[0]:null;
00652 $user = &Request::getUser();
00653 $journal = &Request::getJournal();
00654
00655 if ($userId != null && $userId != $user->getUserId()) {
00656 $roleDao = &DAORegistry::getDAO('RoleDAO');
00657 $roleDao->deleteRoleByUserId($userId, $journal->getJournalId());
00658 }
00659
00660 Request::redirect(null, null, 'people', 'all');
00661 }
00662
00666 function updateUser() {
00667 parent::validate();
00668
00669 $journal = &Request::getJournal();
00670 $userId = Request::getUserVar('userId');
00671
00672 if (!empty($userId) && !Validation::canAdminister($journal->getJournalId(), $userId)) {
00673
00674
00675 $templateMgr = &TemplateManager::getManager();
00676 $templateMgr->assign('pageTitle', 'manager.people');
00677 $templateMgr->assign('errorMsg', 'manager.people.noAdministrativeRights');
00678 $templateMgr->assign('backLink', Request::url(null, null, 'people', 'all'));
00679 $templateMgr->assign('backLinkLabel', 'manager.people.allUsers');
00680 return $templateMgr->display('common/error.tpl');
00681 }
00682
00683 import('manager.form.UserManagementForm');
00684
00685 $userForm = &new UserManagementForm($userId);
00686 $userForm->readInputData();
00687
00688 if ($userForm->validate()) {
00689 $userForm->execute();
00690
00691 if (Request::getUserVar('createAnother')) {
00692 $templateMgr = &TemplateManager::getManager();
00693 $templateMgr->assign('currentUrl', Request::url(null, null, 'people', 'all'));
00694 $templateMgr->assign('userCreated', true);
00695 $userForm = &new UserManagementForm();
00696 $userForm->initData();
00697 $userForm->display();
00698
00699 } else {
00700 if ($source = Request::getUserVar('source')) Request::redirectUrl($source);
00701 else Request::redirect(null, null, 'people', 'all');
00702 }
00703
00704 } else {
00705 parent::setupTemplate(true);
00706 $userForm->display();
00707 }
00708 }
00709
00714 function userProfile($args) {
00715 parent::validate();
00716 parent::setupTemplate(true);
00717
00718 $templateMgr = &TemplateManager::getManager();
00719 $templateMgr->assign('currentUrl', Request::url(null, null, 'people', 'all'));
00720 $templateMgr->assign('helpTopicId', 'journal.users.index');
00721
00722 $userDao = &DAORegistry::getDAO('UserDAO');
00723 $userId = isset($args[0]) ? $args[0] : 0;
00724 if (is_numeric($userId)) {
00725 $userId = (int) $userId;
00726 $user = $userDao->getUser($userId);
00727 } else {
00728 $user = $userDao->getUserByUsername($userId);
00729 }
00730
00731
00732 if ($user == null) {
00733
00734 $templateMgr->assign('pageTitle', 'manager.people');
00735 $templateMgr->assign('errorMsg', 'manager.people.invalidUser');
00736 $templateMgr->assign('backLink', Request::url(null, null, 'people', 'all'));
00737 $templateMgr->assign('backLinkLabel', 'manager.people.allUsers');
00738 $templateMgr->display('common/error.tpl');
00739
00740 } else {
00741 $site = &Request::getSite();
00742 $journal = &Request::getJournal();
00743 $roleDao = &DAORegistry::getDAO('RoleDAO');
00744 $roles = &$roleDao->getRolesByUserId($user->getUserId(), $journal->getJournalId());
00745
00746 $countryDao =& DAORegistry::getDAO('CountryDAO');
00747 $country = null;
00748 if ($user->getCountry() != '') {
00749 $country = $countryDao->getCountry($user->getCountry());
00750 }
00751 $templateMgr->assign('country', $country);
00752
00753 $templateMgr->assign_by_ref('user', $user);
00754 $templateMgr->assign_by_ref('userRoles', $roles);
00755 $templateMgr->assign('localeNames', Locale::getAllLocales());
00756 $templateMgr->display('manager/people/userProfile.tpl');
00757 }
00758 }
00759
00764 function signInAsUser($args) {
00765 parent::validate();
00766
00767 if (isset($args[0]) && !empty($args[0])) {
00768 $userId = (int)$args[0];
00769 $journal = &Request::getJournal();
00770
00771 if (!Validation::canAdminister($journal->getJournalId(), $userId)) {
00772
00773
00774 $templateMgr = &TemplateManager::getManager();
00775 $templateMgr->assign('pageTitle', 'manager.people');
00776 $templateMgr->assign('errorMsg', 'manager.people.noAdministrativeRights');
00777 $templateMgr->assign('backLink', Request::url(null, null, 'people', 'all'));
00778 $templateMgr->assign('backLinkLabel', 'manager.people.allUsers');
00779 return $templateMgr->display('common/error.tpl');
00780 }
00781
00782 $userDao = &DAORegistry::getDAO('UserDAO');
00783 $newUser = &$userDao->getUser($userId);
00784 $session = &Request::getSession();
00785
00786
00787 if (isset($newUser) && $session->getUserId() != $newUser->getUserId()) {
00788 $session->setSessionVar('signedInAs', $session->getUserId());
00789 $session->setSessionVar('userId', $userId);
00790 $session->setUserId($userId);
00791 $session->setSessionVar('username', $newUser->getUsername());
00792 Request::redirect(null, 'user');
00793 }
00794 }
00795 Request::redirect(null, Request::getRequestedPage());
00796 }
00797
00801 function signOutAsUser() {
00802 Handler::validate();
00803
00804 $session = &Request::getSession();
00805 $signedInAs = $session->getSessionVar('signedInAs');
00806
00807 if (isset($signedInAs) && !empty($signedInAs)) {
00808 $signedInAs = (int)$signedInAs;
00809
00810 $userDao = &DAORegistry::getDAO('UserDAO');
00811 $oldUser = &$userDao->getUser($signedInAs);
00812
00813 $session->unsetSessionVar('signedInAs');
00814
00815 if (isset($oldUser)) {
00816 $session->setSessionVar('userId', $signedInAs);
00817 $session->setUserId($signedInAs);
00818 $session->setSessionVar('username', $oldUser->getUsername());
00819 }
00820 }
00821
00822 Request::redirect(null, Request::getRequestedPage());
00823 }
00824 }
00825
00826 ?>