PKPManageFileApiHandler::deleteFile PHP Méthode

deleteFile() public méthode

Delete a file or revision
public deleteFile ( $args, $request ) : JSONMessage
$args array
$request Request
Résultat JSONMessage JSON object
    function deleteFile($args, $request)
    {
        if (!$request->checkCSRF()) {
            return new JSONMessage(false);
        }
        $submissionFile = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION_FILE);
        $submission = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION);
        $stageId = $request->getUserVar('stageId');
        if ($stageId) {
            // validate the stage id.
            $stageAssignmentDao = DAORegistry::getDAO('StageAssignmentDAO');
            $user = $request->getUser();
            $stageAssignments = $stageAssignmentDao->getBySubmissionAndStageId($submission->getId(), $stageId, null, $user->getId());
        }
        assert(isset($submissionFile) && isset($submission));
        // Should have been validated already
        $noteDao = DAORegistry::getDAO('NoteDAO');
        $noteDao->deleteByAssoc(ASSOC_TYPE_SUBMISSION_FILE, $submissionFile->getFileId());
        // Delete the submission file.
        $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO');
        /* @var $submissionFileDao SubmissionFileDAO */
        // check to see if we need to remove review_round_file associations
        if (!$stageAssignments->wasEmpty()) {
            $submissionFileDao->deleteReviewRoundAssignment($submission->getId(), $stageId, $submissionFile->getFileId(), $submissionFile->getRevision());
        }
        if (!$submissionFileDao->deleteRevisionById($submissionFile->getFileId(), $submissionFile->getRevision(), $submissionFile->getFileStage(), $submission->getId())) {
            return new JSONMessage(false);
        }
        $notificationMgr = new NotificationManager();
        switch ($submissionFile->getFileStage()) {
            case SUBMISSION_FILE_REVIEW_REVISION:
                // Get a list of author user IDs
                $authorUserIds = array();
                $stageAssignmentDao = DAORegistry::getDAO('StageAssignmentDAO');
                $submitterAssignments = $stageAssignmentDao->getBySubmissionAndRoleId($submission->getId(), ROLE_ID_AUTHOR);
                while ($assignment = $submitterAssignments->next()) {
                    $authorUserIds[] = $assignment->getUserId();
                }
                // Update the notifications
                $notificationMgr->updateNotification($request, array(NOTIFICATION_TYPE_PENDING_INTERNAL_REVISIONS, NOTIFICATION_TYPE_PENDING_EXTERNAL_REVISIONS), $authorUserIds, ASSOC_TYPE_SUBMISSION, $submission->getId());
                $reviewRoundDao = DAORegistry::getDAO('ReviewRoundDAO');
                $lastReviewRound = $reviewRoundDao->getLastReviewRoundBySubmissionId($submission->getId(), $stageId);
                $notificationMgr->updateNotification($request, array(NOTIFICATION_TYPE_ALL_REVISIONS_IN), null, ASSOC_TYPE_REVIEW_ROUND, $lastReviewRound->getId());
                break;
            case SUBMISSION_FILE_COPYEDIT:
                $notificationMgr->updateNotification($request, array(NOTIFICATION_TYPE_ASSIGN_COPYEDITOR, NOTIFICATION_TYPE_AWAITING_COPYEDITS), null, ASSOC_TYPE_SUBMISSION, $submission->getId());
                break;
        }
        $this->removeFileIndex($submission, $submissionFile);
        $fileManager = $this->getFileManager($submission->getContextId(), $submission->getId());
        $fileManager->deleteFile($submissionFile->getFileId(), $submissionFile->getRevision());
        $this->setupTemplate($request);
        $user = $request->getUser();
        if (!$request->getUserVar('suppressNotification')) {
            NotificationManager::createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array('contents' => __('notification.removedFile')));
        }
        $this->logDeletionEvent($request, $submission, $submissionFile, $user);
        return DAO::getDataChangedEvent();
    }