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);
00088
00089 $user->setUsername($this->getData('username'));
00090 $password = Validation::generatePassword();
00091
00092 if (isset($auth)) {
00093 $user->setPassword($password);
00094
00095 $auth->doCreateUser($user);
00096 $user->setAuthId($auth->authId);
00097 $user->setPassword(Validation::encryptCredentials($user->getId(), Validation::generatePassword()));
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
00106 $this->setData('reviewerId', $reviewerId);
00107
00108
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
00115 $userGroupDao =& DAORegistry::getDAO('UserGroupDAO');
00116 $userGroupId = (int) $this->getData('userGroupId');
00117 $userGroupDao->assignUserToGroup($reviewerId, $userGroupId);
00118
00119 if (!$this->getData('skipEmail')) {
00120
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 ?>