/** * Save review assignment * @param $args array * @param $request PKPRequest */ function execute($args, $request) { // Assign a reviewer user group to an existing non-reviewer $userId = (int) $this->getData('userId'); $userGroupId = (int) $this->getData('userGroupId'); $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); /* @var $userGroupDao UserGroupDAO */ $userGroupDao->assignUserToGroup($userId, $userGroupId); // Set the reviewerId in the Form for the parent class to use $this->setData('reviewerId', $userId); return parent::execute($args, $request); }
/** * Save review assignment * @param $args array * @param $request PKPRequest */ function execute($args, $request) { $userDao = DAORegistry::getDAO('UserDAO'); $user = $userDao->newDataObject(); $user->setFirstName($this->getData('firstName')); $user->setMiddleName($this->getData('middleName')); $user->setLastName($this->getData('lastName')); $user->setEmail($this->getData('email')); $authDao = DAORegistry::getDAO('AuthSourceDAO'); $auth = $authDao->getDefaultPlugin(); $user->setAuthId($auth ? $auth->getAuthId() : 0); $user->setInlineHelp(1); // default new reviewers to having inline help visible $user->setUsername($this->getData('username')); $password = Validation::generatePassword(); if (isset($auth)) { $user->setPassword($password); // FIXME Check result and handle failures $auth->doCreateUser($user); $user->setAuthId($auth->authId); $user->setPassword(Validation::encryptCredentials($user->getId(), Validation::generatePassword())); // Used for PW reset hash only } else { $user->setPassword(Validation::encryptCredentials($this->getData('username'), $password)); } $user->setDateRegistered(Core::getCurrentDate()); $reviewerId = $userDao->insertObject($user); // Set the reviewerId in the Form for the parent class to use $this->setData('reviewerId', $reviewerId); // Insert the user interests import('lib.pkp.classes.user.InterestManager'); $interestManager = new InterestManager(); $interestManager->setInterestsForUser($user, $this->getData('interests')); // Assign the selected user group ID to the user $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); /* @var $userGroupDao UserGroupDAO */ $userGroupId = (int) $this->getData('userGroupId'); $userGroupDao->assignUserToGroup($reviewerId, $userGroupId); if (!$this->getData('skipEmail')) { // Send welcome email to user import('lib.pkp.classes.mail.MailTemplate'); $mail = new MailTemplate('REVIEWER_REGISTER'); if ($mail->isEnabled()) { $context = $request->getContext(); $mail->setReplyTo($context->getSetting('contactEmail'), $context->getSetting('contactName')); $mail->assignParams(array('username' => $this->getData('username'), 'password' => $password, 'userFullName' => $user->getFullName())); $mail->addRecipient($user->getEmail(), $user->getFullName()); $mail->send($request); } } return parent::execute($args, $request); }
/** * Edit a reviewer * @param $args array * @param $request PKPRequest * @return string Serialized JSON object */ function updateReviewer($args, &$request) { // Identify the review assignment being updated. $reviewAssignmentId = (int) $request->getUserVar('reviewAssignmentId'); // Form handling import('controllers.grid.users.reviewer.form.ReviewerForm'); $reviewerForm = new ReviewerForm($this->getMonograph(), $reviewAssignmentId); $reviewerForm->readInputData(); if ($reviewerForm->validate()) { $reviewAssignment =& $reviewerForm->execute($args, $request); // prepare the grid row data $row =& $this->getRowInstance(); $row->setGridId($this->getId()); $row->setId($reviewAssignment->getId()); $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $row->setData($reviewAssignment); $row->initialize($request); $json = new JSON(true, $this->_renderRowInternally($request, $row)); } else { // There was an error, redisplay the form $json = new JSON(false, $reviewerForm->fetch($request)); } return $json->getString(); }