HOME


Mini Shell 1.0
DIR: /home/dhnidqcz/journal.africaprag.org/lib/pkp/controllers/api/file/linkAction/
Upload File :
Current File : /home/dhnidqcz/journal.africaprag.org/lib/pkp/controllers/api/file/linkAction/AddFileLinkAction.php
<?php

/**
 * @file controllers/api/file/linkAction/AddFileLinkAction.php
 *
 * Copyright (c) 2014-2021 Simon Fraser University
 * Copyright (c) 2003-2021 John Willinsky
 * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
 *
 * @class AddFileLinkAction
 *
 * @ingroup controllers_api_file_linkAction
 *
 * @brief An action to add a submission file.
 */

namespace PKP\controllers\api\file\linkAction;

use APP\core\Request;
use PKP\submissionFile\SubmissionFile;

class AddFileLinkAction extends BaseAddFileLinkAction
{
    /**
     * Constructor
     *
     * @param Request $request
     * @param int $submissionId The submission the file should be
     *  uploaded to.
     * @param int $stageId The workflow stage in which the file
     *  uploader is being instantiated (one of the WORKFLOW_STAGE_ID_*
     *  constants).
     * @param array $uploaderRoles The ids of all roles allowed to upload
     *  in the context of this action.
     * @param int $fileStage The file stage the file should be
     *  uploaded to (one of the SubmissionFile::SUBMISSION_FILE_* constants).
     * @param int $assocType The type of the element the file should
     *  be associated with (one fo the Application::ASSOC_TYPE_* constants).
     * @param int $assocId The id of the element the file should be
     *  associated with.
     * @param int $reviewRoundId The current review round ID (if any)
     * @param int $revisedFileId Revised file ID, if any
     * @param bool $dependentFilesOnly whether to only include dependent
     *  files in the Genres dropdown.
     * @param int $queryId The query id. Use when the assoc details point
     *  to a note
     */
    public function __construct(
        $request,
        $submissionId,
        $stageId,
        $uploaderRoles,
        $fileStage,
        $assocType = null,
        $assocId = null,
        $reviewRoundId = null,
        $revisedFileId = null,
        $dependentFilesOnly = false,
        $queryId = null
    ) {
        // Create the action arguments array.
        $actionArgs = ['fileStage' => $fileStage, 'reviewRoundId' => $reviewRoundId];
        if (is_numeric($assocType) && is_numeric($assocId)) {
            $actionArgs['assocType'] = (int)$assocType;
            $actionArgs['assocId'] = (int)$assocId;
        }
        if ($revisedFileId) {
            $actionArgs['revisedFileId'] = $revisedFileId;
            $actionArgs['revisionOnly'] = true;
        }
        if ($dependentFilesOnly) {
            $actionArgs['dependentFilesOnly'] = true;
        }

        if ($queryId) {
            $actionArgs['queryId'] = $queryId;
        }

        // Identify text labels based on the file stage.
        $textLabels = AddFileLinkAction::_getTextLabels($fileStage);

        // Call the parent class constructor.
        parent::__construct(
            $request,
            $submissionId,
            $stageId,
            $uploaderRoles,
            $actionArgs,
            __($textLabels['wizardTitle']),
            __($textLabels['buttonLabel'])
        );
    }


    //
    // Private methods
    //
    /**
     * Static method to return text labels
     * for upload to different file stages.
     *
     * @param int $fileStage One of the
     *  SubmissionFile::SUBMISSION_FILE_* constants.
     *
     * @return array
     */
    public static function _getTextLabels($fileStage)
    {
        static $textLabels = [
            SubmissionFile::SUBMISSION_FILE_SUBMISSION => [
                'wizardTitle' => 'submission.submit.uploadSubmissionFile',
                'buttonLabel' => 'submission.addFile'
            ],
            SubmissionFile::SUBMISSION_FILE_REVIEW_FILE => [
                'wizardTitle' => 'editor.submissionReview.uploadFile',
                'buttonLabel' => 'editor.submissionReview.uploadFile'
            ],
            SubmissionFile::SUBMISSION_FILE_INTERNAL_REVIEW_FILE => [
                'wizardTitle' => 'editor.submissionReview.uploadFile',
                'buttonLabel' => 'editor.submissionReview.uploadFile'
            ],
            SubmissionFile::SUBMISSION_FILE_REVIEW_ATTACHMENT => [
                'wizardTitle' => 'editor.submissionReview.uploadAttachment',
                'buttonLabel' => 'editor.submissionReview.uploadAttachment'
            ],
            SubmissionFile::SUBMISSION_FILE_ATTACHMENT => [
                'wizardTitle' => 'editor.submissionReview.uploadFile',
                'buttonLabel' => 'submission.addFile'
            ],
            SubmissionFile::SUBMISSION_FILE_REVIEW_REVISION => [
                'wizardTitle' => 'editor.submissionReview.uploadFile',
                'buttonLabel' => 'submission.addFile'
            ],
            SubmissionFile::SUBMISSION_FILE_INTERNAL_REVIEW_REVISION => [
                'wizardTitle' => 'editor.submissionReview.uploadFile',
                'buttonLabel' => 'submission.addFile'
            ],
            SubmissionFile::SUBMISSION_FILE_FINAL => [
                'wizardTitle' => 'submission.upload.finalDraft',
                'buttonLabel' => 'submission.addFile'
            ],
            SubmissionFile::SUBMISSION_FILE_COPYEDIT => [
                'wizardTitle' => 'submission.upload.copyeditedVersion',
                'buttonLabel' => 'submission.addFile'
            ],
            SubmissionFile::SUBMISSION_FILE_PRODUCTION_READY => [
                'wizardTitle' => 'submission.upload.productionReady',
                'buttonLabel' => 'submission.addFile'
            ],
            SubmissionFile::SUBMISSION_FILE_PROOF => [
                'wizardTitle' => 'submission.upload.proof',
                'buttonLabel' => 'submission.changeFile'
            ],
            SubmissionFile::SUBMISSION_FILE_DEPENDENT => [
                'wizardTitle' => 'submission.upload.dependent',
                'buttonLabel' => 'submission.addFile'
            ],
            SubmissionFile::SUBMISSION_FILE_QUERY => [
                'wizardTitle' => 'submission.upload.query',
                'buttonLabel' => 'submission.addFile'
            ],
        ];

        assert(isset($textLabels[$fileStage]));
        return $textLabels[$fileStage];
    }
}