_representationId = $representationId; } // // Implement template methods from AuthorizationPolicy // /** * @see DataObjectRequiredPolicy::dataObjectEffect() */ public function dataObjectEffect() { $assignedFileStages = $this->getAuthorizedContextObject(Application::ASSOC_TYPE_ACCESSIBLE_FILE_STAGES); if (empty($assignedFileStages) || !in_array(SubmissionFile::SUBMISSION_FILE_PROOF, $assignedFileStages)) { return AuthorizationPolicy::AUTHORIZATION_DENY; } if (empty($this->_representationId)) { $this->setAdvice(AuthorizationPolicy::AUTHORIZATION_ADVICE_DENY_MESSAGE, 'user.authorization.representationNotFound'); return AuthorizationPolicy::AUTHORIZATION_DENY; } $representationDao = Application::get()->getRepresentationDAO(); $representation = $representationDao->getById($this->_representationId); if (!$representation) { return AuthorizationPolicy::AUTHORIZATION_DENY; } $submission = $this->getAuthorizedContextObject(Application::ASSOC_TYPE_SUBMISSION); if (!$submission) { $this->setAdvice(AuthorizationPolicy::AUTHORIZATION_ADVICE_DENY_MESSAGE, 'user.authorization.invalidSubmission'); return AuthorizationPolicy::AUTHORIZATION_DENY; } $publication = Repo::publication()->get($representation->getData('publicationId')); if (!$publication) { $this->setAdvice(AuthorizationPolicy::AUTHORIZATION_ADVICE_DENY_MESSAGE, 'galley.publicationNotFound'); return AuthorizationPolicy::AUTHORIZATION_DENY; } // Publication and submission must match if ($publication->getData('submissionId') !== $submission->getId()) { $this->setAdvice(AuthorizationPolicy::AUTHORIZATION_ADVICE_DENY_MESSAGE, 'user.authorization.invalidPublication'); return AuthorizationPolicy::AUTHORIZATION_DENY; } // Representations can not be modified on published publications if ($publication->getData('status') === PKPSubmission::STATUS_PUBLISHED) { $this->setAdvice(AuthorizationPolicy::AUTHORIZATION_ADVICE_DENY_MESSAGE, 'galley.editPublishedDisabled'); return AuthorizationPolicy::AUTHORIZATION_DENY; } $this->addAuthorizedContextObject(Application::ASSOC_TYPE_REPRESENTATION, $representation); return AuthorizationPolicy::AUTHORIZATION_PERMIT; } } if (!PKP_STRICT_MODE) { class_alias('\PKP\security\authorization\internal\RepresentationUploadAccessPolicy', '\RepresentationUploadAccessPolicy'); }