17 import(
'classes.handler.Handler');
18 import(
'lib.pkp.classes.core.JSONMessage');
26 parent::__construct();
28 array(ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR, ROLE_ID_ASSISTANT, ROLE_ID_REVIEWER, ROLE_ID_AUTHOR),
29 array(
'deleteFile',
'editMetadata',
'editMetadataTab',
'saveMetadata')
38 function authorize($request, &$args, $roleAssignments) {
39 import(
'lib.pkp.classes.security.authorization.SubmissionFileAccessPolicy');
42 return parent::authorize($request, $args, $roleAssignments);
55 if (!$request->checkCSRF())
return new JSONMessage(
false);
59 $stageId = $request->getUserVar(
'stageId');
61 assert(isset($submissionFile) && isset($submission));
64 $noteDao->deleteByAssoc(ASSOC_TYPE_SUBMISSION_FILE, $submissionFile->getFileId());
68 if ($submissionFile->getFileStage() == SUBMISSION_FILE_REVIEW_REVISION) {
69 import(
'lib.pkp.classes.submission.reviewRound.ReviewRoundDAO');
71 $reviewRound = $reviewRoundDao->getBySubmissionFileId($submissionFile->getFileId());
75 $this->
detachEntities($submissionFile, $submission->getId(), $stageId);
79 if (!$submissionFileDao->deleteRevisionById($submissionFile->getFileId(), $submissionFile->getRevision(), $submissionFile->getFileStage(), $submission->getId()))
return new JSONMessage(
false);
82 switch ($submissionFile->getFileStage()) {
83 case SUBMISSION_FILE_REVIEW_REVISION:
85 $authorUserIds = array();
87 $submitterAssignments = $stageAssignmentDao->getBySubmissionAndRoleId($submission->getId(), ROLE_ID_AUTHOR);
88 while ($assignment = $submitterAssignments->next()) {
89 $authorUserIds[] = $assignment->getUserId();
93 $notificationMgr->updateNotification(
95 array(NOTIFICATION_TYPE_PENDING_INTERNAL_REVISIONS, NOTIFICATION_TYPE_PENDING_EXTERNAL_REVISIONS),
97 ASSOC_TYPE_SUBMISSION,
103 $reviewRoundDao->updateStatus($reviewRound);
106 case SUBMISSION_FILE_COPYEDIT:
107 $notificationMgr->updateNotification(
109 array(NOTIFICATION_TYPE_ASSIGN_COPYEDITOR, NOTIFICATION_TYPE_AWAITING_COPYEDITS),
111 ASSOC_TYPE_SUBMISSION,
118 $fileManager = $this->
getFileManager($submission->getContextId(), $submission->getId());
119 $fileManager->deleteById($submissionFile->getFileId(), $submissionFile->getRevision());
122 $user = $request->getUser();
138 if ($submissionFile->getFileStage() == SUBMISSION_FILE_PROOF) {
140 $templateMgr->assign(
'submissionFile', $submissionFile);
141 $templateMgr->assign(
'stageId', $request->getUserVar(
'stageId'));
142 return new JSONMessage(
true, $templateMgr->fetch(
'controllers/api/file/editMetadata.tpl'));
157 $stageId = $request->getUserVar(
'stageId');
158 $metadataForm = $submissionFile->getMetadataForm($stageId, $reviewRound);
159 $metadataForm->setShowButtons(
true);
160 return new JSONMessage(
true, $metadataForm->fetch($request));
174 $stageId = $request->getUserVar(
'stageId');
175 $metadataForm = $submissionFile->getMetadataForm($stageId, $reviewRound);
176 $metadataForm->readInputData();
177 if ($metadataForm->validate()) {
178 $metadataForm->execute();
179 $submissionFile = $metadataForm->getSubmissionFile();
182 $authorUserIds = array();
184 $submitterAssignments = $stageAssignmentDao->getBySubmissionAndRoleId($submission->getId(), ROLE_ID_AUTHOR);
185 while ($assignment = $submitterAssignments->next()) {
186 $authorUserIds[] = $assignment->getUserId();
191 $notificationMgr->updateNotification(
195 ASSOC_TYPE_SUBMISSION,
202 $context = $request->getContext();
205 $submitterAssignments = $stageAssignmentDao->getBySubmissionAndRoleId($submission->getId(), ROLE_ID_AUTHOR);
206 while ($assignment = $submitterAssignments->next()) {
207 $notificationDao->deleteByAssoc(ASSOC_TYPE_SUBMISSION, $submission->getId(), $assignment->getUserId(), NOTIFICATION_TYPE_EDITOR_DECISION_PENDING_REVISIONS, $context->getId());
212 import(
'lib.pkp.classes.log.SubmissionLog');
213 import(
'classes.log.SubmissionEventLogEntry');
214 import(
'lib.pkp.classes.log.SubmissionFileEventLogEntry');
215 $user = $request->getUser();
217 $request, $submission,
218 $submissionFile->getRevision()>1?SUBMISSION_LOG_FILE_REVISION_UPLOAD:SUBMISSION_LOG_FILE_UPLOAD,
219 $submissionFile->getRevision()>1?
'submission.event.fileRevised':
'submission.event.fileUploaded',
220 array(
'fileStage' => $submissionFile->getFileStage(),
'fileId' => $submissionFile->getFileId(),
'fileRevision' => $submissionFile->getRevision(),
'originalFileName' => $submissionFile->getOriginalFileName(),
'submissionId' => $submissionFile->getSubmissionId(),
'username' => $user->getUsername(),
'name' => $submissionFile->getLocalizedName())
225 $articleSearchIndex->submissionFilesChanged($submission);
226 $articleSearchIndex->submissionChangesFinished();
230 return new JSONMessage(
true, $metadataForm->fetch($request));
248 import(
'lib.pkp.classes.file.SubmissionFileManager');
260 abstract function logDeletionEvent($request, $submission, $submissionFile, $user);
267 return array(NOTIFICATION_TYPE_PENDING_EXTERNAL_REVISIONS);
277 switch ($submissionFile->getFileStage()) {
278 case SUBMISSION_FILE_REVIEW_FILE:
279 case SUBMISSION_FILE_REVIEW_ATTACHMENT:
280 case SUBMISSION_FILE_REVIEW_REVISION:
283 $submissionFileDao->deleteReviewRoundAssignment($submissionId, $stageId, $submissionFile->getFileId(), $submissionFile->getRevision());