Open Monograph Press  3.3.0
ReviewerGridRow.inc.php
1 <?php
2 
16 import('lib.pkp.classes.controllers.grid.GridRow');
17 
18 class ReviewerGridRow extends GridRow {
19 
22 
28  public function __construct($isCurrentUserAssignedAuthor) {
29  parent::__construct();
30  $this->_isCurrentUserAssignedAuthor = $isCurrentUserAssignedAuthor;
31  }
32 
33  //
34  // Overridden methods from GridRow
35  //
39  function initialize($request, $template = null) {
40  parent::initialize($request, $template);
41 
42  // Retrieve the submission id from the request
43  // These parameters need not be validated as we're just
44  // passing them along to another request, where they will be
45  // checked before they're used.
46  $submissionId = (int) $request->getUserVar('submissionId');
47  $stageId = (int) $request->getUserVar('stageId');
48  $round = (int) $request->getUserVar('round');
49 
50  // Authors can't perform any actions on blind reviews
51  $reviewAssignment = $this->getData();
52  $isReviewBlind = in_array($reviewAssignment->getReviewMethod(), array(SUBMISSION_REVIEW_METHOD_BLIND, SUBMISSION_REVIEW_METHOD_DOUBLEBLIND));
53  if ($this->_isCurrentUserAssignedAuthor && $isReviewBlind) {
54  return;
55  }
56 
57  // Is this a new row or an existing row?
58  $rowId = $this->getId();
59  if (!empty($rowId) && is_numeric($rowId)) {
60  // Only add row actions if this is an existing row
61  $router = $request->getRouter();
62  $actionArgs = array(
63  'submissionId' => $submissionId,
64  'reviewAssignmentId' => $rowId,
65  'stageId' => $stageId,
66  'round' => $round
67  );
68 
69  // read or upload a review
70  $submissionDao = DAORegistry::getDAO('SubmissionDAO'); /* @var $submissionDao SubmissionDAO */
71  $submission = $submissionDao->getById($submissionId);
72  if (!$reviewAssignment->getCancelled()) $this->addAction(
73  new LinkAction(
74  'readReview',
75  new AjaxModal(
76  $router->url($request, null, null, 'readReview', null, $actionArgs),
77  __('editor.review.reviewDetails') . ': ' . $submission->getLocalizedTitle(),
78  'modal_information'
79  ),
80  __('editor.review.reviewDetails'),
81  'more_info'
82  )
83  );
84 
85  $this->addAction(
86  new LinkAction(
87  'email',
88  new AjaxModal(
89  $router->url($request, null, null, 'sendEmail', null, $actionArgs),
90  __('editor.review.emailReviewer'),
91  'modal_email'
92  ),
93  __('editor.review.emailReviewer'),
94  'notify'
95  )
96  );
97 
98  if (!$this->_isCurrentUserAssignedAuthor) {
99  if (!$reviewAssignment->getCancelled()) {
100  $this->addAction(new LinkAction(
101  'manageAccess',
102  new AjaxModal(
103  $router->url($request, null, null, 'editReview', null, $actionArgs),
104  __('editor.submissionReview.editReview'),
105  'modal_add_file'
106  ),
107  __('common.edit'),
108  'edit'
109  ));
110  $this->addAction(new LinkAction(
111  'unassignReviewer',
112  new AjaxModal(
113  $router->url($request, null, null, 'unassignReviewer', null, $actionArgs),
114  $reviewAssignment->getDateConfirmed()?__('editor.review.cancelReviewer'):__('editor.review.unassignReviewer'),
115  'modal_delete'
116  ),
117  $reviewAssignment->getDateConfirmed()?__('editor.review.cancelReviewer'):__('editor.review.unassignReviewer'),
118  'delete'
119  ));
120  } else $this->addAction(
121  new LinkAction(
122  'reinstateReviewer',
123  new AjaxModal(
124  $router->url($request, null, null, 'reinstateReviewer', null, $actionArgs),
125  __('editor.review.reinstateReviewer'),
126  'modal_add'
127  ),
128  __('editor.review.reinstateReviewer'),
129  'add'
130  )
131  );
132  }
133 
134  $this->addAction(
135  new LinkAction(
136  'history',
137  new AjaxModal(
138  $router->url($request, null, null, 'reviewHistory', null, $actionArgs),
139  __('submission.history'),
140  'modal_information'
141  ),
142  __('submission.history'),
143  'more_info'
144  )
145  );
146 
147  $user = $request->getUser();
148  if (
150  $user->getId() != $reviewAssignment->getReviewerId() &&
151  Validation::canAdminister($reviewAssignment->getReviewerId(), $user->getId()) &&
152  !$reviewAssignment->getCancelled()
153  ) {
154  $dispatcher = $router->getDispatcher();
155  import('lib.pkp.classes.linkAction.request.RedirectConfirmationModal');
156  $this->addAction(
157  new LinkAction(
158  'logInAs',
160  __('grid.user.confirmLogInAs'),
161  __('grid.action.logInAs'),
162  $dispatcher->url($request, ROUTE_PAGE, null, 'login', 'signInAsUser', $reviewAssignment->getReviewerId())
163  ),
164  __('grid.action.logInAs'),
165  'enroll_user'
166  )
167  );
168  }
169 
170  // Add gossip action when appropriate
171  import('classes.core.Services');
172  $canCurrentUserGossip = Services::get('user')->canCurrentUserGossip($reviewAssignment->getReviewerId());
173  if ($canCurrentUserGossip) {
174  $this->addAction(
175  new LinkAction(
176  'gossip',
177  new AjaxModal(
178  $router->url($request, null, null, 'gossip', null, $actionArgs),
179  __('user.gossip'),
180  'modal_information'
181  ),
182  __('user.gossip'),
183  'more_info'
184  )
185  );
186  }
187  }
188  }
189 }
Validation\isLoggedInAs
static isLoggedInAs()
Definition: Validation.inc.php:388
GridRow\__construct
__construct()
Definition: GridRow.inc.php:75
ReviewerGridRow\initialize
initialize($request, $template=null)
Definition: ReviewerGridRow.inc.php:42
GridRow\addAction
addAction($action, $position=GRID_ACTION_POSITION_DEFAULT)
Definition: GridRow.inc.php:179
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
GridBodyElement\getId
getId()
Definition: GridBodyElement.inc.php:57
ReviewerGridRow
Reviewer grid row definition.
Definition: ReviewerGridRow.inc.php:18
GridRow
GridRow implements a row of a Grid. See GridHandler for general information about grids.
Definition: GridRow.inc.php:29
ReviewerGridRow\__construct
__construct($isCurrentUserAssignedAuthor)
Definition: ReviewerGridRow.inc.php:31
AjaxModal
A modal that retrieves its content from via AJAX.
Definition: AjaxModal.inc.php:18
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
RedirectConfirmationModal
Class defining a simple confirmation modal with a redirect url and ok/cancel buttons.
Definition: RedirectConfirmationModal.inc.php:18
ReviewerGridRow\$_isCurrentUserAssignedAuthor
$_isCurrentUserAssignedAuthor
Definition: ReviewerGridRow.inc.php:24
Validation\canAdminister
static canAdminister($administeredUserId, $administratorUserId)
Definition: Validation.inc.php:410
GridRow\getData
& getData()
Definition: GridRow.inc.php:131
PKPServices\get
static get($service)
Definition: PKPServices.inc.php:49