28 import(
'lib.pkp.classes.file.BaseSubmissionFileManager');
37 parent::__construct(
$contextId, $submissionId);
54 $revisedFileId =
null, $genreId =
null, $assocType =
null, $assocId =
null) {
56 $fileName, $fileStage, $uploaderUserId,
57 $revisedFileId, $genreId, $assocType, $assocId
71 $revisedFileId =
null, $genreId =
null, $assocType =
null, $assocId =
null) {
73 $filePath, $fileStage, $copyUserId,
74 $revisedFileId, $genreId, $assocType, $assocId
85 $submissionFile = $this->
_getFile($fileId, $revision);
86 if (isset($submissionFile)) {
87 return parent::deleteByPath($submissionFile->getfilePath());
101 function downloadById($fileId, $revision =
null, $inline =
false, $filename =
null) {
103 $submissionFile = $this->
_getFile($fileId, $revision);
104 if (isset($submissionFile)) {
106 if ($submissionFile->getSubmissionId() != $this->getSubmissionId())
fatalError(
'Invalid file id!');
111 $filePath = $submissionFile->getFilePath();
112 $mediaType = $submissionFile->getFileType();
113 if(!isset($filename)) $filename = $submissionFile->getClientFileName();
114 $returner = parent::downloadByPath($filePath, $mediaType, $inline, $filename);
127 $session = $sessionManager->getUserSession();
128 $user = $session->getUser();
129 if (is_a($user,
'User')) {
131 $viewsDao->recordView(
132 ASSOC_TYPE_SUBMISSION_FILE, $submissionFile->getFileIdAndRevision(),
147 function copyFileToFileStage($sourceFileId, $sourceRevision, $newFileStage, $destFileId =
null, $viewable =
false) {
148 if (
HookRegistry::call(
'SubmissionFileManager::copyFileToFileStage', array(&$sourceFileId, &$sourceRevision, &$newFileStage, &$destFileId, &$result)))
return $result;
151 $sourceFile = $submissionFileDao->getRevision($sourceFileId, $sourceRevision);
152 if (!$sourceFile)
return false;
155 $destFile = $sourceFile;
158 $sourcePath = $sourceFile->getFilePath();
161 if ($destFileId !=
null) {
162 $currentRevision = $submissionFileDao->getLatestRevisionNumber($destFileId);
163 $revision = $currentRevision + 1;
164 $destFile->setFileId($destFileId);
166 $destFile->setFileId(
null);
171 $destFile->setRevision($revision);
172 $destFile->setFileStage($newFileStage);
174 $destFile->setViewable($viewable);
176 $destFile->setSourceFileId($sourceFileId);
177 $destFile->setSourceRevision($sourceRevision);
180 $destPath = $destFile->getFilePath();
183 $insertedFile = $submissionFileDao->insertObject($destFile, $sourcePath);
185 return $insertedFile ? array($insertedFile->getFileId(), $insertedFile->getRevision()) :
null;
203 $revisedFileId =
null, $genreId =
null, $assocType =
null, $assocId =
null) {
213 if (is_null($submissionFile))
return null;
217 assert($fileType !==
false);
218 $submissionFile->setFileType($fileType);
222 assert($originalFileName !==
false);
223 $submissionFile->setOriginalFileName($this->
truncateFileName($originalFileName));
226 $submissionFile->setUploaderUserId($uploaderUserId);
231 return $submissionFileDao->insertObject($submissionFile, $fileName,
true);
246 $revisedFileId =
null, $genreId =
null, $assocType =
null, $assocId =
null) {
249 if (!$this->
fileExists($filePath))
return null;
253 if (is_null($submissionFile))
return null;
257 assert($fileType !==
false);
258 $submissionFile->setFileType($fileType);
261 $originalFileName = basename($filePath);
262 assert($originalFileName !==
false);
263 $submissionFile->setOriginalFileName($this->
truncateFileName($originalFileName));
266 $submissionFile->setUploaderUserId($copyUserId);
270 return $submissionFileDao->insertObject($submissionFile, $filePath,
false);
283 function _instantiateSubmissionFile($sourceFilePath, $fileStage, $revisedFileId =
null, $genreId =
null, $assocType =
null, $assocId =
null) {
292 if ($fileStage != SUBMISSION_FILE_REVIEW_ATTACHMENT) {
293 assert(isset($genreId) || isset($revisedFileId));
294 if (!$genreId || $revisedFileId) {
296 $revisedFile = $submissionFileDao->getLatestRevision($revisedFileId,
null, $this->
getSubmissionId());
297 if (!is_a($revisedFile,
'SubmissionFile'))
return null;
303 if ($revisedFile && !$genreId) {
304 $genreId = $revisedFile->getGenreId();
308 $submissionFile = $submissionFileDao->newDataObjectByGenreId($genreId);
313 $submission = $submissionDao->getById($submissionFile->getSubmissionId());
314 $submissionFile->setSubmissionLocale($submission->getLocale());
317 if ($revisedFileId) {
320 if ($revisedFile->getSubmissionId() != $this->getSubmissionId())
return null;
324 if(!is_null($fileStage) && $fileStage !== $revisedFile->getFileStage()) {
325 $submissionFile->setSourceFileId($revisedFileId);
326 $submissionFile->setSourceRevision($revisedFile->getRevision());
327 $submissionFile->setRevision(1);
328 $submissionFile->setViewable(
false);
331 $submissionFile->setFileId($revisedFileId);
332 $submissionFile->setRevision($revisedFile->getRevision()+1);
335 $fileStage = (int)$revisedFile->getFileStage();
338 if(!is_null($assocType) && $assocType !== $revisedFile->getAssocType())
fatalError(
'Invalid submission file assoc type!');
339 $assocType = (int)$revisedFile->getAssocType();
342 if (!is_null($assocId) && $assocId !== $revisedFile->getAssocId())
fatalError(
'Invalid submission file assoc ID!');
343 $assocId = (int)$revisedFile->getAssocId();
346 $submissionFile->setViewable($revisedFile->getViewable());
350 $submissionFile->copyEditableMetadataFrom($revisedFile);
353 $submissionFile->setRevision(1);
354 $submissionFile->setViewable($fileStage == SUBMISSION_FILE_SUBMISSION?
true:
false);
358 $submissionFile->setFileSize(filesize($sourceFilePath));
361 $submissionFile->setFileStage($fileStage);
364 $submissionFile->setGenreId($genreId);
371 if(isset($assocId)) {
372 assert(isset($assocType));
373 $submissionFile->setAssocType($assocType);
374 $submissionFile->setAssocId($assocId);
378 return $submissionFile;
391 return $submissionFileDao->getRevision($fileId, $revision);
393 return $submissionFileDao->getLatestRevision($fileId);