00001 <?php
00002
00016 import('classes.handler.Handler');
00017
00018 class UserHandler extends Handler {
00022 function UserHandler() {
00023 parent::Handler();
00024 }
00025
00029 function initialize(&$request, $args) {
00030 AppLocale::requireComponents(LOCALE_COMPONENT_PKP_GRID);
00031 parent::initialize($request, $args);
00032 }
00033
00037 function index($args, &$request) {
00038 $request->redirect(null, null, 'profile');
00039 }
00040
00045 function setLocale($args, &$request) {
00046 $setLocale = isset($args[0]) ? $args[0] : null;
00047
00048 $site =& $request->getSite();
00049 $press =& $request->getPress();
00050 if ($press != null) {
00051 $pressSupportedLocales = $press->getSetting('supportedLocales');
00052 if (!is_array($pressSupportedLocales)) {
00053 $pressSupportedLocales = array();
00054 }
00055 }
00056
00057 if (AppLocale::isLocaleValid($setLocale) && (!isset($pressSupportedLocales) || in_array($setLocale, $pressSupportedLocales)) && in_array($setLocale, $site->getSupportedLocales())) {
00058 $session =& $request->getSession();
00059 $session->setSessionVar('currentLocale', $setLocale);
00060 }
00061
00062 if(isset($_SERVER['HTTP_REFERER'])) {
00063 $request->redirectUrl($_SERVER['HTTP_REFERER']);
00064 }
00065
00066 $source = $request->getUserVar('source');
00067 if (isset($source) && !empty($source)) {
00068 $request->redirectUrl(
00069 $request->getProtocol() . '://' . $request->getServerHost() . $source,
00070 false
00071 );
00072 }
00073
00074 $request->redirect(null, 'index');
00075 }
00076
00082 function become($args, &$request) {
00083 parent::validate(true);
00084
00085 $press =& $request->getPress();
00086 $user =& $request->getUser();
00087
00088 switch (array_shift($args)) {
00089 case 'author':
00090 $roleId = ROLE_ID_AUTHOR;
00091 $setting = 'allowRegAuthor';
00092 $deniedKey = 'user.noRoles.submitMonographRegClosed';
00093 break;
00094 case 'reviewer':
00095 $roleId = ROLE_ID_REVIEWER;
00096 $setting = 'allowRegReviewer';
00097 $deniedKey = 'user.noRoles.regReviewerClosed';
00098 break;
00099 default:
00100 $request->redirect(null, null, 'index');
00101 }
00102
00103 if ($press->getSetting($setting)) {
00104 $userGroupDao =& DAORegistry::getDAO('UserGroupDAO');
00105 $userGroup =& $userGroupDao->getDefaultByRoleId($press->getId(), $roleId);
00106 $userGroupDao->assignUserToGroup($user->getId(), $userGroup->getId());
00107 $request->redirectUrl($request->getUserVar('source'));
00108 } else {
00109 $templateMgr =& TemplateManager::getManager();
00110 $templateMgr->assign('message', $deniedKey);
00111 return $templateMgr->display('common/message.tpl');
00112 }
00113 }
00114
00120 function authorizationDenied($args, &$request) {
00121 $this->validate(true);
00122
00123
00124 $authorizationMessage = $request->getUserVar('message');
00125 if (!preg_match('/^[a-zA-Z0-9.]+$/', $authorizationMessage)) {
00126 fatalError('Invalid locale key for auth message.');
00127 }
00128
00129 $this->setupTemplate($request);
00130 AppLocale::requireComponents(LOCALE_COMPONENT_PKP_USER);
00131 $templateMgr =& TemplateManager::getManager();
00132 $templateMgr->assign('message', $authorizationMessage);
00133 return $templateMgr->display('common/message.tpl');
00134 }
00135
00141 function validate($loginCheck = true) {
00142 parent::validate();
00143 if ($loginCheck && !Validation::isLoggedIn()) {
00144 Validation::redirectLogin();
00145 }
00146 }
00147
00148
00149
00150
00151
00157 function viewCaptcha($args, &$request) {
00158 $captchaId = (int) array_shift($args);
00159 import('lib.pkp.classes.captcha.CaptchaManager');
00160 $captchaManager = new CaptchaManager();
00161 if ($captchaManager->isEnabled()) {
00162 $captchaDao =& DAORegistry::getDAO('CaptchaDAO');
00163 $captcha =& $captchaDao->getCaptcha($captchaId);
00164 if ($captcha) {
00165 $captchaManager->generateImage($captcha);
00166 exit();
00167 }
00168 }
00169 $request->redirect(null, 'user');
00170 }
00171
00178 function viewPublicProfile($args, &$request) {
00179 $this->validate(false);
00180 $templateMgr =& TemplateManager::getManager();
00181 $userId = (int) array_shift($args);
00182
00183 $accountIsVisible = false;
00184
00185
00186
00187 $commentDao =& DAORegistry::getDAO('CommentDAO');
00188 if ($commentDao->attributedCommentsExistForUser($userId)) {
00189
00190 $accountIsVisible = true;
00191 }
00192
00193 if (!$accountIsVisible) $request->redirect(null, 'index');
00194
00195 $userDao =& DAORegistry::getDAO('UserDAO');
00196 $user =& $userDao->getById($userId);
00197
00198 $templateMgr->assign_by_ref('user', $user);
00199 $templateMgr->display('user/publicProfile.tpl');
00200 }
00201 }
00202
00203 ?>