/** * @copydoc SubmissionFile::copyEditableMetadataForm */ function copyEditableMetadataFrom($submissionFile) { if (is_a($submissionFile, 'MonographFile') || is_a($submissionFile, 'MonographArtworkFile')) { $this->setChapterId($submissionFile->getChapterId()); } parent::copyEditableMetadataFrom($submissionFile); }
/** * Constructor. */ function MonographFile() { parent::SubmissionFile(); }
/** * Create an array that describes an uploaded file which can * be used in a JSON response. * @param SubmissionFile $uploadedFile * @return array */ function _getUploadedFileInfo($uploadedFile) { return array('uploadedFile' => array('fileId' => $uploadedFile->getFileId(), 'revision' => $uploadedFile->getRevision(), 'name' => $uploadedFile->getLocalizedName(), 'fileLabel' => $uploadedFile->getFileLabel(), 'type' => $uploadedFile->getDocumentType(), 'genreId' => $uploadedFile->getGenreId())); }
/** * For 3.0.0 upgrade. Migrates submission files to new paths. */ function migrateSubmissionFilePaths() { $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); import('lib.pkp.classes.submission.SubmissionFile'); $genreDao = DAORegistry::getDAO('GenreDAO'); $journalDao = DAORegistry::getDAO('JournalDAO'); $submissionFile = new SubmissionFile(); import('lib.pkp.classes.file.FileManager'); $fileManager = new FileManager(); $articleFilesResult = $submissionFileDao->retrieve('SELECT af.*, s.submission_id, s.context_id FROM article_files_migration af, submissions s WHERE af.article_id = s.submission_id'); $filesDir = Config::getVar('files', 'files_dir') . '/journals/'; while (!$articleFilesResult->EOF) { $row = $articleFilesResult->GetRowAssoc(false); // Assemble the old file path. $oldFilePath = $filesDir . $row['context_id'] . '/articles/' . $row['submission_id'] . '/'; if (isset($row['type'])) { // pre 2.4 upgrade. $oldFilePath .= $row['type']; } else { // post 2.4, we have file_stage instead. switch ($row['file_stage']) { case 1: $oldFilePath .= 'submission/original'; break; case 2: $oldFilePath .= 'submission/review'; break; case 3: $oldFilePath .= 'submission/editor'; break; case 4: $oldFilePath .= 'submission/copyedit'; break; case 5: $oldFilePath .= 'submission/layout'; break; case 6: $oldFilePath .= 'supp'; break; case 7: $oldFilePath .= 'public'; break; case 8: $oldFilePath .= 'note'; break; case 9: $oldFilePath .= 'attachment'; break; } } $oldFilePath .= '/' . $row['file_name']; if (file_exists($oldFilePath)) { // sanity check. $newFilePath = $filesDir . $row['context_id'] . '/articles/' . $row['submission_id'] . '/'; // Since we cannot be sure that we had a file_stage column before, query the new submission_files table. $submissionFileResult = $submissionFileDao->retrieve('SELECT genre_id, file_stage, date_uploaded, original_file_name FROM submission_files WHERE file_id = ? and revision = ?', array($row['file_id'], $row['revision'])); $submissionFileRow = $submissionFileResult->GetRowAssoc(false); $newFilePath .= $submissionFile->_fileStageToPath($submissionFileRow['file_stage']); $genre = $genreDao->getById($submissionFileRow['genre_id']); // pull in the primary locale for this journal without loading the whole object. $localeResult = $journalDao->retrieve('SELECT primary_locale FROM journals WHERE journal_id = ?', array($row['context_id'])); $localeRow = $localeResult->GetRowAssoc(false); $newFilePath .= '/' . $row['submission_id'] . '-' . $genre->getDesignation() . '_' . $genre->getName($localeRow['primary_locale']) . '-' . $row['file_id'] . '-' . $row['revision'] . '-' . $submissionFileRow['file_stage'] . '-' . date('Ymd', strtotime($submissionFileRow['date_uploaded'])) . '.' . strtolower_codesafe($fileManager->parseFileExtension($submissionFileRow['original_file_name'])); $fileManager->copyFile($oldFilePath, $newFilePath); if (file_exists($newFilePath)) { $fileManager->deleteFile($oldFilePath); } } $articleFilesResult->MoveNext(); unset($localeResult); unset($submissionFileResult); unset($localeRow); unset($submissionFileRow); } return true; }
/** * Create an array that describes an uploaded file which can * be used in a JSON response. * @param SubmissionFile $uploadedFile * @return array */ function _getUploadedFileInfo($uploadedFile) { return array('uploadedFile' => array('fileId' => $uploadedFile->getFileId(), 'revision' => $uploadedFile->getRevision())); }
/** * Copy the user-facing (editable) metadata from another submission * file. * @param $submissionFile SubmissionFile */ function copyEditableMetadataFrom($submissionFile) { if (is_a($submissionFile, 'SubmissionArtworkFile')) { $this->setCaption($submissionFile->getCaption()); $this->setCredit($submissionFile->getCredit()); $this->setCopyrightOwner($submissionFile->getCopyrightOwner()); $this->setCopyrightOwnerContactDetails($submissionFile->getCopyrightOwnerContactDetails()); $this->setPermissionTerms($submissionFile->getPermissionTerms()); } parent::copyEditableMetadataFrom($submissionFile); }
/** * Constructor. */ function ArticleFile() { parent::SubmissionFile(); }
/** * @covers SubmissionFileDAO * @covers PKPSubmissionFileDAO * @covers SubmissionFileDAODelegate * @covers SubmissionArtworkFileDAODelegate * @covers SubmissionFileDAODelegate */ public function testSubmissionFileCrud() { // // Create test data. // // Create two test files, one monograph file one artwork file. $file1Rev1 = new SubmissionArtworkFile(); $file1Rev1->setName('test-artwork', 'en_US'); $file1Rev1->setCaption('test-caption'); $file1Rev1->setFileStage(SUBMISSION_FILE_PROOF); $file1Rev1->setSubmissionId(SUBMISSION_FILE_DAO_TEST_SUBMISSION_ID); $file1Rev1->setFileType('image/jpeg'); $file1Rev1->setFileSize(512); $file1Rev1->setDateUploaded('2011-12-04 00:00:00'); $file1Rev1->setDateModified('2011-12-04 00:00:00'); $file1Rev1->setAssocType(ASSOC_TYPE_REVIEW_ASSIGNMENT); $file1Rev1->setAssocId(5); $file2Rev1 = new SubmissionFile(); $file2Rev1->setName('test-document', 'en_US'); $file2Rev1->setFileStage(SUBMISSION_FILE_PROOF); $file2Rev1->setSubmissionId(SUBMISSION_FILE_DAO_TEST_SUBMISSION_ID); $file2Rev1->setFileType('application/pdf'); $file2Rev1->setFileSize(256); $file2Rev1->setDateUploaded('2011-12-05 00:00:00'); $file2Rev1->setDateModified('2011-12-05 00:00:00'); // // isInlineable() // // Test the isInlineable method. $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */ self::assertFalse($submissionFileDao->isInlineable($file2Rev1)); self::assertTrue($submissionFileDao->isInlineable($file1Rev1)); // // insertObject() // // Persist the two test files. $this->_insertFile($file1Rev1, 'test artwork', SUBMISSION_FILE_DAO_TEST_ART_GENRE_ID); self::assertTrue(is_a($file1Rev1, 'SubmissionArtworkFile')); $this->_insertFile($file2Rev1, 'test monograph', SUBMISSION_FILE_DAO_TEST_DOC_GENRE_ID); self::assertTrue(is_a($file2Rev1, 'SubmissionFile')); // Persist a second revision of the artwork file but this time with a // document genre so that it needs to be downcast for insert. $downcastFile = clone $file1Rev1; /* @var $downcastFile SubmissionArtworkFile */ $downcastFile->setRevision(2); $downcastFile->setDateUploaded('2011-12-05 00:00:00'); $downcastFile->setDateModified('2011-12-05 00:00:00'); $file1Rev2 = $this->_insertFile($downcastFile, 'test downcast', SUBMISSION_FILE_DAO_TEST_DOC_GENRE_ID); // Test whether the target type is correct. self::assertTrue(is_a($file1Rev2, 'SubmissionFile')); // Test that no data on the target interface has been lost. $this->_compareFiles($downcastFile, $file1Rev2); // Persist a second revision of the monograph file but this time with an // artwork genre so that it needs to be upcast for insert. $upcastFile = clone $file2Rev1; /* @var $upcastFile SubmissionFile */ $upcastFile->setRevision(2); $file2Rev2 = $this->_insertFile($upcastFile, 'test upcast', SUBMISSION_FILE_DAO_TEST_ART_GENRE_ID); // Test whether the target type is correct. self::assertTrue(is_a($file2Rev2, 'SubmissionArtworkFile')); // Test that no data on the target interface has been lost. $this->_compareFiles($upcastFile, $file2Rev2); // Make sure that other fields contain default values as // they are empty on upcast. self::assertNull($file2Rev2->getCaption()); // // getRevision() // // Retrieve the first revision of the artwork file. self::assertNull($submissionFileDao->getRevision(null, $file1Rev1->getRevision())); self::assertNull($submissionFileDao->getRevision($file1Rev1->getFileId(), null)); self::assertEquals($file1Rev1, $submissionFileDao->getRevision($file1Rev1->getFileId(), $file1Rev1->getRevision())); self::assertEquals($file1Rev1, $submissionFileDao->getRevision($file1Rev1->getFileId(), $file1Rev1->getRevision(), $file1Rev1->getFileStage())); self::assertEquals($file1Rev1, $submissionFileDao->getRevision($file1Rev1->getFileId(), $file1Rev1->getRevision(), $file1Rev1->getFileStage(), SUBMISSION_FILE_DAO_TEST_SUBMISSION_ID)); self::assertNull($submissionFileDao->getRevision($file1Rev1->getFileId(), $file1Rev1->getRevision(), SUBMISSION_FILE_PROOF + 1)); self::assertNull($submissionFileDao->getRevision($file1Rev1->getFileId(), $file1Rev1->getRevision(), null, SUBMISSION_FILE_DAO_TEST_SUBMISSION_ID + 1)); // // updateObject() // // Update the artwork file. $file1Rev1->setOriginalFileName('updated-file-name'); $file1Rev1->setCaption('test-caption'); $updatedFile = $submissionFileDao->updateObject($file1Rev1); // Now change the genre so that the canonical file name // and the file implementation will have to change. $previousFilePath = $file1Rev1->getFilePath(); $file1Rev1->setGenreId(SUBMISSION_FILE_DAO_TEST_DOC_GENRE_ID); $updatedFile = $submissionFileDao->updateObject($file1Rev1); // Test whether the target type is correct. self::assertTrue(is_a($updatedFile, 'SubmissionFile')); // Test that no data on the target interface has been lost. $this->_compareFiles($file1Rev1, $updatedFile); // Test the new file path and files. $newFilePath = $updatedFile->getFilePath(); self::assertNotEquals($previousFilePath, $newFilePath); self::assertFileNotExists($previousFilePath); self::assertFileExists($newFilePath); // Now change the genre back so that we can test casting // in the other direction. $updatedFile->setGenreId(SUBMISSION_FILE_DAO_TEST_ART_GENRE_ID); $updatedFile = $submissionFileDao->updateObject($updatedFile); // Test whether the target type is correct. self::assertTrue(is_a($updatedFile, 'SubmissionArtworkFile')); // Test that no data on the target interface has been lost. $this->_compareFiles($file1Rev1, $updatedFile); $file1Rev1 = $updatedFile; // // getLatestRevision() // // Retrieve the latest revision of file 1. $file1Rev2->setData('caption', null); // Clear out caption for comparison self::assertNull($submissionFileDao->getLatestRevision(null)); self::assertEquals($file1Rev2, $submissionFileDao->getLatestRevision($file1Rev1->getFileId())); self::assertEquals($file1Rev2, $submissionFileDao->getLatestRevision($file1Rev1->getFileId(), $file1Rev1->getFileStage())); self::assertEquals($file1Rev2, $submissionFileDao->getLatestRevision($file1Rev1->getFileId(), $file1Rev1->getFileStage(), SUBMISSION_FILE_DAO_TEST_SUBMISSION_ID)); self::assertNull($submissionFileDao->getLatestRevision($file1Rev1->getFileId(), SUBMISSION_FILE_PROOF + 1)); self::assertNull($submissionFileDao->getLatestRevision($file1Rev1->getFileId(), null, SUBMISSION_FILE_DAO_TEST_SUBMISSION_ID + 1)); // // getLatestRevisions() // // Calculate the unique ids of the test files. $uniqueId1_1 = $file1Rev1->getFileIdAndRevision(); $uniqueId1_2 = $file1Rev2->getFileIdAndRevision(); $uniqueId2_1 = $file2Rev1->getFileIdAndRevision(); $uniqueId2_2 = $file2Rev2->getFileIdAndRevision(); // Retrieve the latest revisions of both files. self::assertNull($submissionFileDao->getLatestRevisions(null)); self::assertEquals(array($uniqueId1_2 => $file1Rev2, $uniqueId2_2 => $file2Rev2), $submissionFileDao->getLatestRevisions(SUBMISSION_FILE_DAO_TEST_SUBMISSION_ID)); self::assertEquals(array($uniqueId1_2 => $file1Rev2, $uniqueId2_2 => $file2Rev2), $submissionFileDao->getLatestRevisions(SUBMISSION_FILE_DAO_TEST_SUBMISSION_ID, SUBMISSION_FILE_PROOF)); self::assertEquals(array(), $submissionFileDao->getLatestRevisions(SUBMISSION_FILE_DAO_TEST_SUBMISSION_ID + 1)); self::assertEquals(array(), $submissionFileDao->getLatestRevisions(SUBMISSION_FILE_DAO_TEST_SUBMISSION_ID, SUBMISSION_FILE_PROOF + 1)); // Test paging. $rangeInfo = new DBResultRange(2, 1); self::assertEquals(array($uniqueId1_2 => $file1Rev2, $uniqueId2_2 => $file2Rev2), $submissionFileDao->getLatestRevisions(SUBMISSION_FILE_DAO_TEST_SUBMISSION_ID, null, $rangeInfo)); $rangeInfo = new DBResultRange(1, 1); self::assertEquals(array($uniqueId1_2 => $file1Rev2), $submissionFileDao->getLatestRevisions(SUBMISSION_FILE_DAO_TEST_SUBMISSION_ID, null, $rangeInfo)); $rangeInfo = new DBResultRange(1, 2); self::assertEquals(array($uniqueId2_2 => $file2Rev2), $submissionFileDao->getLatestRevisions(SUBMISSION_FILE_DAO_TEST_SUBMISSION_ID, null, $rangeInfo)); // // getAllRevisions() // // Retrieve all revisions of file 1. self::assertNull($submissionFileDao->getAllRevisions(null)); self::assertEquals(array($uniqueId1_2 => $file1Rev2, $uniqueId1_1 => $file1Rev1), $submissionFileDao->getAllRevisions($file1Rev1->getFileId(), SUBMISSION_FILE_PROOF)); self::assertEquals(array($uniqueId1_2 => $file1Rev2, $uniqueId1_1 => $file1Rev1), $submissionFileDao->getAllRevisions($file1Rev1->getFileId(), SUBMISSION_FILE_PROOF, SUBMISSION_FILE_DAO_TEST_SUBMISSION_ID)); self::assertEquals(array(), $submissionFileDao->getAllRevisions($file1Rev1->getFileId(), null, SUBMISSION_FILE_DAO_TEST_SUBMISSION_ID + 1)); self::assertEquals(array(), $submissionFileDao->getAllRevisions($file1Rev1->getFileId(), SUBMISSION_FILE_PROOF + 1, null)); // // getLatestRevisionsByAssocId() // // Retrieve the latest revisions by association. self::assertNull($submissionFileDao->getLatestRevisionsByAssocId(ASSOC_TYPE_REVIEW_ASSIGNMENT, null)); self::assertNull($submissionFileDao->getLatestRevisionsByAssocId(null, 5)); self::assertEquals(array($uniqueId1_2 => $file1Rev2), $submissionFileDao->getLatestRevisionsByAssocId(ASSOC_TYPE_REVIEW_ASSIGNMENT, 5)); self::assertEquals(array($uniqueId1_2 => $file1Rev2), $submissionFileDao->getLatestRevisionsByAssocId(ASSOC_TYPE_REVIEW_ASSIGNMENT, 5, null, SUBMISSION_FILE_PROOF)); self::assertEquals(array(), $submissionFileDao->getLatestRevisionsByAssocId(ASSOC_TYPE_REVIEW_ASSIGNMENT, 5, null, SUBMISSION_FILE_PROOF + 1)); // Retrieve all revisions by association. self::assertNull($submissionFileDao->getAllRevisionsByAssocId(ASSOC_TYPE_REVIEW_ASSIGNMENT, null)); self::assertNull($submissionFileDao->getAllRevisionsByAssocId(null, 5)); self::assertEquals(array($uniqueId1_2 => $file1Rev2, $uniqueId1_1 => $file1Rev1), $submissionFileDao->getAllRevisionsByAssocId(ASSOC_TYPE_REVIEW_ASSIGNMENT, 5)); self::assertEquals(array($uniqueId1_2 => $file1Rev2, $uniqueId1_1 => $file1Rev1), $submissionFileDao->getAllRevisionsByAssocId(ASSOC_TYPE_REVIEW_ASSIGNMENT, 5, SUBMISSION_FILE_PROOF)); self::assertEquals(array(), $submissionFileDao->getAllRevisionsByAssocId(ASSOC_TYPE_REVIEW_ASSIGNMENT, 5, SUBMISSION_FILE_PROOF + 1)); // // assignRevisionToReviewRound() // // Insert one more revision to test review round file assignments. $file1Rev3 = clone $file1Rev2; $file1Rev3->setRevision(3); self::assertEquals($file1Rev3, $submissionFileDao->insertObject($file1Rev3, $this->testFile)); $uniqueId1_3 = $file1Rev3->getFileIdAndRevision(); // Insert review round file assignments. $reviewRoundDao = DAORegistry::getDAO('ReviewRoundDAO'); $reviewRound = $reviewRoundDao->build(SUBMISSION_FILE_DAO_TEST_SUBMISSION_ID, WORKFLOW_STAGE_ID_INTERNAL_REVIEW, 1); $submissionFileDao->assignRevisionToReviewRound($file1Rev1->getFileId(), $file1Rev1->getRevision(), $reviewRound); $submissionFileDao->assignRevisionToReviewRound($file2Rev2->getFileId(), $file2Rev2->getRevision(), $reviewRound); // // getRevisionsByReviewRound() // // Retrieve assigned review round files by review stage id and round. self::assertEquals(array($uniqueId1_1 => $file1Rev1, $uniqueId2_2 => $file2Rev2), $submissionFileDao->getRevisionsByReviewRound($reviewRound)); // // getLatestRevisionsByReviewRound() // // Retrieve latest revisions of review round files self::assertEquals(array($uniqueId1_3 => $file1Rev3, $uniqueId2_2 => $file2Rev2), $submissionFileDao->getLatestRevisionsByReviewRound($reviewRound, null)); // // deleteAllRevisionsByReviewRound() // $submissionFileDao->deleteAllRevisionsByReviewRound($reviewRound->getId()); self::assertEquals(array(), $submissionFileDao->getRevisionsByReviewRound($reviewRound)); // // deleteRevision() and deleteRevisionById() // // Delete the first revision of file1. // NB: This implicitly tests deletion by ID. self::assertEquals(1, $submissionFileDao->deleteRevision($file1Rev1)); self::assertNull($submissionFileDao->getRevision($file1Rev1->getFileId(), $file1Rev1->getRevision())); // Re-insert the file for the next test. self::assertEquals($file1Rev1, $submissionFileDao->insertObject($file1Rev1, $this->testFile)); // // deleteLatestRevisionById() // // Delete the latest revision of file1. self::assertEquals(1, $submissionFileDao->deleteLatestRevisionById($file1Rev1->getFileId())); self::assertTrue(is_a($submissionFileDao->getRevision($file1Rev1->getFileId(), $file1Rev1->getRevision()), 'SubmissionArtworkFile')); self::assertNull($submissionFileDao->getRevision($file1Rev3->getFileId(), $file1Rev3->getRevision())); // // deleteAllRevisionsById() // // Delete all revisions of file1. self::assertEquals(2, $submissionFileDao->deleteAllRevisionsById($file1Rev1->getFileId())); self::assertTrue(is_a($submissionFileDao->getRevision($file2Rev1->getFileId(), $file2Rev1->getRevision()), 'SubmissionFile')); self::assertNull($submissionFileDao->getRevision($file1Rev1->getFileId(), $file1Rev1->getRevision())); self::assertNull($submissionFileDao->getRevision($file1Rev2->getFileId(), $file1Rev2->getRevision())); // Re-insert the files for the next test. self::assertEquals($file1Rev1, $submissionFileDao->insertObject($file1Rev1, $this->testFile)); self::assertEquals($file1Rev2, $submissionFileDao->insertObject($file1Rev2, $this->testFile)); // // deleteAllRevisionsByAssocId() // // Delete all revisions by assoc id. self::assertEquals(2, $submissionFileDao->deleteAllRevisionsByAssocId(ASSOC_TYPE_REVIEW_ASSIGNMENT, 5)); self::assertTrue(is_a($submissionFileDao->getRevision($file2Rev1->getFileId(), $file2Rev1->getRevision()), 'SubmissionFile')); self::assertNull($submissionFileDao->getRevision($file1Rev1->getFileId(), $file1Rev1->getRevision())); self::assertNull($submissionFileDao->getRevision($file1Rev2->getFileId(), $file1Rev2->getRevision())); // Re-insert the files for the next test. self::assertEquals($file1Rev1, $submissionFileDao->insertObject($file1Rev1, $this->testFile)); self::assertEquals($file1Rev2, $submissionFileDao->insertObject($file1Rev2, $this->testFile)); // // deleteAllRevisionsBySubmissionId() // // Delete all revisions by submission id. self::assertEquals(4, $submissionFileDao->deleteAllRevisionsBySubmissionId(SUBMISSION_FILE_DAO_TEST_SUBMISSION_ID)); self::assertNull($submissionFileDao->getRevision($file2Rev1->getFileId(), $file2Rev1->getRevision())); self::assertNull($submissionFileDao->getRevision($file1Rev1->getFileId(), $file1Rev1->getRevision())); self::assertNull($submissionFileDao->getRevision($file1Rev2->getFileId(), $file1Rev2->getRevision())); // // insertObject() for new revisions // // Test insertion of new revisions. // Create two files with different file ids. $file1Rev1->setFileId(null); $file1Rev1->setRevision(null); $file1Rev1 = $submissionFileDao->insertObject($file1Rev1, $this->testFile); $file1Rev2->setFileId(null); $file1Rev2->setRevision(null); $file1Rev2->setGenreId(SUBMISSION_FILE_DAO_TEST_DOC_GENRE_ID); $file1Rev2 = $submissionFileDao->insertObject($file1Rev2, $this->testFile); // Test the file ids, revisions and identifying fields. self::assertNotEquals($file1Rev1->getFileId(), $file1Rev2->getFileId()); self::assertNotEquals($file1Rev1->getGenreId(), $file1Rev2->getGenreId()); self::assertEquals(1, $submissionFileDao->getLatestRevisionNumber($file1Rev1->getFileId())); self::assertEquals(1, $submissionFileDao->getLatestRevisionNumber($file1Rev2->getFileId())); // // setAsLatestRevision() // // Now make the second file a revision of the first. $file1Rev2 = $submissionFileDao->setAsLatestRevision($file1Rev1->getFileId(), $file1Rev2->getFileId(), $file1Rev1->getSubmissionId(), $file1Rev1->getFileStage()); // And test the file ids, revisions, identifying fields and types again. self::assertEquals($file1Rev1->getFileId(), $file1Rev2->getFileId()); self::assertEquals($file1Rev1->getGenreId(), $file1Rev2->getGenreId()); self::assertEquals(1, $file1Rev1->getRevision()); self::assertEquals(2, $submissionFileDao->getLatestRevisionNumber($file1Rev1->getFileId())); $submissionFiles = $submissionFileDao->getAllRevisions($file1Rev1->getFileId()); self::assertEquals(2, count($submissionFiles)); foreach ($submissionFiles as $submissionFile) { /* @var $submissionFile SubmissionFile */ self::assertTrue(is_a($submissionFile, 'SubmissionArtworkFile')); } }
/** * Copy the user-facing (editable) metadata from another submission * file. * @param $submissionFile SubmissionFile */ function copyEditableMetadataFrom($submissionFile) { if (is_a($submissionFile, 'SupplementaryFile')) { $this->setCreator($submissionFile->getCreator(null), null); $this->setSubject($submissionFile->getSubject(null), null); $this->setDescription($submissionFile->getDescription(null), null); $this->setPublisher($submissionFile->getPublisher(null), null); $this->setSponsor($submissionFile->getSponsor(null), null); $this->setDateCreated($submissionFile->getDateCreated()); $this->setSource($submissionFile->getSource(null), null); $this->setLanguage($submissionFile->getLanguage()); } parent::copyEditableMetadataFrom($submissionFile); }
/** * Constructor. */ function PaperFile() { parent::SubmissionFile(); }