/**
  * 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);
 }
 /**
  * Fetch the form
  * @see Form::fetch
  */
 function fetch($request)
 {
     // Pass along the request vars
     $actionArgs = $request->getUserVars();
     $reviewRound = $this->getReviewRound();
     $actionArgs['reviewRoundId'] = $reviewRound->getId();
     $actionArgs['selectionType'] = REVIEWER_SELECT_ADVANCED_SEARCH;
     // but change the selectionType for each action
     $advancedSearchAction = new LinkAction('advancedSearch', new AjaxAction($request->url(null, null, 'reloadReviewerForm', null, $actionArgs)), __('manager.reviewerSearch.advancedSearch.short'), 'user_search');
     $this->setReviewerFormAction($advancedSearchAction);
     // Only add actions to forms where user can operate.
     if (array_intersect($this->getUserRoles(), array(ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR))) {
         $actionArgs['selectionType'] = REVIEWER_SELECT_CREATE;
         // but change the selectionType for each action
         $advancedSearchAction = new LinkAction('selectCreate', new AjaxAction($request->url(null, null, 'reloadReviewerForm', null, $actionArgs)), __('editor.review.createReviewer'), 'add_user');
         $this->setReviewerFormAction($advancedSearchAction);
         $actionArgs['selectionType'] = REVIEWER_SELECT_ENROLL_EXISTING;
         // but change the selectionType for each action
         $advancedSearchAction = new LinkAction('enrolExisting', new AjaxAction($request->url(null, null, 'reloadReviewerForm', null, $actionArgs)), __('editor.review.enrollReviewer.short'), 'enroll_user');
         $this->setReviewerFormAction($advancedSearchAction);
     }
     return parent::fetch($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);
 }
예제 #4
0
 /**
  * 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();
 }
 /**
  * Fetch the form.
  * @see Form::fetch()
  * @param $request PKPRequest
  */
 function fetch($request)
 {
     $searchByNameAction = $this->getSearchByNameAction($request);
     $this->setReviewerFormAction($searchByNameAction);
     return parent::fetch($request);
 }