00001 <?php
00002
00015
00016
00017
00018 class RegistrationHandler extends UserHandler {
00019
00023 function register() {
00024 RegistrationHandler::validate();
00025 parent::setupTemplate(true);
00026
00027 $journal = &Request::getJournal();
00028
00029 if ($journal != null) {
00030 import('user.form.RegistrationForm');
00031
00032 $regForm = &new RegistrationForm();
00033 if ($regForm->isLocaleResubmit()) {
00034 $regForm->readInputData();
00035 } else {
00036 $regForm->initData();
00037 }
00038 $regForm->display();
00039
00040 } else {
00041 $journalDao = &DAORegistry::getDAO('JournalDAO');
00042 $journals = &$journalDao->getEnabledJournals();
00043 $templateMgr = &TemplateManager::getManager();
00044 $templateMgr->assign('source', Request::getUserVar('source'));
00045 $templateMgr->assign_by_ref('journals', $journals);
00046 $templateMgr->display('user/registerSite.tpl');
00047 }
00048 }
00049
00053 function registerUser() {
00054 RegistrationHandler::validate();
00055 import('user.form.RegistrationForm');
00056
00057 $regForm = &new RegistrationForm();
00058 $regForm->readInputData();
00059
00060 if ($regForm->validate()) {
00061 $regForm->execute();
00062 if (Config::getVar('email', 'require_validation')) {
00063
00064
00065 Request::redirect(null, 'index');
00066 }
00067
00068 $reason = null;
00069
00070 if (Config::getVar('security', 'implicit_auth')) {
00071 Validation::login('', '', $reason);
00072 } else {
00073 Validation::login($regForm->getData('username'), $regForm->getData('password'), $reason);
00074 }
00075
00076 if ($reason !== null) {
00077 parent::setupTemplate(true);
00078 $templateMgr = &TemplateManager::getManager();
00079 $templateMgr->assign('pageTitle', 'user.login');
00080 $templateMgr->assign('errorMsg', $reason==''?'user.login.accountDisabled':'user.login.accountDisabledWithReason');
00081 $templateMgr->assign('errorParams', array('reason' => $reason));
00082 $templateMgr->assign('backLink', Request::url(null, null, 'login'));
00083 $templateMgr->assign('backLinkLabel', 'user.login');
00084 return $templateMgr->display('common/error.tpl');
00085 }
00086 if($source = Request::getUserVar('source'))
00087 Request::redirectUrl($source);
00088
00089 else Request::redirect(null, 'login');
00090
00091 } else {
00092 parent::setupTemplate(true);
00093 $regForm->display();
00094 }
00095 }
00096
00100 function registrationDisabled() {
00101 parent::setupTemplate(true);
00102 $templateMgr = &TemplateManager::getManager();
00103 $templateMgr->assign('pageTitle', 'user.register');
00104 $templateMgr->assign('errorMsg', 'user.register.registrationDisabled');
00105 $templateMgr->assign('backLink', Request::url(null, null, 'login'));
00106 $templateMgr->assign('backLinkLabel', 'user.login');
00107 $templateMgr->display('common/error.tpl');
00108 }
00109
00114 function activateUser($args) {
00115 $username = array_shift($args);
00116 $accessKeyCode = array_shift($args);
00117
00118 $journal = &Request::getJournal();
00119 $userDao = &DAORegistry::getDAO('UserDAO');
00120 $user =& $userDao->getUserByUsername($username);
00121 if (!$user) Request::redirect(null, 'login');
00122
00123
00124 import('security.AccessKeyManager');
00125 $accessKeyManager =& new AccessKeyManager();
00126 $accessKeyHash = AccessKeyManager::generateKeyHash($accessKeyCode);
00127 $accessKey =& $accessKeyManager->validateKey(
00128 'RegisterContext',
00129 $user->getUserId(),
00130 $accessKeyHash
00131 );
00132
00133 if ($accessKey != null && $user->getDateValidated() === null) {
00134
00135 $user->setDisabled(false);
00136 $user->setDisabledReason('');
00137 $user->setDateValidated(Core::getCurrentDate());
00138 $userDao->updateUser($user);
00139
00140 $templateMgr =& TemplateManager::getManager();
00141 $templateMgr->assign('message', 'user.login.activated');
00142 return $templateMgr->display('common/message.tpl');
00143 }
00144 Request::redirect(null, 'login');
00145 }
00146
00151 function validate() {
00152 parent::validate(false);
00153 $journal = Request::getJournal();
00154 if ($journal != null) {
00155 $journalSettingsDao = &DAORegistry::getDAO('JournalSettingsDAO');
00156 if ($journalSettingsDao->getSetting($journal->getJournalId(), 'disableUserReg')) {
00157
00158 RegistrationHandler::registrationDisabled();
00159 exit;
00160 }
00161 }
00162 }
00163
00164 }
00165
00166 ?>