/**
  * Validate user registration information and register new user.
  * @param $args array
  * @param $request PKPRequest
  */
 function registerUser($args, $request)
 {
     $this->validate($request);
     $this->setupTemplate($request);
     import('lib.pkp.classes.user.form.RegistrationForm');
     $regForm = new RegistrationForm($request->getSite());
     $regForm->readInputData();
     if (!$regForm->validate()) {
         return $regForm->fetchJson($request);
     }
     $regForm->execute($request);
     if (Config::getVar('email', 'require_validation')) {
         // Send them home; they need to deal with the
         // registration email.
         return $request->redirectUrlJson($request->url(null, 'index'));
     }
     $reason = null;
     if (Config::getVar('security', 'implicit_auth')) {
         Validation::login('', '', $reason);
     } else {
         Validation::login($regForm->getData('username'), $regForm->getData('password'), $reason);
     }
     if ($reason !== null) {
         $this->setupTemplate($request);
         $templateMgr = TemplateManager::getManager($request);
         $templateMgr->assign('pageTitle', 'user.login');
         $templateMgr->assign('errorMsg', $reason == '' ? 'user.login.accountDisabled' : 'user.login.accountDisabledWithReason');
         $templateMgr->assign('errorParams', array('reason' => $reason));
         $templateMgr->assign('backLink', $request->url(null, 'login'));
         $templateMgr->assign('backLinkLabel', 'user.login');
         return $templateMgr->fetchJson('frontend/pages/error.tpl');
     }
     if ($source = $request->getUserVar('source')) {
         return $request->redirectUrlJson($source);
     }
     return $request->redirectUrlJson($request->getRouter()->getHomeUrl($request));
 }