$this->dao]); } public function add(SubmissionFile $submissionFile): int { $galley = null; if ($submissionFile->getData('assocType') === Application::ASSOC_TYPE_REPRESENTATION) { $galley = Repo::galley()->get($submissionFile->getData('assocId')); if (!$galley) { throw new Exception('Galley not found when adding submission file.'); } } $submissionFileId = parent::add($submissionFile); if ($galley) { Repo::galley()->edit($galley, ['submissionFileId' => $submissionFile->getId()]); } return $submissionFileId; } public function delete(SubmissionFile $submissionFile): void { $this->deleteRelatedSubmissionFileObjects($submissionFile); parent::delete($submissionFile); } /** * Delete related objects when a submission file is deleted */ public function deleteRelatedSubmissionFileObjects(SubmissionFile $submissionFile): void { // Remove galley associations and update search index if ($submissionFile->getData('assocType') === Application::ASSOC_TYPE_REPRESENTATION) { $galley = Repo::galley()->get((int)$submissionFile->getData('assocId')); if ($galley && $galley->getData('submissionFileId') == $submissionFile->getId()) { $galley->_data['submissionFileId'] = null; // Work around pkp/pkp-lib#5740 Repo::galley()->edit($galley, []); } event( new SubmissionFileDeleted( (int)$submissionFile->getData('submissionId'), (int)$submissionFile->getId() ) ); } } public function getFileStages(): array { $stages = [ SubmissionFile::SUBMISSION_FILE_SUBMISSION, SubmissionFile::SUBMISSION_FILE_NOTE, SubmissionFile::SUBMISSION_FILE_REVIEW_FILE, SubmissionFile::SUBMISSION_FILE_REVIEW_ATTACHMENT, SubmissionFile::SUBMISSION_FILE_FINAL, SubmissionFile::SUBMISSION_FILE_COPYEDIT, SubmissionFile::SUBMISSION_FILE_PROOF, SubmissionFile::SUBMISSION_FILE_PRODUCTION_READY, SubmissionFile::SUBMISSION_FILE_ATTACHMENT, SubmissionFile::SUBMISSION_FILE_REVIEW_REVISION, SubmissionFile::SUBMISSION_FILE_DEPENDENT, SubmissionFile::SUBMISSION_FILE_QUERY, ]; Hook::call('SubmissionFile::fileStages', [&$stages]); return $stages; } }