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

pages/user/UserHandler.inc.php

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       // Get message with sanity check (for XSS or phishing)
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    // Captcha
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       // Ensure that the user's profile info should be exposed:
00186 
00187       $commentDao =& DAORegistry::getDAO('CommentDAO');
00188       if ($commentDao->attributedCommentsExistForUser($userId)) {
00189          // At least one comment is attributed to the user
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 ?>

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