Files
OSJ/lib/pkp/controllers/grid/files/review/ManageReviewFilesGridHandler.php
CHIEFSOFT\ameye df3a033196 first commit
2024-06-08 17:09:23 -04:00

107 lines
3.6 KiB
PHP

<?php
/**
* @file controllers/grid/files/review/ManageReviewFilesGridHandler.php
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @class ManageReviewFilesGridHandler
*
* @ingroup controllers_grid_files_review
*
* @brief Handle the editor review file selection grid (selects which files to send to review or to next review round)
*/
namespace PKP\controllers\grid\files\review;
use APP\core\Application;
use APP\notification\NotificationManager;
use PKP\controllers\grid\files\FilesGridCapabilities;
use PKP\controllers\grid\files\review\form\ManageReviewFilesForm;
use PKP\controllers\grid\files\SelectableSubmissionFileListCategoryGridHandler;
use PKP\core\JSONMessage;
use PKP\core\PKPRequest;
use PKP\notification\PKPNotification;
use PKP\security\Role;
use PKP\submissionFile\SubmissionFile;
class ManageReviewFilesGridHandler extends SelectableSubmissionFileListCategoryGridHandler
{
/** @var array */
public $_selectionArgs;
/**
* Constructor
*/
public function __construct()
{
$stageId = (int) Application::get()->getRequest()->getUserVar('stageId');
$fileStage = $stageId === WORKFLOW_STAGE_ID_INTERNAL_REVIEW ? SubmissionFile::SUBMISSION_FILE_INTERNAL_REVIEW_FILE : SubmissionFile::SUBMISSION_FILE_REVIEW_FILE;
// Pass in null stageId to be set in initialize from request var.
parent::__construct(
new ReviewCategoryGridDataProvider($fileStage),
null,
FilesGridCapabilities::FILE_GRID_ADD | FilesGridCapabilities::FILE_GRID_VIEW_NOTES
);
$this->addRoleAssignment(
[Role::ROLE_ID_MANAGER, Role::ROLE_ID_SITE_ADMIN, Role::ROLE_ID_SUB_EDITOR, Role::ROLE_ID_ASSISTANT],
['fetchGrid', 'fetchCategory', 'fetchRow', 'updateReviewFiles']
);
// Set the grid title.
$this->setTitle('reviewer.submission.reviewFiles');
}
//
// Public handler methods
//
/**
* Save 'manage review files' form.
*
* @param array $args
* @param PKPRequest $request
*
* @return JSONMessage JSON object
*/
public function updateReviewFiles($args, $request)
{
$submission = $this->getSubmission();
$manageReviewFilesForm = new ManageReviewFilesForm($submission->getId(), $this->getRequestArg('stageId'), $this->getRequestArg('reviewRoundId'));
$manageReviewFilesForm->readInputData();
if ($manageReviewFilesForm->validate()) {
$dataProvider = $this->getDataProvider();
$manageReviewFilesForm->execute(
$this->getGridCategoryDataElements($request, $this->getStageId())
);
$this->setupTemplate($request);
$user = $request->getUser();
$notificationManager = new NotificationManager();
$notificationManager->createTrivialNotification($user->getId(), PKPNotification::NOTIFICATION_TYPE_SUCCESS, ['contents' => __('notification.updatedReviewFiles')]);
// Let the calling grid reload itself
return \PKP\db\DAO::getDataChangedEvent();
} else {
return new JSONMessage(false);
}
}
//
// Extended methods from CategoryGridHandler.
//
/**
* @copydoc CategoryGridHandler::getRequestArgs()
*/
public function getRequestArgs()
{
$stageId = $this->getAuthorizedContextObject(Application::ASSOC_TYPE_WORKFLOW_STAGE);
return array_merge(['stageId' => $stageId], parent::getRequestArgs());
}
}