Open Journal Systems  3.3.0
AdvancedSearchReviewerForm.inc.php
1 <?php
2 
16 import('lib.pkp.controllers.grid.users.reviewer.form.ReviewerForm');
17 
24  function __construct($submission, $reviewRound) {
25  parent::__construct($submission, $reviewRound);
26  $this->setTemplate('controllers/grid/users/reviewer/form/advancedSearchReviewerForm.tpl');
27 
28  $this->addCheck(new FormValidator($this, 'reviewerId', 'required', 'editor.review.mustSelect'));
29  }
30 
35  function readInputData() {
36  parent::readInputData();
37 
38  $this->readUserVars(array('reviewerId'));
39  }
40 
44  function fetch($request, $template = null, $display = false) {
45  // Get submission context
46  $submissionContext = Services::get('context')->get($this->getSubmission()->getContextId());
47 
48  // Pass along the request vars
49  $actionArgs = $request->getUserVars();
50  $reviewRound = $this->getReviewRound();
51  $actionArgs['reviewRoundId'] = $reviewRound->getId();
52  $actionArgs['selectionType'] = REVIEWER_SELECT_ADVANCED_SEARCH;
53  // but change the selectionType for each action
54  $advancedSearchAction = new LinkAction(
55  'advancedSearch',
56  new AjaxAction($request->url(null, null, 'reloadReviewerForm', null, $actionArgs)),
57  __('manager.reviewerSearch.change'),
58  'user_search'
59  );
60 
61  $this->setReviewerFormAction($advancedSearchAction);
62 
63  $reviewAssignmentDao = DAORegistry::getDAO('ReviewAssignmentDAO'); /* @var $reviewAssignmentDao ReviewAssignmentDAO */
64  $reviewAssignments = $reviewAssignmentDao->getBySubmissionId($this->getSubmissionId(), $this->getReviewRound()->getId());
65  $currentlyAssigned = array();
66  if (!empty($reviewAssignments)) {
67  foreach ($reviewAssignments as $reviewAssignment) {
68  $currentlyAssigned[] = (int) $reviewAssignment->getReviewerId();
69  }
70  }
71 
72  // Get user IDs already assigned to this submission, and admins and
73  // managers who may have access to author identities and can not guarantee
74  // blind reviews
75  $warnOnAssignment = array();
76  $stageAssignmentDao = DAORegistry::getDAO('StageAssignmentDAO'); /* @var $stageAssignmentDao StageAssignmentDAO */
77  $stageAssignmentResults = $stageAssignmentDao->getBySubmissionAndStageId($this->getSubmissionId());
78  while ($stageAssignment = $stageAssignmentResults->next()) {
79  $warnOnAssignment[] = $stageAssignment->getUserId();
80  }
81  $roleDao = DAORegistry::getDAO('RoleDAO'); /* @var $roleDao RoleDAO */
82  $managerUsersResults = $roleDao->getUsersByRoleId(ROLE_ID_MANAGER, $submissionContext->getId());
83  while ($manager = $managerUsersResults->next()) {
84  $warnOnAssignment[] = $manager->getId();
85  }
86  $adminUsersResults = $roleDao->getUsersByRoleId(ROLE_ID_SITE_ADMIN, $submissionContext->getId());
87  while ($admin = $adminUsersResults->next()) {
88  $warnOnAssignment[] = $admin->getId();
89  }
90  $warnOnAssignment = array_map('intval', array_values(array_unique($warnOnAssignment)));
91 
92  // Get reviewers list
93  $selectReviewerListPanel = new \PKP\components\listPanels\PKPSelectReviewerListPanel(
94  'selectReviewer',
95  __('editor.submission.findAndSelectReviewer'),
96  [
97  'apiUrl' => $request->getDispatcher()->url(
98  $request,
99  ROUTE_API,
100  $submissionContext->getPath(),
101  'users/reviewers'
102  ),
103  'currentlyAssigned' => $currentlyAssigned,
104  'getParams' => [
105  'contextId' => $submissionContext->getId(),
106  'reviewStage' => $reviewRound->getStageId(),
107  ],
108  'selectorName' => 'reviewerId',
109  'warnOnAssignment' => $warnOnAssignment,
110  ]
111  );
112  $selectReviewerListPanel->set([
113  'items' => $selectReviewerListPanel->getItems($request),
114  'itemsMax' => $selectReviewerListPanel->getItemsMax(),
115  ]);
116 
117  $templateMgr = TemplateManager::getManager($request);
118  $templateMgr->assign('selectReviewerListData', [
119  'components' => [
120  'selectReviewer' => $selectReviewerListPanel->getConfig(),
121  ]
122  ]);
123 
124  // Only add actions to forms where user can operate.
125  if (array_intersect($this->getUserRoles(), array(ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR))) {
126  $actionArgs['selectionType'] = REVIEWER_SELECT_CREATE;
127  // but change the selectionType for each action
128  $advancedSearchAction = new LinkAction(
129  'selectCreate',
130  new AjaxAction($request->url(null, null, 'reloadReviewerForm', null, $actionArgs)),
131  __('editor.review.createReviewer'),
132  'add_user'
133  );
134 
135  $this->setReviewerFormAction($advancedSearchAction);
136  $actionArgs['selectionType'] = REVIEWER_SELECT_ENROLL_EXISTING;
137  // but change the selectionType for each action
138  $advancedSearchAction = new LinkAction(
139  'enrolExisting',
140  new AjaxAction($request->url(null, null, 'reloadReviewerForm', null, $actionArgs)),
141  __('editor.review.enrollReviewer.short'),
142  'enroll_user'
143  );
144 
145  $this->setReviewerFormAction($advancedSearchAction);
146  }
147 
148  return parent::fetch($request, $template, $display);
149  }
150 }
151 
152 
ReviewerForm\getSubmissionId
getSubmissionId()
Definition: ReviewerForm.inc.php:59
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
Form\readUserVars
readUserVars($vars)
Definition: Form.inc.php:378
AdvancedSearchReviewerForm\__construct
__construct($submission, $reviewRound)
Definition: AdvancedSearchReviewerForm.inc.php:24
AdvancedSearchReviewerForm\fetch
fetch($request, $template=null, $display=false)
Definition: AdvancedSearchReviewerForm.inc.php:44
AjaxAction
Class defining an AJAX action.
Definition: AjaxAction.inc.php:21
ReviewerForm\setReviewerFormAction
setReviewerFormAction($action)
Definition: ReviewerForm.inc.php:100
AdvancedSearchReviewerForm
Form for an advanced search and for adding a reviewer to a submission.
Definition: AdvancedSearchReviewerForm.inc.php:18
ReviewerForm
Base Form for adding a reviewer to a submission. N.B. Requires a subclass to implement the "reviewerI...
Definition: ReviewerForm.inc.php:19
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
Form\setTemplate
setTemplate($template)
Definition: Form.inc.php:129
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
FormValidator
Class to represent a form validation check.
Definition: FormValidator.inc.php:23
AdvancedSearchReviewerForm\readInputData
readInputData()
Definition: AdvancedSearchReviewerForm.inc.php:35
ReviewerForm\getReviewRound
getReviewRound()
Definition: ReviewerForm.inc.php:76
Form\addCheck
addCheck($formValidator)
Definition: Form.inc.php:395
ReviewerForm\getUserRoles
getUserRoles()
Definition: ReviewerForm.inc.php:116
PKPServices\get
static get($service)
Definition: PKPServices.inc.php:49
ReviewerForm\getSubmission
getSubmission()
Definition: ReviewerForm.inc.php:68