示例#1
0
 /**
  * @copydoc SubmissionFile::copyEditableMetadataForm
  */
 function copyEditableMetadataFrom($submissionFile)
 {
     if (is_a($submissionFile, 'MonographFile') || is_a($submissionFile, 'MonographArtworkFile')) {
         $this->setChapterId($submissionFile->getChapterId());
     }
     parent::copyEditableMetadataFrom($submissionFile);
 }
示例#2
0
 /**
  * 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()));
 }
示例#4
0
    /**
     * 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);
 }
示例#7
0
 /**
  * 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);
 }
示例#10
0
 /**
  * Constructor.
  */
 function PaperFile()
 {
     parent::SubmissionFile();
 }