Open Journal Systems  3.3.0
SubmissionFileRequestedRevisionRequiredPolicy.inc.php
1 <?php
17 import('lib.pkp.classes.security.authorization.internal.SubmissionFileBaseAccessPolicy');
18 
24  function __construct($request, $fileIdAndRevision = null) {
25  parent::__construct($request, $fileIdAndRevision);
26  }
27 
28 
29  //
30  // Implement template methods from AuthorizationPolicy
31  // Note: This class is subclassed in each Application, so that Policies have the opportunity to add
32  // constraints to the effect() method. See e.g. SubmissionFileRequestedRevisionRequiredPolicy.inc.php in OMP.
33  //
37  function effect() {
38  $request = $this->getRequest();
39  $reviewRoundDao = DAORegistry::getDAO('ReviewRoundDAO'); /* @var $reviewRoundDao ReviewRoundDAO */
40 
41  // Get the submission file.
42  $submissionFile = $this->getSubmissionFile($request);
43  if (!is_a($submissionFile, 'SubmissionFile')) return AUTHORIZATION_DENY;
44 
45  // Make sure the file is part of a review round
46  // with a requested revision decision.
47  $reviewRound = $reviewRoundDao->getBySubmissionFileId($submissionFile->getFileId());
48  if (!is_a($reviewRound, 'ReviewRound')) return AUTHORIZATION_DENY;
49  import('classes.workflow.EditorDecisionActionsManager');
50  if (!(new EditorDecisionActionsManager())->getEditorTakenActionInReviewRound($request->getContext(), $reviewRound, array(SUBMISSION_EDITOR_DECISION_PENDING_REVISIONS))) {
51  return AUTHORIZATION_DENY;
52  }
53 
54  // Make sure that it's in the review stage.
55  $reviewRound = $reviewRoundDao->getBySubmissionFileId($submissionFile->getFileId());
56  if (!is_a($reviewRound, 'ReviewRound')) return AUTHORIZATION_DENY;
57 
58  // Make sure review round stage is the same of the current stage in request.
59  $stageId = $this->getAuthorizedContextObject(ASSOC_TYPE_WORKFLOW_STAGE);
60  if ($reviewRound->getStageId() != $stageId) return AUTHORIZATION_DENY;
61 
62  // Make sure the file stage is SUBMISSION_FILE_REVIEW_REVISION.
63  if ($submissionFile->getFileStage() != SUBMISSION_FILE_REVIEW_REVISION) return AUTHORIZATION_DENY;
64 
65  $reviewRoundDao = DAORegistry::getDAO('ReviewRoundDAO'); /* @var $reviewRoundDao ReviewRoundDAO */
66 
67  // Make sure that the last review round editor decision is request revisions.
68  $editDecisionDao = DAORegistry::getDAO('EditDecisionDAO'); /* @var $editDecisionDao EditDecisionDAO */
69  $reviewRoundDecisions = $editDecisionDao->getEditorDecisions($submissionFile->getSubmissionId(), $reviewRound->getStageId(), $reviewRound->getRound());
70  if (empty($reviewRoundDecisions)) return AUTHORIZATION_DENY;
71 
72  $lastEditorDecision = array_pop($reviewRoundDecisions);
73  if ($lastEditorDecision['decision'] != SUBMISSION_EDITOR_DECISION_PENDING_REVISIONS) return AUTHORIZATION_DENY;
74 
75  // Made it through -- permit access.
76  return AUTHORIZATION_PERMIT;
77  }
78 }
79 
80 
SubmissionFileBaseAccessPolicy\getSubmissionFile
getSubmissionFile($request)
Definition: SubmissionFileBaseAccessPolicy.inc.php:67
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
SubmissionFileBaseAccessPolicy
Abstract class for submission file access policies.
Definition: SubmissionFileBaseAccessPolicy.inc.php:18
AuthorizationPolicy\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: AuthorizationPolicy.inc.php:117
EditorDecisionActionsManager
Wrapper class for create and assign editor decisions actions to template manager.
Definition: EditorDecisionActionsManager.inc.php:33
SubmissionFileRequestedRevisionRequiredPolicy
Base Submission file policy to ensure we have a viewable file that is part of a review round with the...
Definition: SubmissionFileRequestedRevisionRequiredPolicy.inc.php:19
SubmissionFileBaseAccessPolicy\getRequest
getRequest()
Definition: SubmissionFileBaseAccessPolicy.inc.php:102
SubmissionFileRequestedRevisionRequiredPolicy\__construct
__construct($request, $fileIdAndRevision=null)
Definition: SubmissionFileRequestedRevisionRequiredPolicy.inc.php:24
SubmissionFileRequestedRevisionRequiredPolicy\effect
effect()
Definition: SubmissionFileRequestedRevisionRequiredPolicy.inc.php:37