| Server IP : 195.134.90.114 / Your IP : 216.73.216.86 Web Server : Apache/2.4.58 System : Linux nepub 6.8.0-88-generic #89-Ubuntu SMP PREEMPT_DYNAMIC Sat Oct 11 01:02:46 UTC 2025 x86_64 User : www-data ( 33) PHP Version : 8.2.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/html/public_html/lib/pkp/classes/controllers/tab/workflow/ |
Upload File : |
<?php
/**
* @file controllers/tab/workflow/PKPReviewRoundTabHandler.inc.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 ReviewRoundTabHandler
* @ingroup controllers_tab_workflow
*
* @brief Handle AJAX operations for review round tabs on review stages workflow pages.
*/
// Import the base Handler.
import('classes.handler.Handler');
import('lib.pkp.classes.core.JSONMessage');
class PKPReviewRoundTabHandler extends Handler {
//
// Extended methods from Handler
//
/**
* @copydoc PKPHandler::authorize()
*/
function authorize($request, &$args, $roleAssignments) {
// We need a review round id in request.
import('lib.pkp.classes.security.authorization.internal.ReviewRoundRequiredPolicy');
$this->addPolicy(new ReviewRoundRequiredPolicy($request, $args));
return parent::authorize($request, $args, $roleAssignments);
}
/**
* JSON fetch the external review round info (tab).
* @param $args array
* @param $request PKPRequest
* @return JSONMessage JSON object
*/
function externalReviewRound($args, $request) {
return $this->_reviewRound($args, $request);
}
/**
* @see PKPHandler::setupTemplate
*/
function setupTemplate($request) {
AppLocale::requireComponents(LOCALE_COMPONENT_APP_EDITOR);
parent::setupTemplate($request);
}
//
// Protected helper methods.
//
/**
* Internal function to handle both internal and external reviews round info (tab content).
* @param $request PKPRequest
* @param $args array
* @return JSONMessage JSON object
*/
protected function _reviewRound($args, $request) {
$this->setupTemplate($request);
// Retrieve the authorized submission, stage id and review round.
$submission = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION);
$stageId = $this->getAuthorizedContextObject(ASSOC_TYPE_WORKFLOW_STAGE);
$reviewRound = $this->getAuthorizedContextObject(ASSOC_TYPE_REVIEW_ROUND);
// Is this round the most recent round?
$reviewRoundDao = DAORegistry::getDAO('ReviewRoundDAO'); /* @var $reviewRoundDao ReviewRoundDAO */
$lastReviewRound = $reviewRoundDao->getLastReviewRoundBySubmissionId($submission->getId(), $stageId);
// Add the round information to the template.
$templateMgr = TemplateManager::getManager($request);
$templateMgr->assign('stageId', $stageId);
$templateMgr->assign('reviewRoundId', $reviewRound->getId());
$templateMgr->assign('isLastReviewRound', $reviewRound->getId() == $lastReviewRound->getId());
$templateMgr->assign('submission', $submission);
// Assign editor decision actions to the template, only if
// user is accessing the last review round for this stage.
$notificationRequestOptions = array(
NOTIFICATION_LEVEL_NORMAL => array(
NOTIFICATION_TYPE_REVIEW_ROUND_STATUS => array(ASSOC_TYPE_REVIEW_ROUND, $reviewRound->getId())),
NOTIFICATION_LEVEL_TRIVIAL => array(),
);
$templateMgr->assign('reviewRoundNotificationRequestOptions', $notificationRequestOptions);
// If a user is also assigned as an author to this submission, they
// shouldn't see any editorial actions
$userAccessibleStages = $this->getAuthorizedContextObject(ASSOC_TYPE_ACCESSIBLE_WORKFLOW_STAGES);
foreach ($userAccessibleStages as $accessibleStageId => $roles) {
if (in_array(ROLE_ID_AUTHOR, $roles)) {
$templateMgr->assign('isAssignedAsAuthor', true);
break;
}
}
return $templateMgr->fetchJson('workflow/reviewRound.tpl');
}
}