Open Journal Systems  3.3.0
AuthorReviewerGridHandler.inc.php
1 <?php
2 
16 // import grid base classes
17 import('lib.pkp.classes.controllers.grid.users.reviewer.PKPReviewerGridHandler');
18 
19 // import reviewer grid specific classes
20 import('lib.pkp.controllers.grid.users.reviewer.AuthorReviewerGridCellProvider');
21 import('lib.pkp.controllers.grid.users.reviewer.AuthorReviewerGridRow');
22 
23 import('lib.pkp.classes.submission.reviewAssignment.ReviewAssignment');
24 
26 
30  function __construct() {
31  parent::__construct();
32 
33  $this->addRoleAssignment(
34  array(ROLE_ID_AUTHOR),
35  array('fetchGrid', 'fetchRow', 'readReview', 'reviewRead')
36  );
37 
38  }
39 
40  //
41  // Overridden methods from PKPHandler
42  //
47  protected function getRowInstance() {
48  return new AuthorReviewerGridRow();
49  }
50 
54  function initialize($request, $args = null) {
55  parent::initialize($request, $args);
56 
57  // Reset actions
58  unset($this->_actions[GRID_ACTION_POSITION_ABOVE]);
59 
60  // Columns
61  $cellProvider = new AuthorReviewerGridCellProvider();
62  $this->addColumn(
63  new GridColumn(
64  'name',
65  'user.name',
66  null,
67  null,
68  $cellProvider
69  )
70  );
71 
72  // Add a column for the status of the review.
73  $this->addColumn(
74  new GridColumn(
75  'considered',
76  'common.status',
77  null,
78  null,
79  $cellProvider,
80  array('anyhtml' => true)
81  )
82  );
83 
84  // Add a column for the review method
85  $this->addColumn(
86  new GridColumn(
87  'method',
88  'common.type',
89  null,
90  null,
91  $cellProvider
92  )
93  );
94 
95  // Add a column for the status of the review.
96  $this->addColumn(
97  new GridColumn(
98  'actions',
99  'grid.columns.actions',
100  null,
101  null,
102  $cellProvider
103  )
104  );
105  }
106 
110  function authorize($request, &$args, $roleAssignments) {
111 
112  // Bypass the parent authorization checks
113  $this->isAuthorGrid = true;
114 
115  $stageId = $request->getUserVar('stageId'); // This is being validated in WorkflowStageAccessPolicy
116 
117  // Not all actions need a stageId. Some work off the reviewAssignment which has the type and round.
118  $this->_stageId = (int)$stageId;
119 
120  // Get the stage access policy
121  import('lib.pkp.classes.security.authorization.WorkflowStageAccessPolicy');
122  $workflowStageAccessPolicy = new WorkflowStageAccessPolicy($request, $args, $roleAssignments, 'submissionId', $stageId);
123 
124  // Add policy to ensure there is a review round id.
125  import('lib.pkp.classes.security.authorization.internal.ReviewRoundRequiredPolicy');
126  $workflowStageAccessPolicy->addPolicy(new ReviewRoundRequiredPolicy($request, $args, 'reviewRoundId', array('fetchGrid', 'fetchRow')));
127 
128  // Add policy to ensure there is a review assignment for certain operations.
129  import('lib.pkp.classes.security.authorization.internal.ReviewAssignmentRequiredPolicy');
130  $workflowStageAccessPolicy->addPolicy(new ReviewAssignmentRequiredPolicy($request, $args, 'reviewAssignmentId', array('readReview', 'reviewRead'), array(SUBMISSION_REVIEW_METHOD_OPEN)));
131  $this->addPolicy($workflowStageAccessPolicy);
132 
133  return parent::authorize($request, $args, $roleAssignments);
134  }
135 
136  //
137  // Overridden methods from GridHandler
138  //
142  protected function loadData($request, $filter) {
143  // Get the existing review assignments for this submission
144  // Only show open requests that have been accepted
145  $reviewRound = $this->getReviewRound();
146  $reviewAssignmentDao = DAORegistry::getDAO('ReviewAssignmentDAO'); /* @var $reviewAssignmentDao ReviewAssignmentDAO */
147  return $reviewAssignmentDao->getOpenReviewsByReviewRoundId($reviewRound->getId());
148  }
149 
157  function readReview($args, $request) {
158  $templateMgr = TemplateManager::getManager($request);
159  $reviewAssignment = $this->getAuthorizedContextObject(ASSOC_TYPE_REVIEW_ASSIGNMENT);
160 
161  $templateMgr->assign(array(
162  'submission' => $this->getSubmission(),
163  'reviewAssignment' => $reviewAssignment,
164  'reviewerRecommendationOptions' => ReviewAssignment::getReviewerRecommendationOptions(),
165  ));
166 
167  if ($reviewAssignment->getReviewFormId()) {
168  // Retrieve review form
169  $context = $request->getContext();
170  $reviewFormElementDao = DAORegistry::getDAO('ReviewFormElementDAO'); /* @var $reviewFormElementDao ReviewFormElementDAO */
171  // Get review form elements visible for authors
172  $reviewFormElements = $reviewFormElementDao->getByReviewFormId($reviewAssignment->getReviewFormId(), null, true);
173  $reviewFormResponseDao = DAORegistry::getDAO('ReviewFormResponseDAO'); /* @var $reviewFormResponseDao ReviewFormResponseDAO */
174  $reviewFormResponses = $reviewFormResponseDao->getReviewReviewFormResponseValues($reviewAssignment->getId());
175  $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); /* @var $reviewFormDao ReviewFormDAO */
176  $reviewformid = $reviewAssignment->getReviewFormId();
177  $reviewForm = $reviewFormDao->getById($reviewAssignment->getReviewFormId(), Application::getContextAssocType(), $context->getId());
178  $templateMgr->assign(array(
179  'reviewForm' => $reviewForm,
180  'reviewFormElements' => $reviewFormElements,
181  'reviewFormResponses' => $reviewFormResponses,
182  'disabled' => true,
183  ));
184  } else {
185  // Retrieve reviewer comments. Skip private comments.
186  $submissionCommentDao = DAORegistry::getDAO('SubmissionCommentDAO'); /* @var $submissionCommentDao SubmissionCommentDAO */
187  $templateMgr->assign(array(
188  'comments' => $submissionCommentDao->getReviewerCommentsByReviewerId($reviewAssignment->getSubmissionId(), null, $reviewAssignment->getId(), true),
189  ));
190  }
191 
192  // Render the response.
193  return $templateMgr->fetchJson('controllers/grid/users/reviewer/authorReadReview.tpl');
194  }
195 
196 }
197 
198 
AuthorReviewerGridCellProvider
Base class for a cell provider that can retrieve labels for reviewer grid rows in author workflow.
Definition: AuthorReviewerGridCellProvider.inc.php:21
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
GridColumn
The GridColumn class represents a column within a grid. It is used to format the data presented in a ...
Definition: GridColumn.inc.php:27
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
ReviewRoundRequiredPolicy
Policy that ensures that the request contains a valid review round.
Definition: ReviewRoundRequiredPolicy.inc.php:17
AuthorReviewerGridHandler\getRowInstance
getRowInstance()
Definition: AuthorReviewerGridHandler.inc.php:47
AuthorReviewerGridHandler\initialize
initialize($request, $args=null)
Definition: AuthorReviewerGridHandler.inc.php:54
GridHandler\addColumn
addColumn($column)
Definition: GridHandler.inc.php:335
PKPReviewerGridHandler
Handle reviewer grid requests.
Definition: PKPReviewerGridHandler.inc.php:28
PKPReviewerGridHandler\getSubmission
getSubmission()
Definition: PKPReviewerGridHandler.inc.php:146
PKPReviewerGridHandler\getReviewRound
getReviewRound()
Definition: PKPReviewerGridHandler.inc.php:162
Application\getContextAssocType
static getContextAssocType()
Definition: Application.inc.php:199
AuthorReviewerGridHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: AuthorReviewerGridHandler.inc.php:110
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
AuthorReviewerGridHandler\__construct
__construct()
Definition: AuthorReviewerGridHandler.inc.php:30
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
WorkflowStageAccessPolicy
Class to control access to OMP's submission workflow stage components.
Definition: WorkflowStageAccessPolicy.inc.php:19
ReviewAssignment\getReviewerRecommendationOptions
static getReviewerRecommendationOptions()
Definition: ReviewAssignment.inc.php:656
AuthorReviewerGridHandler\loadData
loadData($request, $filter)
Definition: AuthorReviewerGridHandler.inc.php:142
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
ReviewAssignmentRequiredPolicy
Policy that ensures that the request contains a valid review assignment.
Definition: ReviewAssignmentRequiredPolicy.inc.php:17
AuthorReviewerGridHandler\readReview
readReview($args, $request)
Definition: AuthorReviewerGridHandler.inc.php:157
AuthorReviewerGridRow
Reviewer grid row definition.
Definition: AuthorReviewerGridRow.inc.php:18
AuthorReviewerGridHandler
Handle reviewer grid requests from author workflow in open reviews.
Definition: AuthorReviewerGridHandler.inc.php:25