00001 <?php
00002
00015
00016
00017
00018 class UserHandler extends Handler {
00019
00023 function index() {
00024 UserHandler::validate();
00025
00026 $sessionManager = &SessionManager::getManager();
00027 $session = &$sessionManager->getUserSession();
00028
00029 $roleDao = &DAORegistry::getDAO('RoleDAO');
00030
00031 UserHandler::setupTemplate();
00032 $templateMgr = &TemplateManager::getManager();
00033
00034 $journal = &Request::getJournal();
00035 $templateMgr->assign('helpTopicId', 'user.userHome');
00036
00037 if ($journal == null) {
00038
00039 unset($journal);
00040
00041
00042 $journalDao = &DAORegistry::getDAO('JournalDAO');
00043 $journals = &$journalDao->getJournals();
00044
00045 $allJournals = array();
00046 $journalsToDisplay = array();
00047 $rolesToDisplay = array();
00048
00049
00050 while ($journal =& $journals->next()) {
00051 $roles =& $roleDao->getRolesByUserId($session->getUserId(), $journal->getJournalId());
00052 if (!empty($roles)) {
00053 $journalsToDisplay[] = $journal;
00054 $rolesToDisplay[$journal->getJournalId()] = &$roles;
00055 }
00056 if ($journal->getEnabled()) $allJournals[] =& $journal;
00057 unset($journal);
00058 }
00059
00060 $templateMgr->assign_by_ref('allJournals', $allJournals);
00061 $templateMgr->assign('showAllJournals', 1);
00062 $templateMgr->assign_by_ref('userJournals', $journalsToDisplay);
00063
00064 } else {
00065
00066 $roles =& $roleDao->getRolesByUserId($session->getUserId(), $journal->getJournalId());
00067
00068 $journal =& Request::getJournal();
00069 $user =& Request::getUser();
00070
00071 import('payment.ojs.OJSPaymentManager');
00072 $paymentManager =& OJSPaymentManager::getManager();
00073 $membershipEnabled = $paymentManager->membershipEnabled();
00074 $templateMgr->assign('membershipEnabled', $membershipEnabled);
00075 $subscriptionEnabled = $paymentManager->acceptSubscriptionPayments();
00076 $templateMgr->assign('subscriptionEnabled', $subscriptionEnabled);
00077
00078 if ( $subscriptionEnabled ) {
00079 import('subscription.SubscriptionDAO');
00080 $subscriptionDAO =& DAORegistry::getDAO('SubscriptionDAO');
00081 $subscriptionId = $subscriptionDAO->getSubscriptionIdByUser($user->getUserId(), $journal->getJournalId());
00082 $templateMgr->assign('userHasSubscription', $subscriptionId);
00083 if ( $subscriptionId !== false ) {
00084 $subscription =& $subscriptionDAO->getSubscription($subscriptionId);
00085 $templateMgr->assign('subscriptionEndDate', $subscription->getDateEnd());
00086 }
00087 }
00088
00089 if ( $membershipEnabled ) {
00090 $templateMgr->assign('dateEndMembership', $user->getDateEndMembership());
00091 }
00092
00093 $templateMgr->assign('allowRegAuthor', $journal->getSetting('allowRegAuthor'));
00094 $templateMgr->assign('allowRegReviewer', $journal->getSetting('allowRegReviewer'));
00095
00096 $rolesToDisplay[$journal->getJournalId()] = &$roles;
00097 $templateMgr->assign_by_ref('userJournal', $journal);
00098 }
00099
00100 $templateMgr->assign('isSiteAdmin', $roleDao->getRole(0, $session->getUserId(), ROLE_ID_SITE_ADMIN));
00101 $templateMgr->assign('userRoles', $rolesToDisplay);
00102 $templateMgr->display('user/index.tpl');
00103 }
00104
00109 function setLocale($args) {
00110 $setLocale = isset($args[0]) ? $args[0] : null;
00111
00112 $site = &Request::getSite();
00113 $journal = &Request::getJournal();
00114 if ($journal != null) {
00115 $journalSupportedLocales = $journal->getSetting('supportedLocales');
00116 if (!is_array($journalSupportedLocales)) {
00117 $journalSupportedLocales = array();
00118 }
00119 }
00120
00121 if (Locale::isLocaleValid($setLocale) && (!isset($journalSupportedLocales) || in_array($setLocale, $journalSupportedLocales)) && in_array($setLocale, $site->getSupportedLocales())) {
00122 $session = &Request::getSession();
00123 $session->setSessionVar('currentLocale', $setLocale);
00124 }
00125
00126 if(isset($_SERVER['HTTP_REFERER'])) {
00127 Request::redirectUrl($_SERVER['HTTP_REFERER']);
00128 }
00129
00130 $source = Request::getUserVar('source');
00131 if (isset($source) && !empty($source)) {
00132 Request::redirectUrl(Request::getProtocol() . '://' . Request::getServerHost() . $source, false);
00133 }
00134
00135 Request::redirect(null, 'index');
00136 }
00137
00141 function become($args) {
00142 parent::validate(true, true);
00143 $journal =& Request::getJournal();
00144 $user =& Request::getUser();
00145 if (!$user) Request::redirect(null, null, 'index');
00146
00147 switch (array_shift($args)) {
00148 case 'author':
00149 $roleId = ROLE_ID_AUTHOR;
00150 $setting = 'allowRegAuthor';
00151 $deniedKey = 'user.noRoles.submitArticleRegClosed';
00152 break;
00153 case 'reviewer':
00154 $roleId = ROLE_ID_REVIEWER;
00155 $setting = 'allowRegReviewer';
00156 $deniedKey = 'user.noRoles.regReviewerClosed';
00157 break;
00158 default:
00159 Request::redirect(null, null, 'index');
00160 }
00161
00162 if ($journal->getSetting($setting)) {
00163 $role =& new Role();
00164 $role->setJournalId($journal->getJournalId());
00165 $role->setRoleId($roleId);
00166 $role->setUserId($user->getUserId());
00167
00168 $roleDao =& DAORegistry::getDAO('RoleDAO');
00169 $roleDao->insertRole($role);
00170 Request::redirectUrl(Request::getUserVar('source'));
00171 } else {
00172 $templateMgr =& TemplateManager::getManager();
00173 $templateMgr->assign('message', $deniedKey);
00174 return $templateMgr->display('common/message.tpl');
00175 }
00176 }
00177
00183 function validate($loginCheck = true) {
00184 parent::validate();
00185 if ($loginCheck && !Validation::isLoggedIn()) {
00186 Validation::redirectLogin();
00187 }
00188 }
00189
00194 function setupTemplate($subclass = false) {
00195 $templateMgr = &TemplateManager::getManager();
00196 if ($subclass) {
00197 $templateMgr->assign('pageHierarchy', array(array(Request::url(null, 'user'), 'navigation.user')));
00198 }
00199 }
00200
00201
00202
00203
00204
00205
00206 function profile() {
00207 import('pages.user.ProfileHandler');
00208 ProfileHandler::profile();
00209 }
00210
00211 function saveProfile() {
00212 import('pages.user.ProfileHandler');
00213 ProfileHandler::saveProfile();
00214 }
00215
00216 function changePassword() {
00217 import('pages.user.ProfileHandler');
00218 ProfileHandler::changePassword();
00219 }
00220
00221 function savePassword() {
00222 import('pages.user.ProfileHandler');
00223 ProfileHandler::savePassword();
00224 }
00225
00226
00227
00228
00229
00230
00231 function register() {
00232 import('pages.user.RegistrationHandler');
00233 RegistrationHandler::register();
00234 }
00235
00236 function registerUser() {
00237 import('pages.user.RegistrationHandler');
00238 RegistrationHandler::registerUser();
00239 }
00240
00241 function activateUser($args) {
00242 import('pages.user.RegistrationHandler');
00243 RegistrationHandler::activateUser($args);
00244 }
00245
00246
00247
00248
00249
00250 function email($args) {
00251 import('pages.user.EmailHandler');
00252 EmailHandler::email($args);
00253 }
00254
00255
00256
00257
00258
00259 function viewCaptcha($args) {
00260 $captchaId = (int) array_shift($args);
00261 import('captcha.CaptchaManager');
00262 $captchaManager =& new CaptchaManager();
00263 if ($captchaManager->isEnabled()) {
00264 $captchaDao =& DAORegistry::getDAO('CaptchaDAO');
00265 $captcha =& $captchaDao->getCaptcha($captchaId);
00266 if ($captcha) {
00267 $captchaManager->generateImage($captcha);
00268 exit();
00269 }
00270 }
00271 Request::redirect(null, 'user');
00272 }
00273
00278 function viewPublicProfile($args) {
00279 UserHandler::validate(false);
00280 $templateMgr =& TemplateManager::getManager();
00281 $userId = (int) array_shift($args);
00282
00283 $accountIsVisible = false;
00284
00285
00286
00287 $commentDao =& DAORegistry::getDAO('CommentDAO');
00288 if ($commentDao->attributedCommentsExistForUser($userId)) {
00289
00290 $accountIsVisible = true;
00291 }
00292
00293 if(!$accountIsVisible) Request::redirect(null, 'index');
00294
00295 $userDao =& DAORegistry::getDAO('UserDAO');
00296 $user =& $userDao->getUser($userId);
00297
00298 $templateMgr->assign_by_ref('user', $user);
00299 $templateMgr->display('user/publicProfile.tpl');
00300 }
00301
00302
00303
00304
00305
00306
00307 function payRenewSubscription($args) {
00308 UserHandler::validate();
00309 UserHandler::setupTemplate(true);
00310
00311 import('payment.ojs.OJSPaymentManager');
00312 $paymentManager =& OJSPaymentManager::getManager();
00313
00314 import('subscription.SubscriptionDAO');
00315 $subscriptionDAO =& DAORegistry::getDAO('SubscriptionDAO');
00316 $subscriptionTypeDAO =& DAORegistry::getDAO('SubscriptionTypeDAO');
00317
00318 $journal =& Request::getJournal();
00319 if ($journal) {
00320 $user =& Request::getUser();
00321 $subscriptionId = $subscriptionDAO->getSubscriptionIdByUser($user->getUserId(), $journal->getJournalId());
00322
00323 $subscriptionDAO =& DAORegistry::getDAO('SubscriptionDAO');
00324 $subscription =& $subscriptionDAO->getSubscription($subscriptionId);
00325 $subscriptionType =& $subscriptionTypeDAO->getSubscriptionType($subscription->getTypeId());
00326
00327 $queuedPayment =& $paymentManager->createQueuedPayment($journal->getJournalId(), PAYMENT_TYPE_SUBSCRIPTION, $user->getUserId(), $subscriptionId, $subscriptionType->getCost(), $subscriptionType->getCurrencyCodeAlpha());
00328 $queuedPaymentId = $paymentManager->queuePayment($queuedPayment);
00329
00330 $paymentManager->displayPaymentForm($queuedPaymentId, $queuedPayment);
00331 }
00332
00333 }
00334
00335 function payMembership($args) {
00336 UserHandler::validate();
00337 UserHandler::setupTemplate();
00338
00339 import('payment.ojs.OJSPaymentManager');
00340 $paymentManager =& OJSPaymentManager::getManager();
00341
00342 $journal =& Request::getJournal();
00343 $user =& Request::getUser();
00344
00345 $queuedPayment =& $paymentManager->createQueuedPayment($journal->getJournalId(), PAYMENT_TYPE_MEMBERSHIP, $user->getUserId(), null, $journal->getSetting('membershipFee'));
00346 $queuedPaymentId = $paymentManager->queuePayment($queuedPayment);
00347
00348 $paymentManager->displayPaymentForm($queuedPaymentId, $queuedPayment);
00349
00350 }
00351 }
00352
00353 ?>