/** * Designates the original file the review version. * @param $authorSubmission object * @param $designate boolean */ function designateReviewVersion($authorSubmission, $designate = false) { import('classes.file.ArticleFileManager'); $articleFileManager = new ArticleFileManager($authorSubmission->getId()); $authorSubmissionDao =& DAORegistry::getDAO('AuthorSubmissionDAO'); if ($designate && !HookRegistry::call('AuthorAction::designateReviewVersion', array(&$authorSubmission))) { $submissionFile =& $authorSubmission->getSubmissionFile(); if ($submissionFile) { $reviewFileId = $articleFileManager->copyToReviewFile($submissionFile->getFileId()); $authorSubmission->setReviewFileId($reviewFileId); $authorSubmissionDao->updateAuthorSubmission($authorSubmission); $sectionEditorSubmissionDao =& DAORegistry::getDAO('SectionEditorSubmissionDAO'); } } }
/** * Resubmit the file for review. * @param $sectionEditorSubmission object * @param $fileId int * @param $revision int * TODO: SECURITY! */ function resubmitFile($sectionEditorSubmission, $fileId, $revision, $request) { import('classes.file.ArticleFileManager'); $articleFileManager = new ArticleFileManager($sectionEditorSubmission->getId()); $sectionEditorSubmissionDao =& DAORegistry::getDAO('SectionEditorSubmissionDAO'); $articleFileDao =& DAORegistry::getDAO('ArticleFileDAO'); $user =& $request->getUser(); if (!HookRegistry::call('SectionEditorAction::resubmitFile', array(&$sectionEditorSubmission, &$fileId, &$revision))) { // Increment the round $currentRound = $sectionEditorSubmission->getCurrentRound(); $sectionEditorSubmission->setCurrentRound($currentRound + 1); $sectionEditorSubmission->stampStatusModified(); // Copy the file from the editor decision file folder to the review file folder $newFileId = $articleFileManager->copyToReviewFile($fileId, $revision, $sectionEditorSubmission->getReviewFileId()); $newReviewFile = $articleFileDao->getArticleFile($newFileId); $newReviewFile->setRound($sectionEditorSubmission->getCurrentRound()); $articleFileDao->updateArticleFile($newReviewFile); // Copy the file from the editor decision file folder to the next-round editor file // $editorFileId may or may not be null after assignment $editorFileId = $sectionEditorSubmission->getEditorFileId() != null ? $sectionEditorSubmission->getEditorFileId() : null; // $editorFileId definitely will not be null after assignment $editorFileId = $articleFileManager->copyToEditorFile($newFileId, null, $editorFileId); $newEditorFile = $articleFileDao->getArticleFile($editorFileId); $newEditorFile->setRound($sectionEditorSubmission->getCurrentRound()); $articleFileDao->updateArticleFile($newEditorFile); // The review revision is the highest revision for the review file. $reviewRevision = $articleFileDao->getRevisionNumber($newFileId); $sectionEditorSubmission->setReviewRevision($reviewRevision); $sectionEditorSubmissionDao->updateSectionEditorSubmission($sectionEditorSubmission); // Now, reassign all reviewers that submitted a review for this new round of reviews. $previousRound = $sectionEditorSubmission->getCurrentRound() - 1; foreach ($sectionEditorSubmission->getReviewAssignments($previousRound) as $reviewAssignment) { if ($reviewAssignment->getRecommendation() !== null && $reviewAssignment->getRecommendation() !== '') { // Then this reviewer submitted a review. SectionEditorAction::addReviewer($sectionEditorSubmission, $reviewAssignment->getReviewerId(), $sectionEditorSubmission->getCurrentRound(), $request); } } // Add log import('classes.article.log.ArticleLog'); ArticleLog::logEvent($request, $sectionEditorSubmission, ARTICLE_LOG_REVIEW_RESUBMIT, 'log.review.resubmit'); } }