17 import(
'lib.pkp.classes.form.Form');
18 import(
'lib.pkp.classes.submission.SubmissionFile');
42 function __construct($request, $template, $submissionId, $stageId, $fileStage,
43 $revisionOnly =
false, $reviewRound =
null, $revisedFileId =
null, $assocType =
null, $assocId =
null) {
46 if ( !is_numeric($submissionId) || $submissionId <= 0 ||
47 !is_numeric($fileStage) || $fileStage <= 0 ||
48 !is_numeric($stageId) || $stageId < 1 || $stageId > 5 ||
49 isset($assocType) !== isset($assocId)) {
54 parent::__construct($template);
55 $this->_stageId = $stageId;
58 $this->_reviewRound =& $reviewRound;
59 }
else if ($assocType == ASSOC_TYPE_REVIEW_ASSIGNMENT && !$reviewRound) {
62 $reviewAssignment = $reviewAssignmentDao->getById((
int) $assocId);
63 if ($reviewAssignment->getDateCompleted())
fatalError(
'Review already completed!');
67 $this->_reviewRound = $reviewRoundDao->getById($reviewAssignment->getReviewRoundId());
68 }
else if (!$assocType && !$reviewRound) {
72 $this->
setData(
'fileStage', (
int)$fileStage);
73 $this->
setData(
'submissionId', (
int)$submissionId);
74 $this->
setData(
'revisionOnly', (
boolean)$revisionOnly);
75 $this->
setData(
'revisedFileId', $revisedFileId ? (
int)$revisedFileId :
null);
76 $this->
setData(
'reviewRoundId', $reviewRound?$reviewRound->getId():
null);
77 $this->
setData(
'assocType', $assocType ? (
int)$assocType :
null);
78 $this->
setData(
'assocId', $assocId ? (
int)$assocId :
null);
109 return $this->
getData(
'revisedFileId') ? (int)$this->
getData(
'revisedFileId') :
null;
134 if (is_null($this->_submissionFiles)) {
136 if ($this->
getStageId() == WORKFLOW_STAGE_ID_INTERNAL_REVIEW || $this->
getStageId() == WORKFLOW_STAGE_ID_EXTERNAL_REVIEW) {
138 if (!$this->
getData(
'fileStage') == SUBMISSION_FILE_QUERY && !is_a($this->
getReviewRound(),
'ReviewRound')) assert(
false);
140 if (!in_array($this->
getData(
'fileStage'), array(SUBMISSION_FILE_SUBMISSION, SUBMISSION_FILE_REVIEW_FILE, SUBMISSION_FILE_REVIEW_ATTACHMENT, SUBMISSION_FILE_REVIEW_REVISION, SUBMISSION_FILE_QUERY, SUBMISSION_FILE_DEPENDENT, SUBMISSION_FILE_ATTACHMENT)))
fatalError(
'Invalid file stage!');
145 if ($this->
getData(
'fileStage') == SUBMISSION_FILE_REVIEW_ATTACHMENT) {
146 $this->_submissionFiles = array();
147 } elseif ($reviewRound) {
149 $this->_submissionFiles = $submissionFileDao->getRevisionsByReviewRound($reviewRound);
152 $this->_submissionFiles = array();
157 $this->_submissionFiles = $submissionFileDao->getLatestRevisions(
160 $this->_submissionFiles = $submissionFileDao->getLatestRevisionsByAssocId(
180 $submissionFiles = array();
181 foreach ($allSubmissionFiles as $submissionFile) {
183 if ($uploadedFile && $uploadedFile->getFileId() == $submissionFile->getFileId())
continue;
185 ($submissionFile->getFileStage() == SUBMISSION_FILE_REVIEW_ATTACHMENT || $submissionFile->getFileStage() == SUBMISSION_FILE_REVIEW_FILE) &&
186 $stageAssignmentDao->getBySubmissionAndRoleId($submissionFile->getSubmissionId(), ROLE_ID_AUTHOR, $this->getStageId(), $user->getId())
191 $submissionFiles[] = $submissionFile;
193 return $submissionFiles;
211 function fetch($request, $template =
null, $display =
false) {
217 if (is_a($reviewRound,
'ReviewRound')) {
218 $this->
setData(
'reviewRoundId', $reviewRound->getId());
222 $uploadedFile = $this->
getData(
'uploadedFile');
224 $user = $request->getUser();
227 $submissionFileOptions = array();
228 $currentSubmissionFileGenres = array();
232 $foundRevisedFile =
false;
235 foreach ((array) $submissionFiles as $submissionFile) {
238 if ($revisedFileId && $revisedFileId == $submissionFile->getFileId()) {
240 $this->
setData(
'revisedFileName', $submissionFile->getOriginalFileName());
241 $this->
setData(
'genreId', $submissionFile->getGenreId());
242 $foundRevisedFile =
true;
248 $fileName = $submissionFile->getLocalizedName() !=
'' ? $submissionFile->getLocalizedName() : __(
'common.untitled');
249 if ($submissionFile->getRevision() > 1) $fileName .=
' (' . $submissionFile->getRevision() .
')';
252 if (array_key_exists($submissionFile->getSourceFileId(), $submissionFileOptions)) {
253 unset($submissionFileOptions[$submissionFile->getSourceFileId()]);
256 $submissionFileOptions[$submissionFile->getFileId()] = $fileName;
257 $currentSubmissionFileGenres[$submissionFile->getFileId()] = $submissionFile->getGenreId();
259 $lastSubmissionFile = $submissionFile;
263 if (
count($submissionFileOptions) == 1 && $this->
getData(
'revisionOnly')) {
265 $this->
setData(
'revisedFileId', $lastSubmissionFile->getFileId());
266 $this->
setData(
'revisedFileName', $lastSubmissionFile->getOriginalFileName());
267 $this->
setData(
'genreId', $lastSubmissionFile->getGenreId());
271 if (
count($submissionFileOptions) && !$this->
getData(
'revisionOnly')) {
272 $submissionFileOptions = array(
'' => __(
'submission.upload.uploadNewFile')) + $submissionFileOptions;
277 if ($revisedFileId && !$foundRevisedFile)
fatalError(
'Invalid revised file id!');
280 $this->
setData(
'currentSubmissionFileGenres', $currentSubmissionFileGenres);
281 $this->
setData(
'submissionFileOptions', $submissionFileOptions);
284 $context = $request->getContext();
285 if ($context->getData(
'showEnsuringLink') && in_array($this->
getStageId(), array(WORKFLOW_STAGE_ID_SUBMISSION, WORKFLOW_STAGE_ID_INTERNAL_REVIEW, WORKFLOW_STAGE_ID_EXTERNAL_REVIEW))) {
286 import(
'lib.pkp.classes.linkAction.request.ConfirmationModal');
290 __(
'review.blindPeerReview'),
291 __(
'review.ensuringBlindReview')),
292 __(
'review.ensuringBlindReview'));
295 $templateMgr->assign(
'ensuringLink', $ensuringLink);
298 return parent::fetch($request, $template, $display);