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

controllers/grid/users/reviewer/form/CreateReviewerForm.inc.php

00001 <?php
00002 
00015 import('controllers.grid.users.reviewer.form.ReviewerForm');
00016 
00017 class CreateReviewerForm extends ReviewerForm {
00023    function CreateReviewerForm(&$monograph, &$reviewRound) {
00024       parent::ReviewerForm($monograph, $reviewRound);
00025       $this->setTemplate('controllers/grid/users/reviewer/form/createReviewerForm.tpl');
00026 
00027       $this->addCheck(new FormValidator($this, 'firstname', 'required', 'user.profile.form.firstNameRequired'));
00028       $this->addCheck(new FormValidator($this, 'lastname', 'required', 'user.profile.form.lastNameRequired'));
00029       $this->addCheck(new FormValidatorCustom($this, 'username', 'required', 'user.register.form.usernameExists', array(DAORegistry::getDAO('UserDAO'), 'userExistsByUsername'), array(), true));
00030       $this->addCheck(new FormValidatorAlphaNum($this, 'username', 'required', 'user.register.form.usernameAlphaNumeric'));
00031       $this->addCheck(new FormValidatorEmail($this, 'email', 'required', 'user.profile.form.emailRequired'));
00032       $this->addCheck(new FormValidatorCustom($this, 'email', 'required', 'user.register.form.emailExists', array(DAORegistry::getDAO('UserDAO'), 'userExistsByEmail'), array(), true));
00033       $this->addCheck(new FormValidator($this, 'userGroupId', 'required', 'user.profile.form.usergroupRequired'));
00034    }
00035 
00036 
00041    function fetch(&$request) {
00042 
00043       $searchByNameAction = $this->getSearchByNameAction($request);
00044 
00045       $this->setReviewerFormAction($searchByNameAction);
00046       return parent::fetch($request);
00047    }
00048 
00053    function readInputData() {
00054       parent::readInputData();
00055 
00056       $this->readUserVars(array(
00057          'firstname',
00058          'middlename',
00059          'lastname',
00060          'affiliation',
00061          'keywords',
00062          'interestsTextOnly',
00063          'username',
00064          'email',
00065          'skipEmail',
00066          'userGroupId'
00067       ));
00068    }
00069 
00075    function execute($args, &$request) {
00076       $userDao =& DAORegistry::getDAO('UserDAO');
00077       $user = new User();
00078 
00079       $user->setFirstName($this->getData('firstname'));
00080       $user->setMiddleName($this->getData('middlename'));
00081       $user->setLastName($this->getData('lastname'));
00082       $user->setEmail($this->getData('email'));
00083 
00084       $authDao =& DAORegistry::getDAO('AuthSourceDAO');
00085       $auth =& $authDao->getDefaultPlugin();
00086       $user->setAuthId($auth?$auth->getAuthId():0);
00087       $user->setInlineHelp(1); // default new reviewers to having inline help visible
00088 
00089       $user->setUsername($this->getData('username'));
00090       $password = Validation::generatePassword();
00091 
00092       if (isset($auth)) {
00093          $user->setPassword($password);
00094          // FIXME Check result and handle failures
00095          $auth->doCreateUser($user);
00096          $user->setAuthId($auth->authId);
00097          $user->setPassword(Validation::encryptCredentials($user->getId(), Validation::generatePassword())); // Used for PW reset hash only
00098       } else {
00099          $user->setPassword(Validation::encryptCredentials($this->getData('username'), $password));
00100       }
00101 
00102       $user->setDateRegistered(Core::getCurrentDate());
00103       $reviewerId = $userDao->insertUser($user);
00104 
00105       // Set the reviewerId in the Form for the parent class to use
00106       $this->setData('reviewerId', $reviewerId);
00107 
00108       // Insert the user interests
00109       $interests = $this->getData('interestsKeywords') ? $this->getData('interestsKeywords') : $this->getData('interestsTextOnly');
00110       import('lib.pkp.classes.user.InterestManager');
00111       $interestManager = new InterestManager();
00112       $interestManager->setInterestsForUser($user, $interests);
00113 
00114       // Assign the selected user group ID to the user
00115       $userGroupDao =& DAORegistry::getDAO('UserGroupDAO'); /* @var $userGroupDao UserGroupDAO */
00116       $userGroupId = (int) $this->getData('userGroupId');
00117       $userGroupDao->assignUserToGroup($reviewerId, $userGroupId);
00118 
00119       if (!$this->getData('skipEmail')) {
00120          // Send welcome email to user
00121          import('classes.mail.MailTemplate');
00122          $mail = new MailTemplate('REVIEWER_REGISTER');
00123          if ($mail->isEnabled()) {
00124             $press =& $request->getPress();
00125             $mail->setFrom($press->getSetting('contactEmail'), $press->getSetting('contactName'));
00126             $mail->assignParams(array('username' => $this->getData('username'), 'password' => $password, 'userFullName' => $user->getFullName()));
00127             $mail->addRecipient($user->getEmail(), $user->getFullName());
00128             $mail->send($request);
00129          }
00130       }
00131 
00132       return parent::execute($args, $request);
00133    }
00134 }
00135 
00136 ?>

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