getRequest()->getUserVar('stageId'); $fileStage = $stageId === WORKFLOW_STAGE_ID_INTERNAL_REVIEW ? SubmissionFile::SUBMISSION_FILE_INTERNAL_REVIEW_FILE : SubmissionFile::SUBMISSION_FILE_REVIEW_FILE; // Pass in null stageId to be set in initialize from request var. parent::__construct( new ReviewGridDataProvider($fileStage), null, FilesGridCapabilities::FILE_GRID_VIEW_NOTES ); $this->addRoleAssignment( [Role::ROLE_ID_MANAGER, Role::ROLE_ID_SITE_ADMIN, Role::ROLE_ID_SUB_EDITOR, Role::ROLE_ID_ASSISTANT], ['fetchGrid', 'fetchRow'] ); // Set the grid information. $this->setTitle('editor.submissionReview.restrictFiles'); } /** * @copydoc PKPHandler::authorize() */ public function authorize($request, &$args, $roleAssignments) { if ($reviewAssignmentId = $request->getUserVar('reviewAssignmentId')) { // If a review assignment ID is specified, preload the // checkboxes with the currently selected files. To do // this, we'll need the review assignment in the context. // Add the required policies: // 1) Review stage access policy (fetches submission in context) $this->addPolicy(new ReviewStageAccessPolicy($request, $args, $roleAssignments, 'submissionId', $request->getUserVar('stageId'))); // 2) Review assignment $this->addPolicy(new ReviewAssignmentRequiredPolicy($request, $args, 'reviewAssignmentId', ['fetchGrid', 'fetchRow'])); } return parent::authorize($request, $args, $roleAssignments); } /** * @copydoc GridHandler::isDataElementSelected() */ public function isDataElementSelected($gridDataElement) { $reviewAssignment = $this->getAuthorizedContextObject(Application::ASSOC_TYPE_REVIEW_ASSIGNMENT); if ($reviewAssignment) { $submissionFile = $gridDataElement['submissionFile']; // A review assignment was specified in the request; preset the // checkboxes to the currently available set of files. $reviewFilesDao = DAORegistry::getDAO('ReviewFilesDAO'); /** @var ReviewFilesDAO $reviewFilesDao */ return $reviewFilesDao->check($reviewAssignment->getId(), $submissionFile->getId()); } else { // No review assignment specified; default to all files available. return true; } } }