function selectReviewer($args) { $articleId = isset($args[0]) ? (int) $args[0] : 0; list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW); $sectionEditorSubmissionDao =& DAORegistry::getDAO('SectionEditorSubmissionDAO'); if (isset($args[1]) && $args[1] != null) { // Assign reviewer to article SectionEditorAction::addReviewer($submission, $args[1]); Request::redirect(null, null, 'submissionReview', $articleId); // FIXME: Prompt for due date. } else { parent::setupTemplate(true, $articleId, 'review'); $sectionEditorSubmissionDao =& DAORegistry::getDAO('SectionEditorSubmissionDAO'); $searchType = null; $searchMatch = null; $search = $searchQuery = Request::getUserVar('search'); $searchInitial = Request::getUserVar('searchInitial'); if (isset($search)) { $searchType = Request::getUserVar('searchField'); $searchMatch = Request::getUserVar('searchMatch'); } else { if (isset($searchInitial)) { $searchInitial = String::strtoupper($searchInitial); $searchType = USER_FIELD_INITIAL; $search = $searchInitial; } } $rangeInfo =& Handler::getRangeInfo('reviewers'); $reviewers = $sectionEditorSubmissionDao->getReviewersForArticle($journal->getJournalId(), $articleId, $submission->getCurrentRound(), $searchType, $search, $searchMatch, $rangeInfo); $journal = Request::getJournal(); $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $templateMgr =& TemplateManager::getManager(); $templateMgr->assign('searchField', $searchType); $templateMgr->assign('searchMatch', $searchMatch); $templateMgr->assign('search', $searchQuery); $templateMgr->assign('searchInitial', Request::getUserVar('searchInitial')); $templateMgr->assign_by_ref('reviewers', $reviewers); $templateMgr->assign('articleId', $articleId); $templateMgr->assign('reviewerStatistics', $sectionEditorSubmissionDao->getReviewerStatistics($journal->getJournalId())); $templateMgr->assign('fieldOptions', array(USER_FIELD_INTERESTS => 'user.interests', USER_FIELD_FIRSTNAME => 'user.firstName', USER_FIELD_LASTNAME => 'user.lastName', USER_FIELD_USERNAME => 'user.username', USER_FIELD_EMAIL => 'user.email')); $templateMgr->assign('completedReviewCounts', $reviewAssignmentDao->getCompletedReviewCounts($journal->getJournalId())); $templateMgr->assign('rateReviewerOnQuality', $journal->getSetting('rateReviewerOnQuality')); $templateMgr->assign('averageQualityRatings', $reviewAssignmentDao->getAverageQualityRatings($journal->getJournalId())); $templateMgr->assign('helpTopicId', 'journal.roles.reviewer'); $templateMgr->assign('alphaList', explode(' ', Locale::translate('common.alphaList'))); $templateMgr->assign('reviewerDatabaseLinks', $journal->getSetting('reviewerDatabaseLinks')); $templateMgr->display('sectionEditor/selectReviewer.tpl'); } }
/** * Resubmit the file for review. * @param $sectionEditorSubmission object * @param $fileId int * @param $revision int * TODO: SECURITY! */ function resubmitFile($sectionEditorSubmission, $fileId, $revision, $request) { import('classes.file.ArticleFileManager'); $articleFileManager = new ArticleFileManager($sectionEditorSubmission->getId()); $sectionEditorSubmissionDao =& DAORegistry::getDAO('SectionEditorSubmissionDAO'); $articleFileDao =& DAORegistry::getDAO('ArticleFileDAO'); $user =& $request->getUser(); if (!HookRegistry::call('SectionEditorAction::resubmitFile', array(&$sectionEditorSubmission, &$fileId, &$revision))) { // Increment the round $currentRound = $sectionEditorSubmission->getCurrentRound(); $sectionEditorSubmission->setCurrentRound($currentRound + 1); $sectionEditorSubmission->stampStatusModified(); // Copy the file from the editor decision file folder to the review file folder $newFileId = $articleFileManager->copyToReviewFile($fileId, $revision, $sectionEditorSubmission->getReviewFileId()); $newReviewFile = $articleFileDao->getArticleFile($newFileId); $newReviewFile->setRound($sectionEditorSubmission->getCurrentRound()); $articleFileDao->updateArticleFile($newReviewFile); // Copy the file from the editor decision file folder to the next-round editor file // $editorFileId may or may not be null after assignment $editorFileId = $sectionEditorSubmission->getEditorFileId() != null ? $sectionEditorSubmission->getEditorFileId() : null; // $editorFileId definitely will not be null after assignment $editorFileId = $articleFileManager->copyToEditorFile($newFileId, null, $editorFileId); $newEditorFile = $articleFileDao->getArticleFile($editorFileId); $newEditorFile->setRound($sectionEditorSubmission->getCurrentRound()); $articleFileDao->updateArticleFile($newEditorFile); // The review revision is the highest revision for the review file. $reviewRevision = $articleFileDao->getRevisionNumber($newFileId); $sectionEditorSubmission->setReviewRevision($reviewRevision); $sectionEditorSubmissionDao->updateSectionEditorSubmission($sectionEditorSubmission); // Now, reassign all reviewers that submitted a review for this new round of reviews. $previousRound = $sectionEditorSubmission->getCurrentRound() - 1; foreach ($sectionEditorSubmission->getReviewAssignments($previousRound) as $reviewAssignment) { if ($reviewAssignment->getRecommendation() !== null && $reviewAssignment->getRecommendation() !== '') { // Then this reviewer submitted a review. SectionEditorAction::addReviewer($sectionEditorSubmission, $reviewAssignment->getReviewerId(), $sectionEditorSubmission->getCurrentRound(), $request); } } // Add log import('classes.article.log.ArticleLog'); ArticleLog::logEvent($request, $sectionEditorSubmission, ARTICLE_LOG_REVIEW_RESUBMIT, 'log.review.resubmit'); } }
/** * Select a reviewer. * @param $args array * @param $request PKPRequest */ function selectReviewer($args, &$request) { $articleId = (int) array_shift($args); $reviewerId = (int) array_shift($args); $this->validate($articleId, SECTION_EDITOR_ACCESS_REVIEW); $journal =& $request->getJournal(); $submission =& $this->submission; $sort = $request->getUserVar('sort'); $sort = isset($sort) ? $sort : 'reviewerName'; $sortDirection = $request->getUserVar('sortDirection'); $sortDirection = isset($sortDirection) && ($sortDirection == SORT_DIRECTION_ASC || $sortDirection == SORT_DIRECTION_DESC) ? $sortDirection : SORT_DIRECTION_ASC; $sectionEditorSubmissionDao =& DAORegistry::getDAO('SectionEditorSubmissionDAO'); if ($reviewerId) { // Assign reviewer to article SectionEditorAction::addReviewer($submission, $reviewerId, null, $request); $request->redirect(null, null, 'submissionReview', $articleId); // FIXME: Prompt for due date. } else { $this->setupTemplate(true, $articleId, 'review'); $sectionEditorSubmissionDao =& DAORegistry::getDAO('SectionEditorSubmissionDAO'); $searchType = null; $searchMatch = null; $search = $searchQuery = $request->getUserVar('search'); $searchInitial = $request->getUserVar('searchInitial'); if (!empty($search)) { $searchType = $request->getUserVar('searchField'); $searchMatch = $request->getUserVar('searchMatch'); } elseif (!empty($searchInitial)) { $searchInitial = String::strtoupper($searchInitial); $searchType = USER_FIELD_INITIAL; $search = $searchInitial; } $rangeInfo =& $this->getRangeInfo('reviewers'); $reviewers = $sectionEditorSubmissionDao->getReviewersForArticle($journal->getId(), $articleId, $submission->getCurrentRound(), $searchType, $search, $searchMatch, $rangeInfo, $sort, $sortDirection); /* @var $reviewers DAOResultFactory */ $journal = $request->getJournal(); $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $templateMgr =& TemplateManager::getManager(); $templateMgr->assign('searchField', $searchType); $templateMgr->assign('searchMatch', $searchMatch); $templateMgr->assign('search', $searchQuery); $templateMgr->assign('searchInitial', $request->getUserVar('searchInitial')); $templateMgr->assign_by_ref('reviewers', $reviewers); $templateMgr->assign('articleId', $articleId); $templateMgr->assign('reviewerStatistics', $sectionEditorSubmissionDao->getReviewerStatistics($journal->getId())); $templateMgr->assign('fieldOptions', array(USER_FIELD_INTERESTS => 'user.interests', USER_FIELD_FIRSTNAME => 'user.firstName', USER_FIELD_LASTNAME => 'user.lastName', USER_FIELD_USERNAME => 'user.username', USER_FIELD_EMAIL => 'user.email')); $templateMgr->assign('completedReviewCounts', $reviewAssignmentDao->getCompletedReviewCounts($journal->getId())); $templateMgr->assign('rateReviewerOnQuality', $journal->getSetting('rateReviewerOnQuality')); $templateMgr->assign('averageQualityRatings', $reviewAssignmentDao->getAverageQualityRatings($journal->getId())); $templateMgr->assign('helpTopicId', 'journal.roles.reviewer'); $templateMgr->assign('alphaList', explode(' ', __('common.alphaList'))); $templateMgr->assign('reviewerDatabaseLinks', $journal->getSetting('reviewerDatabaseLinks')); $templateMgr->assign('sort', $sort); $templateMgr->assign('sortDirection', $sortDirection); $templateMgr->display('sectionEditor/selectReviewer.tpl'); } }
function selectReviewer($args) { $articleId = isset($args[0]) ? (int) $args[0] : 0; $this->validate($articleId, SECTION_EDITOR_ACCESS_REVIEW); $journal =& Request::getJournal(); $submission =& $this->submission; $sort = Request::getUserVar('sort'); $sort = isset($sort) ? $sort : 'reviewerName'; $sortDirection = Request::getUserVar('sortDirection'); $sortDirection = isset($sortDirection) && ($sortDirection == SORT_DIRECTION_ASC || $sortDirection == SORT_DIRECTION_DESC) ? $sortDirection : SORT_DIRECTION_ASC; $sectionEditorSubmissionDao =& DAORegistry::getDAO('SectionEditorSubmissionDAO'); if (isset($args[1]) && $args[1] != null) { // Assign reviewer to article SectionEditorAction::addReviewer($submission, $args[1]); Request::redirect(null, null, 'submissionReview', $articleId); // FIXME: Prompt for due date. } else { $this->setupTemplate(true, $articleId, 'review'); $sectionEditorSubmissionDao =& DAORegistry::getDAO('SectionEditorSubmissionDAO'); $searchType = null; $searchMatch = null; $search = $searchQuery = Request::getUserVar('search'); $searchInitial = Request::getUserVar('searchInitial'); if (!empty($search)) { $searchType = Request::getUserVar('searchField'); $searchMatch = Request::getUserVar('searchMatch'); } elseif (!empty($searchInitial)) { $searchInitial = String::strtoupper($searchInitial); $searchType = USER_FIELD_INITIAL; $search = $searchInitial; } $rangeInfo =& Handler::getRangeInfo('reviewers'); $reviewers = $sectionEditorSubmissionDao->getReviewersForArticle($journal->getId(), $articleId, $submission->getCurrentRound(), $searchType, $search, $searchMatch, $rangeInfo, $sort, $sortDirection); //%CBP% If the user has selected to add all reviewers, run this and redirect to submissionReview page if (Request::getUserVar('f') == "addAllReviewers") { while (!$reviewers->eof()) { $reviewer = $reviewers->next(); SectionEditorAction::addReviewer($submission, $reviewer->getId()); } Request::redirect(null, null, 'submissionReview', $articleId); } $journal = Request::getJournal(); $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $templateMgr =& TemplateManager::getManager(); $templateMgr->assign('searchField', $searchType); $templateMgr->assign('searchMatch', $searchMatch); $templateMgr->assign('search', $searchQuery); $templateMgr->assign('searchInitial', Request::getUserVar('searchInitial')); $templateMgr->assign_by_ref('reviewers', $reviewers); $templateMgr->assign('articleId', $articleId); $templateMgr->assign('reviewerStatistics', $sectionEditorSubmissionDao->getReviewerStatistics($journal->getId())); $templateMgr->assign('fieldOptions', array(USER_FIELD_INTERESTS => 'user.interests', USER_FIELD_FIRSTNAME => 'user.firstName', USER_FIELD_LASTNAME => 'user.lastName', USER_FIELD_USERNAME => 'user.username', USER_FIELD_EMAIL => 'user.email')); $templateMgr->assign('completedReviewCounts', $reviewAssignmentDao->getCompletedReviewCounts($journal->getId())); $templateMgr->assign('rateReviewerOnQuality', $journal->getSetting('rateReviewerOnQuality')); $templateMgr->assign('averageQualityRatings', $reviewAssignmentDao->getAverageQualityRatings($journal->getId())); $templateMgr->assign('helpTopicId', 'journal.roles.reviewer'); $templateMgr->assign('alphaList', explode(' ', Locale::translate('common.alphaList'))); $templateMgr->assign('reviewerDatabaseLinks', $journal->getSetting('reviewerDatabaseLinks')); $templateMgr->assign('sort', $sort); $templateMgr->assign('sortDirection', $sortDirection); $templateMgr->display('sectionEditor/selectReviewer.tpl'); } }
/** * Peer Review * Last modified: EL on February 16h 2013 * Separation of External reviewers and ERC Members **/ function selectReviewer($args) { $articleId = isset($args[0]) ? (int) $args[0] : 0; $reviewerId = isset($args[1]) && $args[1] != null ? (int) $args[1] : 0; $extReviewers = isset($args[2]) && $args[2] != null ? (bool) $args[2] : false; $this->validate($articleId, SECTION_EDITOR_ACCESS_REVIEW); $journal =& Request::getJournal(); $submission =& $this->submission; $sort = Request::getUserVar('sort'); $sort = isset($sort) ? $sort : 'reviewerName'; $sortDirection = Request::getUserVar('sortDirection'); $sortDirection = isset($sortDirection) && ($sortDirection == SORT_DIRECTION_ASC || $sortDirection == SORT_DIRECTION_DESC) ? $sortDirection : SORT_DIRECTION_ASC; $sectionEditorSubmissionDao =& DAORegistry::getDAO('SectionEditorSubmissionDAO'); if ($reviewerId > 0) { // Assign reviewer to article SectionEditorAction::addReviewer($submission->getLastSectionDecisionId(), $reviewerId); //Notify reviewer and send email by default $reviewId = $sectionEditorSubmissionDao->getReviewAssignmentIdByDecisionAndReviewer($submission->getLastSectionDecisionId(), $reviewerId); SectionEditorAction::notifyReviewer($submission, $reviewId, 0, true); Request::redirect(null, null, 'submissionReview', $articleId); // FIXME: Prompt for due date. } else { $this->setupTemplate(1, $articleId, 'review'); $sectionEditorSubmissionDao =& DAORegistry::getDAO('SectionEditorSubmissionDAO'); $searchType = null; $searchMatch = null; $search = $searchQuery = Request::getUserVar('search'); $searchInitial = Request::getUserVar('searchInitial'); if (!$extReviewers) { $extReviewers = Request::getUserVar('extReviewers'); if ($extReviewers == "false") { $extReviewers = false; } elseif ($extReviewers == "true") { $extReviewers = true; } } if (!empty($search)) { $searchType = Request::getUserVar('searchField'); $searchMatch = Request::getUserVar('searchMatch'); } elseif (!empty($searchInitial)) { $searchInitial = String::strtoupper($searchInitial); $searchType = USER_FIELD_INITIAL; $search = $searchInitial; } $lastDecision =& $submission->getLastSectionDecision(); $rangeInfo =& Handler::getRangeInfo('reviewers'); $reviewers = $sectionEditorSubmissionDao->getReviewersForArticle($journal->getId(), $lastDecision->getId(), $lastDecision->getSectionId(), $extReviewers, $searchType, $search, $searchMatch, $rangeInfo, $sort, $sortDirection); $journal = Request::getJournal(); $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $sectionDao =& DAORegistry::getDAO('SectionDAO'); $erc =& $sectionDao->getSection($submission->getSectionId()); $templateMgr =& TemplateManager::getManager(); $templateMgr->assign_by_ref('submission', $submission); $templateMgr->assign('ercAbbrev', $erc->getLocalizedAbbrev()); $templateMgr->assign('extReviewers', $extReviewers); $templateMgr->assign('searchField', $searchType); $templateMgr->assign('searchMatch', $searchMatch); $templateMgr->assign('search', $searchQuery); $templateMgr->assign('searchInitial', Request::getUserVar('searchInitial')); $templateMgr->assign_by_ref('reviewers', $reviewers); $templateMgr->assign('articleId', $articleId); $templateMgr->assign('reviewerStatistics', $sectionEditorSubmissionDao->getReviewerStatistics()); $templateMgr->assign('fieldOptions', array(USER_FIELD_INTERESTS => 'user.interests', USER_FIELD_FIRSTNAME => 'user.firstName', USER_FIELD_LASTNAME => 'user.lastName', USER_FIELD_USERNAME => 'user.username', USER_FIELD_EMAIL => 'user.email')); $templateMgr->assign('completedReviewCounts', $reviewAssignmentDao->getCompletedReviewCounts($journal->getId())); $templateMgr->assign('rateReviewerOnQuality', $journal->getSetting('rateReviewerOnQuality')); $templateMgr->assign('averageQualityRatings', $reviewAssignmentDao->getAverageQualityRatings($journal->getId())); $templateMgr->assign('helpTopicId', 'journal.roles.reviewer'); $templateMgr->assign('alphaList', explode(' ', Locale::translate('common.alphaList'))); $templateMgr->assign('reviewerDatabaseLinks', $journal->getSetting('reviewerDatabaseLinks')); $templateMgr->assign('sort', $sort); $templateMgr->assign('sortDirection', $sortDirection); $templateMgr->display('sectionEditor/selectReviewer.tpl'); } }