Open Journal Systems  3.3.0
FileUploadWizardHandler.inc.php
1 <?php
22 // Import the base handler.
23 import('lib.pkp.controllers.wizard.fileUpload.PKPFileUploadWizardHandler');
24 
26  //
27  // Implement template methods from PKPHandler
28  //
29  function authorize($request, &$args, $roleAssignments) {
30  // We validate file stage outside a policy because
31  // we don't need to validate in another places.
32  $fileStage = $request->getUserVar('fileStage');
33  if ($fileStage) {
34  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */
35  $fileStages = $submissionFileDao->getAllFileStages();
36  if (!in_array($fileStage, $fileStages)) {
37  return false;
38  }
39  }
40 
41  // Validate file ids. We have two cases where we might have a file id.
42  // CASE 1: user is uploading a revision to a file, the revised file id
43  // will need validation.
44  $revisedFileId = (int)$request->getUserVar('revisedFileId');
45  // CASE 2: user already have uploaded a file (and it's editing the metadata),
46  // we will need to validate the uploaded file id.
47  $fileId = (int)$request->getUserVar('fileId');
48  // Get the right one to validate.
49  $fileIdToValidate = null;
50  if ($revisedFileId && !$fileId) {
51  $fileIdToValidate = $revisedFileId;
52  } else if ($fileId && !$revisedFileId) {
53  $fileIdToValidate = $fileId;
54  } else if ($revisedFileId && $fileId) {
55  // Those two cases will not happen at the same time.
56  return false;
57  }
58  if ($fileIdToValidate) {
59  import('lib.pkp.classes.security.authorization.SubmissionFileAccessPolicy');
60  $this->addPolicy(new SubmissionFileAccessPolicy($request, $args, $roleAssignments, SUBMISSION_FILE_ACCESS_MODIFY, $fileIdToValidate));
61  }
62 
63  // Allow both reviewers (if in review) and context roles.
64  $stageId = (int)$request->getUserVar('stageId');
65  import('lib.pkp.classes.security.authorization.ReviewStageAccessPolicy');
66  $this->addPolicy(new ReviewStageAccessPolicy($request, $args, $roleAssignments, 'submissionId', $stageId));
67 
68  // Authorize review round id when this handler is used in review stages.
69  import('lib.pkp.classes.submission.SubmissionFile'); // Constants
70  if ($stageId == WORKFLOW_STAGE_ID_EXTERNAL_REVIEW && !in_array($request->getUserVar('fileStage'), array(SUBMISSION_FILE_QUERY, SUBMISSION_FILE_DEPENDENT))) {
71  import('lib.pkp.classes.security.authorization.internal.ReviewRoundRequiredPolicy');
72  $this->addPolicy(new ReviewRoundRequiredPolicy($request, $args));
73  }
74 
75  return parent::authorize($request, $args, $roleAssignments);
76  }
77 
81  protected function _attachEntities($submissionFile) {
82  parent::_attachEntities($submissionFile);
83 
84  switch ($submissionFile->getFileStage()) {
85  case SUBMISSION_FILE_PROOF:
86  $galleyDao = DAORegistry::getDAO('ArticleGalleyDAO'); /* @var $galleyDao ArticleGalleyDAO */
87  assert($submissionFile->getAssocType() == ASSOC_TYPE_REPRESENTATION);
88  $galley = $galleyDao->getById($submissionFile->getAssocId());
89  if ($galley) {
90  $galley->setFileId($submissionFile->getFileId());
91  $galleyDao->updateObject($galley);
92  }
93  break;
94  }
95  }
96 }
97 
98 
FileUploadWizardHandler
A controller that handles basic server-side operations of the file upload wizard.
Definition: FileUploadWizardHandler.inc.php:25
FileUploadWizardHandler\_attachEntities
_attachEntities($submissionFile)
Definition: FileUploadWizardHandler.inc.php:81
PKPFileUploadWizardHandler
Definition: PKPFileUploadWizardHandler.inc.php:23
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
FileUploadWizardHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: FileUploadWizardHandler.inc.php:29
ReviewRoundRequiredPolicy
Policy that ensures that the request contains a valid review round.
Definition: ReviewRoundRequiredPolicy.inc.php:17
ReviewStageAccessPolicy
Class to control access to review stage components.
Definition: ReviewStageAccessPolicy.inc.php:18
SubmissionFileAccessPolicy
Base class to control (write) access to submissions and (read) access to submission files.
Definition: SubmissionFileAccessPolicy.inc.php:23
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157