16 import(
'lib.pkp.classes.submission.reviewer.form.ReviewerReviewForm');
25 parent::__construct(
$request, $reviewerSubmission, $reviewAssignment, 3);
29 $requiredReviewFormElementIds = $reviewFormElementDao->getRequiredReviewFormElementIds($reviewAssignment->getReviewFormId());
30 $this->
addCheck(
new FormValidatorCustom($this,
'reviewFormResponses',
'required',
'reviewer.submission.reviewFormResponse.form.responseRequired',
function($reviewFormResponses) use ($requiredReviewFormElementIds) {
31 foreach ($requiredReviewFormElementIds as $requiredReviewFormElementId) {
32 if (!isset($reviewFormResponses[$requiredReviewFormElementId]) || $reviewFormResponses[$requiredReviewFormElementId] ==
'')
return false;
51 $submissionComments = $submissionCommentDao->getReviewerCommentsByReviewerId($reviewAssignment->getSubmissionId(), $reviewAssignment->getReviewerId(), $reviewAssignment->getId(),
true);
52 $submissionComment = $submissionComments->next();
53 $this->
setData(
'comments', $submissionComment?$submissionComment->getComments():
'');
55 $submissionCommentsPrivate = $submissionCommentDao->getReviewerCommentsByReviewerId($reviewAssignment->getSubmissionId(), $reviewAssignment->getReviewerId(), $reviewAssignment->getId(),
false);
56 $submissionCommentPrivate = $submissionCommentsPrivate->next();
57 $this->
setData(
'commentsPrivate', $submissionCommentPrivate?$submissionCommentPrivate->getComments():
'');
68 array(
'reviewFormResponses',
'comments',
'recommendation',
'commentsPrivate')
80 $context = $this->request->getContext();
81 $templateMgr->assign(array(
82 'reviewAssignment' => $reviewAssignment,
83 'reviewRoundId' => $reviewAssignment->getReviewRoundId(),
87 if ($reviewAssignment->getReviewFormId()) {
93 $templateMgr->assign(array(
95 'reviewFormElements' => $reviewFormElementDao->getByReviewFormId($reviewAssignment->getReviewFormId()),
96 'reviewFormResponses' => $reviewFormResponseDao->getReviewReviewFormResponseValues($reviewAssignment->getId()),
97 'disabled' => isset($reviewAssignment) && $reviewAssignment->getDateCompleted() !=
null,
104 import(
'lib.pkp.controllers.confirmationModal.linkAction.ViewReviewGuidelinesLinkAction');
106 if ($viewReviewGuidelinesAction->getGuidelines()) {
107 $templateMgr->assign(
'viewGuidelinesAction', $viewReviewGuidelinesAction);
110 return parent::fetch(
$request, $template, $display);
125 $submission = $submissionDao->getById($reviewAssignment->getSubmissionId());
128 $stageAssignments = $stageAssignmentDao->getBySubmissionAndStageId($submission->getId(), $submission->getStageId());
130 $receivedList = array();
132 while ($stageAssignment = $stageAssignments->next()) {
133 $userId = $stageAssignment->getUserId();
134 $userGroup = $userGroupDao->getById($stageAssignment->getUserGroupId(), $submission->getContextId());
137 if (!in_array($userGroup->getRoleId(), array(ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR)) || in_array($userId, $receivedList))
continue;
139 $notificationMgr->createNotification(
140 Application::get()->getRequest(), $userId, NOTIFICATION_TYPE_REVIEWER_COMMENT,
141 $submission->getContextId(), ASSOC_TYPE_REVIEW_ASSIGNMENT, $reviewAssignment->getId()
144 $receivedList[] = $userId;
152 $reviewAssignment->stampModified();
155 $reviewAssignment->setRecommendation((
int) $this->
getData(
'recommendation'));
159 $reviewAssignmentDao->updateObject($reviewAssignment);
163 $notificationDao->deleteByAssoc(
164 ASSOC_TYPE_REVIEW_ASSIGNMENT,
165 $reviewAssignment->getId(),
166 $reviewAssignment->getReviewerId(),
167 NOTIFICATION_TYPE_REVIEW_ASSIGNMENT
171 import(
'lib.pkp.classes.log.SubmissionLog');
172 import(
'classes.log.SubmissionEventLogEntry');
175 $reviewer = $userDao->getById($reviewAssignment->getReviewerId());
180 SUBMISSION_LOG_REVIEW_READY,
181 'log.review.reviewReady',
183 'reviewAssignmentId' => $reviewAssignment->getId(),
184 'reviewerName' => $reviewer->getFullName(),
185 'submissionId' => $reviewAssignment->getSubmissionId(),
186 'round' => $reviewAssignment->getRound()
190 parent::execute(...$functionParams);
204 $reviewAssignment->stampModified();
207 $reviewAssignment->setRecommendation((
int) $this->
getData(
'recommendation'));
211 $reviewAssignmentDao->updateObject($reviewAssignment);
221 if ($reviewAssignment->getReviewFormId()) {
223 $reviewFormResponses = $this->
getData(
'reviewFormResponses');
224 if (is_array($reviewFormResponses))
foreach ($reviewFormResponses as $reviewFormElementId => $reviewFormResponseValue) {
225 $reviewFormResponse = $reviewFormResponseDao->getReviewFormResponse($reviewAssignment->getId(), $reviewFormElementId);
226 if (!isset($reviewFormResponse)) {
230 $reviewFormElement = $reviewFormElementDao->getById($reviewFormElementId);
231 $elementType = $reviewFormElement->getElementType();
232 switch ($elementType) {
233 case REVIEW_FORM_ELEMENT_TYPE_SMALL_TEXT_FIELD:
234 case REVIEW_FORM_ELEMENT_TYPE_TEXT_FIELD:
235 case REVIEW_FORM_ELEMENT_TYPE_TEXTAREA:
236 $reviewFormResponse->setResponseType(
'string');
237 $reviewFormResponse->setValue($reviewFormResponseValue);
239 case REVIEW_FORM_ELEMENT_TYPE_RADIO_BUTTONS:
240 case REVIEW_FORM_ELEMENT_TYPE_DROP_DOWN_BOX:
241 $reviewFormResponse->setResponseType(
'int');
242 $reviewFormResponse->setValue($reviewFormResponseValue);
244 case REVIEW_FORM_ELEMENT_TYPE_CHECKBOXES:
245 $reviewFormResponse->setResponseType(
'object');
246 $reviewFormResponse->setValue($reviewFormResponseValue);
249 if ($reviewFormResponse->getReviewFormElementId() !=
null && $reviewFormResponse->getReviewId() !=
null) {
250 $reviewFormResponseDao->updateObject($reviewFormResponse);
252 $reviewFormResponse->setReviewFormElementId($reviewFormElementId);
253 $reviewFormResponse->setReviewId($reviewAssignment->getId());
254 $reviewFormResponseDao->insertObject($reviewFormResponse);
259 if (strlen($comments = $this->
getData(
'comments'))>0) {
262 $submissionComments = $submissionCommentDao->getReviewerCommentsByReviewerId($reviewAssignment->getSubmissionId(), $reviewAssignment->getReviewerId(), $reviewAssignment->getId(),
true);
263 $comment = $submissionComments->next();
265 if (!isset($comment)) {
266 $comment = $submissionCommentDao->newDataObject();
269 $comment->setCommentType(COMMENT_TYPE_PEER_REVIEW);
270 $comment->setRoleId(ROLE_ID_REVIEWER);
271 $comment->setAssocId($reviewAssignment->getId());
272 $comment->setSubmissionId($reviewAssignment->getSubmissionId());
273 $comment->setAuthorId($reviewAssignment->getReviewerId());
274 $comment->setComments($comments);
275 $comment->setCommentTitle(
'');
276 $comment->setViewable(
true);
280 if ($comment->getId() !=
null) {
281 $submissionCommentDao->updateObject($comment);
283 $submissionCommentDao->insertObject($comment);
289 if (strlen($commentsPrivate = $this->
getData(
'commentsPrivate'))>0) {
292 $submissionCommentsPrivate = $submissionCommentDao->getReviewerCommentsByReviewerId($reviewAssignment->getSubmissionId(), $reviewAssignment->getReviewerId(), $reviewAssignment->getId(),
false);
293 $comment = $submissionCommentsPrivate->next();
295 if (!isset($comment)) {
296 $comment = $submissionCommentDao->newDataObject();
299 $comment->setCommentType(COMMENT_TYPE_PEER_REVIEW);
300 $comment->setRoleId(ROLE_ID_REVIEWER);
301 $comment->setAssocId($reviewAssignment->getId());
302 $comment->setSubmissionId($reviewAssignment->getSubmissionId());
303 $comment->setAuthorId($reviewAssignment->getReviewerId());
304 $comment->setComments($commentsPrivate);
305 $comment->setCommentTitle(
'');
306 $comment->setViewable(
false);
310 if ($comment->getId() !=
null) {
311 $submissionCommentDao->updateObject($comment);
313 $submissionCommentDao->insertObject($comment);