• Main Page
  • Modules
  • Classes
  • Files
  • File List

classes/submission/reviewer/form/ReviewerReviewStep3Form.inc.php

00001 <?php
00002 
00016 import('classes.submission.reviewer.form.ReviewerReviewForm');
00017 
00018 class ReviewerReviewStep3Form extends ReviewerReviewForm {
00024    function ReviewerReviewStep3Form($request, $reviewerSubmission, $reviewAssignment) {
00025       parent::ReviewerReviewForm($request, $reviewerSubmission, $reviewAssignment, 3);
00026 
00027       // Validation checks for this form
00028       // FIXME #5123: Include when review form infrastructure is in place
00029       //$reviewFormElementDao =& DAORegistry::getDAO('ReviewFormElementDAO');
00030       //$requiredReviewFormElementIds = $reviewFormElementDao->getRequiredReviewFormElementIds($this->reviewAssignment->getReviewFormId());
00031       //$this->addCheck(new FormValidatorCustom($this, 'reviewFormResponses', 'required', 'reviewer.monograph.reviewFormResponse.form.responseRequired', create_function('$reviewFormResponses, $requiredReviewFormElementIds', 'foreach ($requiredReviewFormElementIds as $requiredReviewFormElementId) { if (!isset($reviewFormResponses[$requiredReviewFormElementId]) || $reviewFormResponses[$requiredReviewFormElementId] == \'\') return false; } return true;'), array($requiredReviewFormElementIds)));
00032 
00033       $this->addCheck(new FormValidatorPost($this));
00034    }
00035 
00036 
00037    function initData() {
00038       $templateMgr =& TemplateManager::getManager();
00039       $reviewAssignment =& $this->getReviewAssignment();
00040       // Retrieve reviewer comment.
00041       $monographCommentDao =& DAORegistry::getDAO('MonographCommentDAO');
00042       $monographComments =& $monographCommentDao->getReviewerCommentsByReviewerId($reviewAssignment->getReviewerId(), $reviewAssignment->getSubmissionId(), $reviewAssignment->getId());
00043       $templateMgr->assign_by_ref('reviewerComment', $monographComments->next());
00044    }
00045 
00046    //
00047    // Implement protected template methods from Form
00048    //
00052    function readInputData() {
00053       // FIXME #5123: Include when review form infrastructure is in place
00054       $this->readUserVars(
00055          array(/*'reviewFormResponses', */ 'comments')
00056       );
00057    }
00058 
00062    function fetch(&$request) {
00063       $templateMgr =& TemplateManager::getManager();
00064 
00065       $reviewAssignment =& $this->getReviewAssignment();
00066       $reviewRoundId = $reviewAssignment->getReviewRoundId();
00067 
00068       // Assign the objects and data to the template.
00069       $press = $this->request->getPress();
00070       $templateMgr->assign_by_ref('press', $press);
00071       $templateMgr->assign_by_ref('reviewAssignment', $reviewAssignment);
00072       $templateMgr->assign('reviewRoundId', $reviewRoundId);
00073 
00074       /*  FIXME #5123: Include when review form infrastructure is in place
00075       if($reviewAssignment->getReviewFormId()) {
00076 
00077          // Get the review form components
00078          $reviewFormElementDao =& DAORegistry::getDAO('ReviewFormElementDAO');
00079          $reviewFormElements =& $reviewFormElementDao->getReviewFormElements($reviewAssignment->getReviewFormId());
00080          $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO');
00081          $reviewFormResponses =& $reviewFormResponseDao->getReviewReviewFormResponseValues($reviewAssignment->getReviewId());
00082          $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00083          $reviewformid = $reviewAssignment->getReviewFormId();
00084          $reviewForm =& $reviewFormDao->getReviewForm($reviewAssignment->getReviewFormId(), ASSOC_TYPE_PRESS, $press->getId());
00085 
00086          $templateMgr->assign_by_ref('reviewForm', $reviewForm);
00087          $templateMgr->assign('reviewFormElements', $reviewFormElements);
00088          $templateMgr->assign('reviewFormResponses', $reviewFormResponses);
00089          $templateMgr->assign('isLocked', isset($reviewAssignment) && $reviewAssignment->getDateCompleted() != null);
00090       }*/
00091 
00092       //
00093       // Assign the link actions
00094       //
00095       if ($press->getLocalizedSetting('reviewGuidelines')) {
00096          import('controllers.confirmationModal.linkAction.ViewReviewGuidelinesLinkAction');
00097          $viewReviewGuidelinesAction = new ViewReviewGuidelinesLinkAction($request);
00098          $templateMgr->assign('viewGuidelinesAction', $viewReviewGuidelinesAction);
00099       }
00100       return parent::fetch($request);
00101    }
00102 
00107    function execute(&$request) {
00108       $reviewAssignment =& $this->getReviewAssignment();
00109       if($reviewAssignment->getReviewFormId()) {
00110          $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO');
00111          /* FIXME #5123: Include when review form infrastructure is in place
00112          $reviewFormResponses = $this->getData('reviewFormResponses');
00113          if (is_array($reviewFormResponses)) foreach ($reviewFormResponses as $reviewFormElementId => $reviewFormResponseValue) {
00114             $reviewFormResponse =& $reviewFormResponseDao->getReviewFormResponse($reviewAssignment->getReviewId(), $reviewFormElementId);
00115             if (!isset($reviewFormResponse)) {
00116                $reviewFormResponse = new ReviewFormResponse();
00117             }
00118             $reviewFormElementDao =& DAORegistry::getDAO('ReviewFormElementDAO');
00119             $reviewFormElement = $reviewFormElementDao->getReviewFormElement($reviewFormElementId);
00120             $elementType = $reviewFormElement->getElementType();
00121             switch ($elementType) {
00122                case REVIEW_FORM_ELEMENT_TYPE_SMALL_TEXT_FIELD:
00123                case REVIEW_FORM_ELEMENT_TYPE_TEXT_FIELD:
00124                case REVIEW_FORM_ELEMENT_TYPE_TEXTAREA:
00125                   $reviewFormResponse->setResponseType('string');
00126                   $reviewFormResponse->setValue($reviewFormResponseValue);
00127                   break;
00128                case REVIEW_FORM_ELEMENT_TYPE_RADIO_BUTTONS:
00129                case REVIEW_FORM_ELEMENT_TYPE_DROP_DOWN_BOX:
00130                   $reviewFormResponse->setResponseType('int');
00131                   $reviewFormResponse->setValue($reviewFormResponseValue);
00132                   break;
00133                case REVIEW_FORM_ELEMENT_TYPE_CHECKBOXES:
00134                   $reviewFormResponse->setResponseType('object');
00135                   $reviewFormResponse->setValue($reviewFormResponseValue);
00136                   break;
00137             }
00138             if ($reviewFormResponse->getReviewFormElementId() != null && $reviewFormResponse->getReviewId() != null) {
00139                $reviewFormResponseDao->updateObject($reviewFormResponse);
00140             } else {
00141                $reviewFormResponse->setReviewFormElementId($reviewFormElementId);
00142                $reviewFormResponse->setReviewId($reviewAssignment->getReviewId());
00143                $reviewFormResponseDao->insertObject($reviewFormResponse);
00144             }
00145          } */
00146       } else {
00147          // Create a monograph comment with the review.
00148          $comment = new MonographComment();
00149          $comment->setCommentType(COMMENT_TYPE_PEER_REVIEW);
00150          $comment->setRoleId(ROLE_ID_REVIEWER);
00151          $comment->setAssocId($reviewAssignment->getId());
00152          $comment->setMonographId($reviewAssignment->getSubmissionId());
00153          $comment->setAuthorId($reviewAssignment->getReviewerId());
00154          $comment->setComments($this->getData('comments'));
00155          $comment->setCommentTitle('');
00156          $comment->setViewable(true);
00157          $comment->setDatePosted(Core::getCurrentDate());
00158 
00159          // Persist the monograph comment.
00160          $commentDao =& DAORegistry::getDAO('MonographCommentDAO');
00161          $commentDao->insertMonographComment($comment);
00162 
00163          $monographDao =& DAORegistry::getDAO('MonographDAO');
00164          $monograph =& $monographDao->getById($reviewAssignment->getSubmissionId());
00165 
00166          $stageAssignmentDao =& DAORegistry::getDAO('StageAssignmentDAO');
00167          $stageAssignments =& $stageAssignmentDao->getBySubmissionAndStageId($monograph->getId(), $monograph->getStageId());
00168 
00169          $notificationMgr = new NotificationManager();
00170          while ($stageAssignment =& $stageAssignments->next()) {
00171             $notificationMgr->createNotification(
00172                $request, $stageAssignment->getUserId(), NOTIFICATION_TYPE_REVIEWER_COMMENT,
00173                $monograph->getPressId(), ASSOC_TYPE_REVIEW_ASSIGNMENT, $reviewAssignment->getId()
00174             );
00175             unset($stageAssignment);
00176          }
00177       }
00178 
00179       // Set review to next step.
00180       $this->updateReviewStepAndSaveSubmission($this->getReviewerSubmission());
00181 
00182       // Mark the review assignment as completed.
00183       $reviewAssignment->setDateCompleted(Core::getCurrentDate());
00184       $reviewAssignment->stampModified();
00185 
00186       // Persist the updated review assignment.
00187       $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); /* @var $reviewAssignmentDao ReviewAssignmentDAO */
00188       $reviewAssignmentDao->updateObject($reviewAssignment);
00189 
00190       // Update the review round status.
00191       $reviewRoundDao =& DAORegistry::getDAO('ReviewRoundDAO'); /* @var $reviewRoundDao ReviewRoundDAO */
00192       $reviewRound =& $reviewRoundDao->getReviewRoundById($reviewAssignment->getReviewRoundId());
00193       $reviewAssignments = $reviewAssignmentDao->getByReviewRoundId($reviewRound->getId(), true);
00194       $reviewRoundDao->updateStatus($reviewRound, $reviewAssignments);
00195 
00196       // Update "all reviews in" notification.
00197       $notificationMgr->updateAllReviewsInNotification($request, $reviewRound);
00198 
00199       // Remove the task
00200       $notificationDao =& DAORegistry::getDAO('NotificationDAO');
00201       $notificationDao->deleteByAssoc(
00202          ASSOC_TYPE_REVIEW_ASSIGNMENT,
00203          $reviewAssignment->getId(),
00204          $reviewAssignment->getReviewerId(),
00205          NOTIFICATION_TYPE_REVIEW_ASSIGNMENT
00206       );
00207    }
00208 }
00209 
00210 ?>

Generated on Mon Sep 17 2012 13:58:55 for Open Monograph Press by  doxygen 1.7.1