/** * Assigns a reviewer to a submission. * @param $seriesEditorSubmission object * @param $reviewerId int */ function addReviewer($seriesEditorSubmission, $reviewerId, $reviewType, $round = null, $reviewDueDate = null, $responseDueDate = null) { $seriesEditorSubmissionDao =& DAORegistry::getDAO('SeriesEditorSubmissionDAO'); $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $userDao =& DAORegistry::getDAO('UserDAO'); $user =& Request::getUser(); $reviewer =& $userDao->getUser($reviewerId); // Check to see if the requested reviewer is not already // assigned to review this monograph. if ($round == null) { $round = $seriesEditorSubmission->getCurrentRound(); } $assigned = $seriesEditorSubmissionDao->reviewerExists($seriesEditorSubmission->getId(), $reviewerId, $reviewType, $round); // Only add the reviewer if he has not already // been assigned to review this monograph. if (!$assigned && isset($reviewer) && !HookRegistry::call('SeriesEditorAction::addReviewer', array(&$seriesEditorSubmission, $reviewerId))) { $reviewAssignment = new ReviewAssignment(); $reviewAssignment->setSubmissionId($seriesEditorSubmission->getId()); $reviewAssignment->setReviewerId($reviewerId); $reviewAssignment->setDateAssigned(Core::getCurrentDate()); $reviewAssignment->setReviewType($reviewType); $reviewAssignment->setRound($round); // Assign review form automatically if needed $pressId = $seriesEditorSubmission->getPressId(); $seriesDao =& DAORegistry::getDAO('SeriesDAO'); $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO'); $submissionId = $seriesEditorSubmission->getId(); $series =& $seriesDao->getById($submissionId, $pressId); $seriesEditorSubmission->addReviewAssignment($reviewAssignment, $reviewType, $round); $seriesEditorSubmissionDao->updateSeriesEditorSubmission($seriesEditorSubmission); $reviewAssignment = $reviewAssignmentDao->getReviewAssignment($seriesEditorSubmission->getId(), $reviewerId, $round, $reviewType); $press =& Request::getPress(); $settingsDao =& DAORegistry::getDAO('PressSettingsDAO'); $settings =& $settingsDao->getPressSettings($press->getId()); if (isset($reviewDueDate)) { SeriesEditorAction::setDueDate($seriesEditorSubmission->getId(), $reviewAssignment->getId(), $reviewDueDate); } if (isset($responseDueDate)) { SeriesEditorAction::setResponseDueDate($seriesEditorSubmission->getId(), $reviewAssignment->getId(), $responseDueDate); } // Add log import('classes.monograph.log.MonographLog'); import('classes.monograph.log.MonographEventLogEntry'); MonographLog::logEvent($seriesEditorSubmission->getId(), MONOGRAPH_LOG_REVIEW_ASSIGN, MONOGRAPH_LOG_TYPE_REVIEW, $reviewAssignment->getId(), 'log.review.reviewerAssigned', array('reviewerName' => $reviewer->getFullName(), 'monographId' => $seriesEditorSubmission->getId(), 'reviewType' => $reviewType, 'round' => $round)); } }