/** * @see Form::fetch() */ function fetch($request) { $templateMgr = TemplateManager::getManager($request); $reviewAssignment = $this->getReviewAssignment(); $reviewRoundId = $reviewAssignment->getReviewRoundId(); // Assign the objects and data to the template. $context = $this->request->getContext(); $templateMgr->assign('reviewAssignment', $reviewAssignment); $templateMgr->assign('reviewRoundId', $reviewRoundId); // Include the review recommendation options on the form. $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); if ($reviewAssignment->getReviewFormId()) { // Get the review form components $reviewFormElementDao = DAORegistry::getDAO('ReviewFormElementDAO'); $reviewFormElements = $reviewFormElementDao->getByReviewFormId($reviewAssignment->getReviewFormId()); $reviewFormResponseDao = DAORegistry::getDAO('ReviewFormResponseDAO'); $reviewFormResponses = $reviewFormResponseDao->getReviewReviewFormResponseValues($reviewAssignment->getId()); $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); $reviewformid = $reviewAssignment->getReviewFormId(); $reviewForm = $reviewFormDao->getById($reviewAssignment->getReviewFormId(), Application::getContextAssocType(), $context->getId()); $templateMgr->assign('reviewForm', $reviewForm); $templateMgr->assign('reviewFormElements', $reviewFormElements); $templateMgr->assign('reviewFormResponses', $reviewFormResponses); $templateMgr->assign('disabled', isset($reviewAssignment) && $reviewAssignment->getDateCompleted() != null); } // // Assign the link actions // if ($context->getLocalizedSetting('reviewGuidelines')) { import('lib.pkp.controllers.confirmationModal.linkAction.ViewReviewGuidelinesLinkAction'); $viewReviewGuidelinesAction = new ViewReviewGuidelinesLinkAction($request, $reviewAssignment->getStageId()); $templateMgr->assign('viewGuidelinesAction', $viewReviewGuidelinesAction); } return parent::fetch($request); }
/** * Display reviewer index page. */ function index($args) { ReviewerHandler::validate(); ReviewerHandler::setupTemplate(); $journal =& Request::getJournal(); $user =& Request::getUser(); $reviewerSubmissionDao =& DAORegistry::getDAO('ReviewerSubmissionDAO'); $rangeInfo = Handler::getRangeInfo('submissions'); $page = isset($args[0]) ? $args[0] : ''; switch ($page) { case 'completed': $active = false; break; default: $page = 'active'; $active = true; } $submissions = $reviewerSubmissionDao->getReviewerSubmissionsByReviewerId($user->getUserId(), $journal->getJournalId(), $active, $rangeInfo); $templateMgr =& TemplateManager::getManager(); $templateMgr->assign('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign('pageToDisplay', $page); $templateMgr->assign_by_ref('submissions', $submissions); import('submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); import('issue.IssueAction'); $issueAction =& new IssueAction(); $templateMgr->register_function('print_issue_id', array($issueAction, 'smartyPrintIssueId')); $templateMgr->assign('helpTopicId', 'editorial.reviewersRole.submissions'); $templateMgr->display('reviewer/index.tpl'); }
/** * Display reviewer index page. */ function index($args) { $this->validate(); $this->setupTemplate(); $schedConf =& Request::getSchedConf(); $user =& Request::getUser(); $reviewerSubmissionDao =& DAORegistry::getDAO('ReviewerSubmissionDAO'); $rangeInfo = Handler::getRangeInfo('submissions'); $page = isset($args[0]) ? $args[0] : ''; switch ($page) { case 'completed': $active = false; break; default: $page = 'active'; $active = true; } $submissions = $reviewerSubmissionDao->getReviewerSubmissionsByReviewerId($user->getId(), $schedConf->getId(), $active, $rangeInfo); $templateMgr =& TemplateManager::getManager(); $templateMgr->assign('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign('pageToDisplay', $page); $templateMgr->assign_by_ref('submissions', $submissions); $templateMgr->assign_by_ref('schedConf', $schedConf); import('submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign('helpTopicId', 'editorial.reviewersRole.submissions'); $templateMgr->display('reviewer/index.tpl'); }
/** * Display the submission review page. * @param $args array */ function submission($args, $request) { $journal =& $request->getJournal(); $reviewId = $args[0]; $this->validate($request, $reviewId); $user =& $this->user; $submission =& $this->submission; $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $reviewAssignment = $reviewAssignmentDao->getById($reviewId); $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO'); if ($submission->getDateConfirmed() == null) { $confirmedStatus = 0; } else { $confirmedStatus = 1; } $this->setupTemplate(true, $reviewAssignment->getSubmissionId(), $reviewId); $templateMgr =& TemplateManager::getManager(); $templateMgr->assign_by_ref('user', $user); $templateMgr->assign_by_ref('submission', $submission); $templateMgr->assign_by_ref('reviewAssignment', $reviewAssignment); $templateMgr->assign('confirmedStatus', $confirmedStatus); $templateMgr->assign('declined', $submission->getDeclined()); $templateMgr->assign('reviewFormResponseExists', $reviewFormResponseDao->reviewFormResponseExists($reviewId)); $templateMgr->assign_by_ref('reviewFile', $reviewAssignment->getReviewFile()); $templateMgr->assign_by_ref('reviewerFile', $submission->getReviewerFile()); $templateMgr->assign_by_ref('suppFiles', $submission->getSuppFiles()); $templateMgr->assign_by_ref('journal', $journal); $templateMgr->assign_by_ref('reviewGuidelines', $journal->getLocalizedSetting('reviewGuidelines')); import('classes.submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign('helpTopicId', 'editorial.reviewersRole.review'); $templateMgr->display('reviewer/submission.tpl'); }
/** * Display the form. */ function display() { $press =& Request::getPress(); $user =& Request::getUser(); $submission = $this->reviewerSubmission; $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO'); $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $reviewAssignment = $reviewAssignmentDao->getById($submission->getReviewId()); if ($submission->getDateConfirmed() == null) { $confirmedStatus = 0; } else { $confirmedStatus = 1; } $templateMgr =& TemplateManager::getManager(); $reviewerRequestParams = array('reviewer' => $reviewAssignment->getReviewerFullName(), 'personalNote' => 'EDITOR NOTE', 'editor' => $press->getSetting('contactName')); $templateMgr->assign('reviewerRequest', Locale::translate('reviewer.step1.requestBoilerplate', $reviewerRequestParams)); $templateMgr->assign_by_ref('submission', $submission); $templateMgr->assign_by_ref('reviewAssignment', $reviewAssignment); $templateMgr->assign_by_ref('press', $press); $templateMgr->assign_by_ref('reviewGuidelines', $press->getLocalizedSetting('reviewGuidelines')); $templateMgr->assign('step', 1); $templateMgr->assign('completedSteps', $submission->getStatus()); $templateMgr->assign('blindReview', true); // FIXME: Need to be able to get/set if a review is blind or not // FIXME: Need press setting that denotes competing interests are required $templateMgr->assign('competingInterestsText', $submission->getCompetingInterests()); import('classes.submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign('helpTopicId', 'editorial.reviewersRole.review'); parent::display(); }
/** * Display the submission review page. * @param $args array */ function submission($args) { $journal =& Request::getJournal(); $reviewId = $args[0]; list($journal, $submission, $user) = SubmissionReviewHandler::validate($reviewId); $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $reviewAssignment = $reviewAssignmentDao->getReviewAssignmentById($reviewId); if ($submission->getDateConfirmed() == null) { $confirmedStatus = 0; } else { $confirmedStatus = 1; } ReviewerHandler::setupTemplate(true, $reviewAssignment->getArticleId(), $reviewId); $templateMgr =& TemplateManager::getManager(); $templateMgr->assign_by_ref('user', $user); $templateMgr->assign_by_ref('submission', $submission); $templateMgr->assign_by_ref('reviewAssignment', $reviewAssignment); $templateMgr->assign('confirmedStatus', $confirmedStatus); $templateMgr->assign('declined', $submission->getDeclined()); $templateMgr->assign_by_ref('reviewFile', $reviewAssignment->getReviewFile()); $templateMgr->assign_by_ref('reviewerFile', $submission->getReviewerFile()); $templateMgr->assign_by_ref('suppFiles', $submission->getSuppFiles()); $templateMgr->assign_by_ref('journal', $journal); $templateMgr->assign_by_ref('reviewGuidelines', $journal->getLocalizedSetting('reviewGuidelines')); import('submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign('helpTopicId', 'editorial.reviewersRole.review'); $templateMgr->display('reviewer/submission.tpl'); }
/** * Display reviewer index page. */ function index($args) { $this->validate(); $this->setupTemplate(); $journal =& Request::getJournal(); //%CBP% redirect or set var as appropriate $CBPPlatformDao =& DAORegistry::getDAO('CBPPlatformDAO'); $workshop = $CBPPlatformDao->getWorkshop($journal->getJournalId()); if ($workshop != "structured") { $workshop = 1; } if ($workshop == 1) { Request::redirect(Request::getRequestedJournalPath(), 'user'); } $user =& Request::getUser(); $reviewerSubmissionDao =& DAORegistry::getDAO('ReviewerSubmissionDAO'); $rangeInfo = Handler::getRangeInfo('submissions'); $page = isset($args[0]) ? $args[0] : ''; switch ($page) { case 'completed': $active = false; break; default: $page = 'active'; $active = true; } $sort = Request::getUserVar('sort'); $sort = isset($sort) ? $sort : 'title'; $sortDirection = Request::getUserVar('sortDirection'); if ($sort == 'decision') { $submissions = $reviewerSubmissionDao->getReviewerSubmissionsByReviewerId($user->getId(), $journal->getId(), $active, $rangeInfo); // Sort all submissions by status, which is too complex to do in the DB $submissionsArray = $submissions->toArray(); $compare = create_function('$s1, $s2', 'return strcmp($s1->getMostRecentDecision(), $s2->getMostRecentDecision());'); usort($submissionsArray, $compare); if ($sortDirection == SORT_DIRECTION_DESC) { $submissionsArray = array_reverse($submissionsArray); } // Convert submission array back to an ItemIterator class import('lib.pkp.classes.core.ArrayItemIterator'); $submissions =& ArrayItemIterator::fromRangeInfo($submissionsArray, $rangeInfo); } else { $submissions = $reviewerSubmissionDao->getReviewerSubmissionsByReviewerId($user->getId(), $journal->getId(), $active, $rangeInfo, $sort, $sortDirection); } $templateMgr =& TemplateManager::getManager(); $templateMgr->assign('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign('pageToDisplay', $page); $templateMgr->assign_by_ref('submissions', $submissions); import('classes.submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); import('classes.issue.IssueAction'); $issueAction = new IssueAction(); $templateMgr->register_function('print_issue_id', array($issueAction, 'smartyPrintIssueId')); $templateMgr->assign('helpTopicId', 'editorial.reviewersRole.submissions'); $templateMgr->assign('sort', $sort); $templateMgr->assign('sortDirection', $sortDirection); $templateMgr->display('reviewer/index.tpl'); }
function display(&$args) { $request =& $this->getRequest(); $conference =& $request->getConference(); $schedConf =& $request->getSchedConf(); AppLocale::requireComponents(LOCALE_COMPONENT_APP_COMMON, LOCALE_COMPONENT_PKP_USER, LOCALE_COMPONENT_PKP_SUBMISSION, LOCALE_COMPONENT_APP_MANAGER); header('content-type: text/comma-separated-values; charset=utf-8'); header('content-disposition: attachment; filename=reviews-' . date('Ymd') . '.csv'); $reviewReportDao = DAORegistry::getDAO('ReviewReportDAO'); list($commentsIterator, $reviewsIterator) = $reviewReportDao->getReviewReport($schedConf->getId()); $comments = array(); while ($row =& $commentsIterator->next()) { if (isset($comments[$row['paper_id']][$row['author_id']])) { $comments[$row['paper_id']][$row['author_id']] .= "; " . $row['comments']; } else { $comments[$row['paper_id']][$row['author_id']] = $row['comments']; } } $yesnoMessages = array(0 => __('common.no'), 1 => __('common.yes')); import('classes.schedConf.SchedConf'); $reviewTypes = array(REVIEW_MODE_ABSTRACTS_ALONE => __('manager.schedConfSetup.submissions.abstractsAlone'), REVIEW_MODE_BOTH_SEQUENTIAL => __('manager.schedConfSetup.submissions.bothSequential'), REVIEW_MODE_PRESENTATIONS_ALONE => __('manager.schedConfSetup.submissions.presentationsAlone'), REVIEW_MODE_BOTH_SIMULTANEOUS => __('manager.schedConfSetup.submissions.bothTogether')); import('classes.submission.reviewAssignment.ReviewAssignment'); $recommendations = ReviewAssignment::getReviewerRecommendationOptions(); $columns = array('reviewRound' => __('submissions.reviewType'), 'paper' => __('paper.papers'), 'paperid' => __('paper.submissionId'), 'reviewerid' => __('plugins.reports.reviews.reviewerId'), 'reviewer' => __('plugins.reports.reviews.reviewer'), 'firstname' => __('user.firstName'), 'middlename' => __('user.middleName'), 'lastname' => __('user.lastName'), 'dateassigned' => __('plugins.reports.reviews.dateAssigned'), 'datenotified' => __('plugins.reports.reviews.dateNotified'), 'dateconfirmed' => __('plugins.reports.reviews.dateConfirmed'), 'datecompleted' => __('plugins.reports.reviews.dateCompleted'), 'datereminded' => __('plugins.reports.reviews.dateReminded'), 'declined' => __('submissions.declined'), 'cancelled' => __('common.cancelled'), 'recommendation' => __('reviewer.paper.recommendation'), 'comments' => __('comments.commentsOnPaper')); $yesNoArray = array('declined', 'cancelled'); $fp = fopen('php://output', 'wt'); fputcsv($fp, array_values($columns)); while ($row =& $reviewsIterator->next()) { foreach ($columns as $index => $junk) { if (in_array($index, array('declined', 'cancelled'))) { $yesNoIndex = $row[$index]; if (is_string($yesNoIndex)) { // Accomodate Postgres boolean casting $yesNoIndex = $yesNoIndex == "f" ? 0 : 1; } $columns[$index] = $yesnoMessages[$yesNoIndex]; } elseif ($index == 'reviewRound') { $columns[$index] = $reviewTypes[$row[$index]]; } elseif ($index == "recommendation") { $columns[$index] = !isset($row[$index]) ? __('common.none') : __($recommendations[$row[$index]]); } elseif ($index == "comments") { if (isset($comments[$row['paperid']][$row['reviewerid']])) { $columns[$index] = html_entity_decode(strip_tags($comments[$row['paperid']][$row['reviewerid']]), ENT_QUOTES, 'UTF-8'); } else { $columns[$index] = ""; } } else { $columns[$index] = $row[$index]; } } fputcsv($fp, $columns); unset($row); } fclose($fp); }
function display(&$args) { $journal =& Request::getJournal(); header('content-type: text/comma-separated-values'); header('content-disposition: attachment; filename=report.csv'); Locale::requireComponents(array(LOCALE_COMPONENT_PKP_SUBMISSION)); $reviewReportDao =& DAORegistry::getDAO('ReviewReportDAO'); list($commentsIterator, $reviewsIterator) = $reviewReportDao->getReviewReport($journal->getId()); $comments = array(); while ($row =& $commentsIterator->next()) { if (isset($comments[$row['article_id']][$row['author_id']])) { $comments[$row['article_id']][$row['author_id']] .= "; " . $row['comments']; } else { $comments[$row['article_id']][$row['author_id']] = $row['comments']; } } $yesnoMessages = array(0 => Locale::translate('common.no'), 1 => Locale::translate('common.yes')); import('submission.reviewAssignment.ReviewAssignment'); $recommendations = ReviewAssignment::getReviewerRecommendationOptions(); $columns = array('round' => Locale::translate('plugins.reports.reviews.round'), 'article' => Locale::translate('article.articles'), 'articleid' => Locale::translate('article.submissionId'), 'reviewerid' => Locale::translate('plugins.reports.reviews.reviewerId'), 'reviewer' => Locale::translate('plugins.reports.reviews.reviewer'), 'firstname' => Locale::translate('user.firstName'), 'middlename' => Locale::translate('user.middleName'), 'lastname' => Locale::translate('user.lastName'), 'dateassigned' => Locale::translate('plugins.reports.reviews.dateAssigned'), 'datenotified' => Locale::translate('plugins.reports.reviews.dateNotified'), 'dateconfirmed' => Locale::translate('plugins.reports.reviews.dateConfirmed'), 'datecompleted' => Locale::translate('plugins.reports.reviews.dateCompleted'), 'datereminded' => Locale::translate('plugins.reports.reviews.dateReminded'), 'declined' => Locale::translate('submissions.declined'), 'cancelled' => Locale::translate('common.cancelled'), 'recommendation' => Locale::translate('reviewer.article.recommendation'), 'comments' => Locale::translate('comments.commentsOnArticle')); $yesNoArray = array('declined', 'cancelled'); $fp = fopen('php://output', 'wt'); String::fputcsv($fp, array_values($columns)); while ($row =& $reviewsIterator->next()) { foreach ($columns as $index => $junk) { if (in_array($index, $yesNoArray)) { $columns[$index] = $yesnoMessages[$row[$index]]; } elseif ($index == "recommendation") { $columns[$index] = !isset($row[$index]) ? Locale::translate('common.none') : Locale::translate($recommendations[$row[$index]]); } elseif ($index == "comments") { if (isset($comments[$row['articleid']][$row['reviewerid']])) { $columns[$index] = $comments[$row['articleid']][$row['reviewerid']]; } else { $columns[$index] = ""; } } else { $columns[$index] = $row[$index]; } } String::fputcsv($fp, $columns); unset($row); } fclose($fp); }
function submission($args, $request) { $reviewId = (int) array_shift($args); $this->validate($request, $reviewId); $reviewerSubmission =& $this->submission; $user =& $this->user; $schedConf =& $request->getSchedConf(); $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $reviewAssignment = $reviewAssignmentDao->getById($reviewId); $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO'); if ($reviewAssignment->getDateConfirmed() == null) { $confirmedStatus = 0; } else { $confirmedStatus = 1; } $this->setupTemplate($request, true, $reviewerSubmission->getId(), $reviewId); $templateMgr =& TemplateManager::getManager(); $templateMgr->assign_by_ref('user', $user); $templateMgr->assign_by_ref('submission', $reviewerSubmission); $templateMgr->assign_by_ref('reviewAssignment', $reviewAssignment); $templateMgr->assign('confirmedStatus', $confirmedStatus); $templateMgr->assign('declined', $reviewerSubmission->getDeclined()); $templateMgr->assign('reviewFormResponseExists', $reviewFormResponseDao->reviewFormResponseExists($reviewId)); $templateMgr->assign_by_ref('reviewFile', $reviewAssignment->getReviewFile()); $templateMgr->assign_by_ref('reviewerFile', $reviewerSubmission->getReviewerFile()); $templateMgr->assign_by_ref('suppFiles', $reviewerSubmission->getSuppFiles()); $templateMgr->assign_by_ref('schedConf', $schedConf); $templateMgr->assign_by_ref('reviewGuidelines', $schedConf->getLocalizedSetting('reviewGuidelines')); // The reviewer instructions differ depending on what is reviewed, and when. if ($reviewAssignment->getRound() == REVIEW_ROUND_ABSTRACT && $reviewerSubmission->getReviewMode() != REVIEW_MODE_BOTH_SIMULTANEOUS) { $templateMgr->assign('reviewerInstruction3', 'reviewer.paper.downloadSubmissionAbstractOnly'); } else { $templateMgr->assign('reviewerInstruction3', 'reviewer.paper.downloadSubmissionSubmission'); } import('classes.submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $controlledVocabDao =& DAORegistry::getDAO('ControlledVocabDAO'); $templateMgr->assign('sessionTypes', $controlledVocabDao->enumerateBySymbolic('sessionTypes', ASSOC_TYPE_SCHED_CONF, $schedConf->getId())); $templateMgr->assign('helpTopicId', 'editorial.reviewersRole.review'); $templateMgr->display('reviewer/submission.tpl'); }
/** * Display reviewer index page. */ function index($args) { $this->validate(); $this->setupTemplate(); $schedConf =& Request::getSchedConf(); $user =& Request::getUser(); $reviewerSubmissionDao =& DAORegistry::getDAO('ReviewerSubmissionDAO'); $rangeInfo = Handler::getRangeInfo('submissions'); $page = isset($args[0]) ? $args[0] : ''; switch ($page) { case 'completed': AppLocale::requireComponents(array(LOCALE_COMPONENT_OCS_DIRECTOR)); $active = false; break; default: $page = 'active'; $active = true; } $submissions = $reviewerSubmissionDao->getReviewerSubmissionsByReviewerId($user->getId(), $schedConf->getId(), $active, $rangeInfo); $templateMgr =& TemplateManager::getManager(); $templateMgr->assign('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign('pageToDisplay', $page); $templateMgr->assign_by_ref('submissions', $submissions); $templateMgr->assign_by_ref('schedConf', $schedConf); import('submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign('helpTopicId', 'editorial.reviewersRole.submissions'); $sessionTypesArray = array(); $paperTypeDao = DAORegistry::getDAO('PaperTypeDAO'); $sessionTypes = $paperTypeDao->getPaperTypes($schedConf->getId()); while ($sessionType = $sessionTypes->next()) { $sessionTypesArray[$sessionType->getId()] = $sessionType; } $templateMgr->assign('sessionTypes', $sessionTypesArray); $templateMgr->display('reviewer/index.tpl'); }
/** * @see Form::fetch() */ function fetch($request) { $templateMgr = TemplateManager::getManager($request); $reviewAssignment = $this->getReviewAssignment(); // Assign the objects and data to the template. $context = $this->request->getContext(); $templateMgr->assign(array('reviewAssignment' => $reviewAssignment, 'reviewRoundId' => $reviewAssignment->getReviewRoundId(), 'reviewerRecommendationOptions' => ReviewAssignment::getReviewerRecommendationOptions())); if ($reviewAssignment->getReviewFormId()) { // Get the review form components $reviewFormElementDao = DAORegistry::getDAO('ReviewFormElementDAO'); $reviewFormResponseDao = DAORegistry::getDAO('ReviewFormResponseDAO'); $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); $templateMgr->assign(array('reviewForm' => $reviewFormDao->getById($reviewAssignment->getReviewFormId(), Application::getContextAssocType(), $context->getId()), 'reviewFormElements' => $reviewFormElementDao->getByReviewFormId($reviewAssignment->getReviewFormId()), 'reviewFormResponses' => $reviewFormResponseDao->getReviewReviewFormResponseValues($reviewAssignment->getId()), 'disabled' => isset($reviewAssignment) && $reviewAssignment->getDateCompleted() != null)); } // // Assign the link actions // import('lib.pkp.controllers.confirmationModal.linkAction.ViewReviewGuidelinesLinkAction'); $viewReviewGuidelinesAction = new ViewReviewGuidelinesLinkAction($request, $reviewAssignment->getStageId()); if ($viewReviewGuidelinesAction->getGuidelines()) { $templateMgr->assign('viewGuidelinesAction', $viewReviewGuidelinesAction); } return parent::fetch($request); }
/** * Records the reviewer's submission recommendation. * @param $reviewId int * @param $recommendation int * @param $send boolean * @param $request object */ function recordRecommendation(&$reviewerSubmission, $recommendation, $send, $request) { $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $userDao =& DAORegistry::getDAO('UserDAO'); // Check validity of selected recommendation $reviewerRecommendationOptions =& ReviewAssignment::getReviewerRecommendationOptions(); if (!isset($reviewerRecommendationOptions[$recommendation])) { return true; } $reviewAssignment =& $reviewAssignmentDao->getById($reviewerSubmission->getReviewId()); $reviewer =& $userDao->getUser($reviewAssignment->getReviewerId()); if (!isset($reviewer)) { return true; } // Only record the reviewers recommendation if // no recommendation has previously been submitted. if ($reviewAssignment->getRecommendation() === null || $reviewAssignment->getRecommendation === '') { import('classes.mail.ArticleMailTemplate'); $email = new ArticleMailTemplate($reviewerSubmission, 'REVIEW_COMPLETE'); // Must explicitly set sender because we may be here on an access // key, in which case the user is not technically logged in $email->setReplyTo($reviewer->getEmail(), $reviewer->getFullName()); if (!$email->isEnabled() || $send && !$email->hasErrors()) { HookRegistry::call('ReviewerAction::recordRecommendation', array(&$reviewerSubmission, &$email, $recommendation)); if ($email->isEnabled()) { $email->send($request); } $reviewAssignment->setRecommendation($recommendation); $reviewAssignment->setDateCompleted(Core::getCurrentDate()); $reviewAssignment->stampModified(); $reviewAssignmentDao->updateReviewAssignment($reviewAssignment); // Add log import('classes.article.log.ArticleLog'); ArticleLog::logEvent($request, $reviewerSubmission, ARTICLE_LOG_REVIEW_RECOMMENDATION, 'log.review.reviewRecommendationSet', array('reviewerName' => $reviewer->getFullName(), 'articleId' => $reviewAssignment->getSubmissionId(), 'round' => $reviewAssignment->getRound(), 'reviewId' => $reviewAssignment->getId())); } else { if (!$request->getUserVar('continued')) { $assignedEditors = $email->ccAssignedEditors($reviewerSubmission->getId()); $reviewingSectionEditors = $email->toAssignedReviewingSectionEditors($reviewerSubmission->getId()); if (empty($assignedEditors) && empty($reviewingSectionEditors)) { $journal =& Request::getJournal(); $email->addRecipient($journal->getSetting('contactEmail'), $journal->getSetting('contactName')); $editorialContactName = $journal->getSetting('contactName'); } else { if (!empty($reviewingSectionEditors)) { $editorialContact = array_shift($reviewingSectionEditors); } else { $editorialContact = array_shift($assignedEditors); } $editorialContactName = $editorialContact->getEditorFullName(); } $reviewerRecommendationOptions =& ReviewAssignment::getReviewerRecommendationOptions(); $email->assignParams(array('editorialContactName' => $editorialContactName, 'reviewerName' => $reviewer->getFullName(), 'articleTitle' => strip_tags($reviewerSubmission->getLocalizedTitle()), 'recommendation' => __($reviewerRecommendationOptions[$recommendation]))); } $email->displayEditForm($request->url(null, 'reviewer', 'recordRecommendation'), array('reviewId' => $reviewerSubmission->getReviewId(), 'recommendation' => $recommendation)); return false; } } return true; }
/** * Records the reviewer's submission recommendation. * @param $reviewId int * @param $recommendation int * @param $send boolean */ function recordRecommendation(&$reviewAssignment, $recommendation, $send) { $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $reviewerSubmissionDao =& DAORegistry::getDAO('ReviewerSubmissionDAO'); $userDao =& DAORegistry::getDAO('UserDAO'); $reviewId = $reviewAssignment->getReviewId(); $reviewerSubmission =& $reviewerSubmissionDao->getReviewerSubmission($reviewId); // Check validity of selected recommendation $reviewerRecommendationOptions =& ReviewAssignment::getReviewerRecommendationOptions(); if (!isset($reviewerRecommendationOptions[$recommendation])) { return true; } $reviewer =& $userDao->getUser($reviewAssignment->getReviewerId()); if (!isset($reviewer)) { return true; } // Only record the reviewers recommendation if // no recommendation has previously been submitted. if ($reviewAssignment->getRecommendation() === null || $reviewAssignment->getRecommendation === '') { import('classes.mail.ArticleMailTemplate'); $email = new ArticleMailTemplate($reviewerSubmission, null, 'REVIEW_COMPLETE'); // Must explicitly set sender because we may be here on an access // key, in which case the user is not technically logged in $email->setFrom($reviewer->getEmail(), $reviewer->getFullName()); if (!$email->isEnabled() || $send && !$email->hasErrors()) { HookRegistry::call('ReviewerAction::recordRecommendation', array(&$reviewerSubmission, &$email, $recommendation)); if ($email->isEnabled()) { $email->setAssoc(ARTICLE_EMAIL_REVIEW_COMPLETE, ARTICLE_EMAIL_TYPE_REVIEW, $reviewId); $email->send(); } $reviewAssignment->setRecommendation($recommendation); $reviewAssignment->setDateCompleted(Core::getCurrentDate()); $reviewAssignment->stampModified(); $reviewAssignmentDao->updateReviewAssignment($reviewAssignment); // Add log import('classes.article.log.ArticleLog'); import('classes.article.log.ArticleEventLogEntry'); $entry = new ArticleEventLogEntry(); $entry->setArticleId($reviewerSubmission->getArticleId()); $entry->setUserId($reviewer->getId()); $entry->setDateLogged(Core::getCurrentDate()); $entry->setEventType(ARTICLE_LOG_REVIEW_RECOMMENDATION); $entry->setLogLevel('N'); $entry->setLogMessage('log.review.reviewRecommendationSet', array('reviewerName' => $reviewer->getFullName(), 'articleId' => $reviewerSubmission->getProposalId())); $entry->setAssocType(ARTICLE_LOG_TYPE_REVIEW); $entry->setAssocId($reviewAssignment->getId()); ArticleLog::logEventEntry($reviewerSubmission->getArticleId(), $entry); } else { if (!Request::getUserVar('continued')) { $assignedEditors = $email->ccAssignedEditors($reviewerSubmission->getArticleId()); $reviewingSectionEditors = $email->toAssignedReviewingSectionEditors($reviewerSubmission->getArticleId()); if (empty($assignedEditors) && empty($reviewingSectionEditors)) { $journal =& Request::getJournal(); $email->addRecipient($journal->getSetting('contactEmail'), $journal->getSetting('contactName')); $editorialContactName = $journal->getSetting('contactName'); } else { if (!empty($reviewingSectionEditors)) { $editorialContact = array_shift($reviewingSectionEditors); } else { $editorialContact = array_shift($assignedEditors); } // Modified by EL on February 17th 2013 // No edit assigment anymore $editorialContactName = $editorialContact->getFullName(); } $reviewerRecommendationOptions =& ReviewAssignment::getReviewerRecommendationOptions(); $email->assignParams(array('editorialContactName' => $editorialContactName, 'reviewerName' => $reviewer->getFullName(), 'articleTitle' => strip_tags($reviewerSubmission->getScientificTitle()), 'recommendation' => Locale::translate($reviewerRecommendationOptions[$recommendation]))); } $email->displayEditForm(Request::url(null, 'reviewer', 'recordRecommendation'), array('reviewId' => $reviewId, 'recommendation' => $recommendation)); return false; } } return true; }
function enterReviewerRecommendation($args, $request) { $paperId = (int) $request->getUserVar('paperId'); $reviewId = (int) $request->getUserVar('reviewId'); $recommendation = (int) $request->getUserVar('recommendation'); $this->validate($request, $paperId, TRACK_DIRECTOR_ACCESS_REVIEW); $conference =& $request->getConference(); $schedConf =& $request->getSchedConf(); $submission =& $this->submission; if ($recommendation != null) { TrackDirectorAction::setReviewerRecommendation($paperId, $reviewId, $recommendation, SUBMISSION_REVIEWER_RECOMMENDATION_ACCEPT); $request->redirect(null, null, null, 'submissionReview', $paperId); } else { $this->setupTemplate($request, true, $paperId, 'review'); $templateMgr =& TemplateManager::getManager(); $templateMgr->assign('paperId', $paperId); $templateMgr->assign('reviewId', $reviewId); import('classes.submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->display('trackDirector/reviewerRecommendation.tpl'); } }
function submission($args) { $reviewId = $args[0]; $this->validate($reviewId); $reviewerSubmission =& $this->submission; $user =& $this->user; $conference =& Request::getConference(); $schedConf =& Request::getSchedConf(); $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $reviewAssignment = $reviewAssignmentDao->getReviewAssignmentById($reviewId); $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO'); if ($reviewAssignment->getDateConfirmed() == null) { $confirmedStatus = 0; } else { $confirmedStatus = 1; } $this->setupTemplate(true, $reviewerSubmission->getPaperId(), $reviewId); $templateMgr =& TemplateManager::getManager(); $templateMgr->assign_by_ref('user', $user); $templateMgr->assign_by_ref('submission', $reviewerSubmission); $templateMgr->assign_by_ref('reviewAssignment', $reviewAssignment); $templateMgr->assign('confirmedStatus', $confirmedStatus); $templateMgr->assign('declined', $reviewerSubmission->getDeclined()); $templateMgr->assign('reviewFormResponseExists', $reviewFormResponseDao->reviewFormResponseExists($reviewId)); $templateMgr->assign_by_ref('reviewFile', $reviewAssignment->getReviewFile()); $templateMgr->assign_by_ref('reviewerFile', $reviewerSubmission->getReviewerFile()); $templateMgr->assign_by_ref('suppFiles', $reviewerSubmission->getSuppFiles()); $templateMgr->assign_by_ref('schedConf', $schedConf); $templateMgr->assign_by_ref('reviewGuidelines', $schedConf->getLocalizedSetting('reviewGuidelines')); // The reviewer instructions differ depending on what is reviewed, and when. if ($reviewAssignment->getStage() == REVIEW_STAGE_ABSTRACT && $reviewerSubmission->getReviewMode() != REVIEW_MODE_BOTH_SIMULTANEOUS) { $templateMgr->assign('reviewerInstruction3', 'reviewer.paper.downloadSubmissionAbstractOnly'); } else { $templateMgr->assign('reviewerInstruction3', 'reviewer.paper.downloadSubmissionSubmission'); } import('submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $controlledVocabDao =& DAORegistry::getDAO('ControlledVocabDAO'); $sessionTypes = $controlledVocabDao->enumerateBySymbolic('paperType', ASSOC_TYPE_SCHED_CONF, $schedConf->getId()); $templateMgr->assign('sessionTypes', $sessionTypes); $templateMgr->assign('helpTopicId', 'editorial.reviewersRole.review'); $trackDao =& DAORegistry::getDAO('TrackDAO'); $templateMgr->assign_by_ref('tracks', $trackDao->getTrackTitles($schedConf->getId())); $authorComments = $reviewAssignment->getCommentAuthor(); $comments = $reviewAssignment->getCommentDirector(); $survey = $reviewAssignment->getCommentSurvey(); $reviewFormId = $reviewAssignment->getReviewFormId(); if (isset($reviewFormId)) { $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO'); $reviewForm =& $reviewFormDao->getReviewForm($reviewFormId, ASSOC_TYPE_CONFERENCE, $conference->getId()); if (!isset($authorComments) || $authorComments === "") { $authorComments = $reviewForm->getLocalizedDescription(); } if (!isset($comments) || $comments === "") { $comments = $reviewForm->getLocalizedTemplateForDirector(); } //if (!isset($survey) || $survey === "") { $surveyForm = $reviewForm->getLocalizedTemplateSurvey(); //} } $templateMgr->assign('commentAuthor', $authorComments); $templateMgr->assign('commentDirector', $comments); $templateMgr->assign('commentSurvey', $survey); $templateMgr->assign('commentSurveyForm', $surveyForm); $templateMgr->assign('draft', Request::getUserVar('draft')); $templateMgr->display('reviewer/submission.tpl'); }
/** * Open a modal to read the reviewer's review and * download any files they may have uploaded * @param $args array * @param $request PKPRequest * @return JSONMessage JSON object */ function readReview($args, $request) { $templateMgr = TemplateManager::getManager($request); $reviewAssignment = $this->getAuthorizedContextObject(ASSOC_TYPE_REVIEW_ASSIGNMENT); $templateMgr->assign(array('submission' => $this->getSubmission(), 'reviewAssignment' => $reviewAssignment, 'reviewerRecommendationOptions' => ReviewAssignment::getReviewerRecommendationOptions())); if ($reviewAssignment->getReviewFormId()) { // Retrieve review form $context = $request->getContext(); $reviewFormElementDao = DAORegistry::getDAO('ReviewFormElementDAO'); $reviewFormElements = $reviewFormElementDao->getByReviewFormId($reviewAssignment->getReviewFormId()); $reviewFormResponseDao = DAORegistry::getDAO('ReviewFormResponseDAO'); $reviewFormResponses = $reviewFormResponseDao->getReviewReviewFormResponseValues($reviewAssignment->getId()); $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); $reviewformid = $reviewAssignment->getReviewFormId(); $reviewForm = $reviewFormDao->getById($reviewAssignment->getReviewFormId(), Application::getContextAssocType(), $context->getId()); $templateMgr->assign(array('reviewForm' => $reviewForm, 'reviewFormElements' => $reviewFormElements, 'reviewFormResponses' => $reviewFormResponses, 'disabled' => true)); } else { // Retrieve reviewer comments. $submissionCommentDao = DAORegistry::getDAO('SubmissionCommentDAO'); $templateMgr->assign(array('comments' => $submissionCommentDao->getReviewerCommentsByReviewerId($reviewAssignment->getSubmissionId(), null, $reviewAssignment->getId(), true), 'commentsPrivate' => $submissionCommentDao->getReviewerCommentsByReviewerId($reviewAssignment->getSubmissionId(), null, $reviewAssignment->getId(), false))); } // Render the response. return $templateMgr->fetchJson('controllers/grid/users/reviewer/readReview.tpl'); }
/** * Enter a reviewer recommendation on behalf of a reviewer * @param $args array * @param $request PKPRequest */ function enterReviewerRecommendation($args, &$request) { $articleId = $request->getUserVar('articleId'); $this->validate($articleId, SECTION_EDITOR_ACCESS_REVIEW); $submission =& $this->submission; $reviewId = $request->getUserVar('reviewId'); $recommendation = $request->getUserVar('recommendation'); if ($recommendation != null) { SectionEditorAction::setReviewerRecommendation($this->submission, $reviewId, $recommendation, SUBMISSION_REVIEWER_RECOMMENDATION_ACCEPT, $request); $request->redirect(null, null, 'submissionReview', $articleId); } else { $this->setupTemplate(true, $articleId, 'review'); $templateMgr =& TemplateManager::getManager(); $templateMgr->assign('articleId', $articleId); $templateMgr->assign('reviewId', $reviewId); import('classes.submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->display('sectionEditor/reviewerRecommendation.tpl'); } }
/** * Display the submission review page. * @param $args array */ function submission($args) { $journal =& Request::getJournal(); $articleId = $args[0]; $page = isset($args[1]) ? $args[1] : 'submissionReview'; $this->validate($articleId); $user =& $this->user; $submission =& $this->submission; $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO'); $currencyDao =& DAORegistry::getDAO('CurrencyDAO'); $articleFileDao =& DAORegistry::getDao('ArticleFileDAO'); $meetingSectionDecisionDao =& DAORegistry::getDAO('MeetingSectionDecisionDAO'); $journalSettingsDao =& DAORegistry::getDAO('JournalSettingsDAO'); $sectionDao =& DAORegistry::getDAO('SectionDAO'); $suppFileDao =& DAORegistry::getDAO('SuppFileDAO'); $countryDao =& DAORegistry::getDAO('CountryDAO'); $articleDrugInfoDao =& DAORegistry::getDAO('ArticleDrugInfoDAO'); $extraFieldDAO =& DAORegistry::getDAO('ExtraFieldDAO'); $this->setupTemplate(false, 0, $submission->getArticleId()); $suppFiles = $submission->getSuppFiles(); foreach ($suppFiles as $suppFile) { $suppFile->setType(Locale::translate($suppFile->getTypeKey())); } $section =& $sectionDao->getSection($submission->getSectionId()); $canEditMetadata = false; $canEditFiles = false; $details = $submission->getArticleDetails(); $showAdvertisements = false; $advertisements = array(); if ($details->getAdvertisingScheme() == ARTICLE_DETAIL_YES) { $showAdvertisements = true; $advertisements = $suppFileDao->getSuppFilesByArticleAndType($submission->getArticleId(), SUPP_FILE_ADVERTISEMENT); } $templateMgr =& TemplateManager::getManager(); // Get the decisions concerned by a meeting but where the user has not been assigned to review. Only to attend the meeting (array will be cleaned after in this function) $meetingDecisions =& $meetingSectionDecisionDao->getUserMeetingSectionDecisions($articleId, $user->getId()); $undergoingDecisionAndAssignment = $submission->getUndergoingDecisionAndAssignment(); if ($undergoingDecisionAndAssignment) { $templateMgr->assign('undergoing', '1'); $templateMgr->assign_by_ref('undergoingDecision', $undergoingDecisionAndAssignment['decision']); $templateMgr->assign_by_ref('undergoingAssignment', $undergoingDecisionAndAssignment['assignment']); if ($undergoingDecisionAndAssignment['assignment']->getDateConfirmed() == null) { $confirmedStatus = 0; } else { $confirmedStatus = 1; } $templateMgr->assign('confirmedStatus', $confirmedStatus); $templateMgr->assign('declined', $undergoingDecisionAndAssignment['assignment']->getDeclined()); $templateMgr->assign('reviewFormResponseExists', $reviewFormResponseDao->reviewFormResponseExists($undergoingDecisionAndAssignment['assignment']->getReviewId())); foreach ($meetingDecisions as $mdkey => $meetingDecision) { if ($undergoingDecisionAndAssignment['decision']->getId() == $meetingDecision->getId()) { unset($meetingDecisions[$mdkey]); } } } else { $templateMgr->assign('undergoing', '0'); } $pastDecisionsAndAssignments =& $submission->getPastDecisionsAndAssignments(); if ($pastDecisionsAndAssignments) { $templateMgr->assign('past', '1'); $templateMgr->assign_by_ref('pastDecisionsAndAssignments', $pastDecisionsAndAssignments); foreach ($pastDecisionsAndAssignments as $pastDecisionAndAssignment) { $pastDecision =& $pastDecisionAndAssignment['decision']; foreach ($meetingDecisions as $mdkey => $meetingDecision) { if ($pastDecision->getId() == $meetingDecision->getId()) { unset($meetingDecisions[$mdkey]); } } } } else { $templateMgr->assign('past', '0'); } if (!empty($meetingDecisions)) { $templateMgr->assign('otherDecisionsExist', true); $templateMgr->assign_by_ref('otherDecisions', $meetingDecisions); } else { $templateMgr->assign('otherDecisionsExist', false); } $templateMgr->assign('articleId', $articleId); $templateMgr->assign('proposalId', $submission->getProposalId()); $templateMgr->assign('scientificTitle', $submission->getScientificTitle()); $templateMgr->assign_by_ref('submitter', $submission->getUser()); $templateMgr->assign('dateSubmitted', $submission->getDateSubmitted()); $templateMgr->assign_by_ref('user', $user); $templateMgr->assign_by_ref('submissionFile', $submission->getSubmissionFile()); $templateMgr->assign_by_ref('previousFiles', $articleFileDao->getPreviousFilesByArticleId($submission->getId())); $templateMgr->assign_by_ref('reviewerFile', $submission->getReviewerFile()); $templateMgr->assign_by_ref('suppFiles', $suppFiles); $templateMgr->assign_by_ref('reportFiles', $submission->getReportFiles()); $templateMgr->assign_by_ref('saeFiles', $submission->getSAEFiles()); $templateMgr->assign('canEditMetadata', $canEditMetadata); $templateMgr->assign('canEditFiles', $canEditFiles); $templateMgr->assign_by_ref('journal', $journal); $templateMgr->assign_by_ref('articleDetails', $details); $templateMgr->assign_by_ref('articleTexts', $submission->getArticleTexts()); $templateMgr->assign_by_ref('articleSecIds', $submission->getArticleSecIds()); $templateMgr->assign_by_ref('articlePurposes', $submission->getArticlePurposes()); $templateMgr->assign('articleTextLocales', $journal->getSupportedLocaleNames()); $templateMgr->assign_by_ref('articlePrimaryOutcomes', $submission->getArticleOutcomesByType(ARTICLE_OUTCOME_PRIMARY)); $templateMgr->assign_by_ref('articleSecondaryOutcomes', $submission->getArticleOutcomesByType(ARTICLE_OUTCOME_SECONDARY)); $templateMgr->assign('coveringArea', $journal->getLocalizedSetting('location')); $templateMgr->assign('coutryList', $countryDao->getCountries()); $templateMgr->assign('showAdvertisements', $showAdvertisements); $templateMgr->assign_by_ref('advertisements', $advertisements); $templateMgr->assign_by_ref('articleDrugs', $submission->getArticleDrugs()); $templateMgr->assign('pharmaClasses', $articleDrugInfoDao->getPharmaClasses()); $templateMgr->assign('drugStudyClasses', $articleDrugInfoDao->getClassMap()); $templateMgr->assign_by_ref('articleSites', $submission->getArticleSites()); $templateMgr->assign('expertisesList', $extraFieldDAO->getExtraFieldsList(EXTRA_FIELD_THERAPEUTIC_AREA, EXTRA_FIELD_ACTIVE)); $templateMgr->assign_by_ref('fundingSources', $submission->getArticleFundingSources()); $templateMgr->assign_by_ref('pSponsor', $submission->getArticlePrimarySponsor()); $templateMgr->assign_by_ref('sSponsors', $submission->getArticleSecondarySponsors()); $templateMgr->assign_by_ref('CROs', $submission->getArticleCROs()); $templateMgr->assign_by_ref('contact', $submission->getArticleContact()); $templateMgr->assign_by_ref('reviewGuidelines', $journal->getLocalizedSetting('reviewGuidelines')); import('classes.submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign_by_ref('abstractLocales', $journal->getSupportedLocaleNames()); $templateMgr->assign('helpTopicId', 'editorial.reviewersRole.review'); $sourceCurrencyId = $journal->getSetting('sourceCurrency'); $templateMgr->assign('sourceCurrency', $currencyDao->getCurrencyByAlphaCode($sourceCurrencyId)); $templateMgr->assign('pageToDisplay', $page); $templateMgr->assign_by_ref('section', $section); $templateMgr->display('reviewer/submission.tpl'); }
/** * Display the submission review page. * @param $args array */ function submission($args) { $journal =& Request::getJournal(); $articleId = $args[0]; $page = isset($args[1]) ? $args[1] : 'submissionReview'; $this->validate($articleId); $user =& $this->user; $submission =& $this->submission; $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO'); $currencyDao =& DAORegistry::getDAO('CurrencyDAO'); $articleFileDao =& DAORegistry::getDao('ArticleFileDAO'); $meetingSectionDecisionDao =& DAORegistry::getDAO('MeetingSectionDecisionDAO'); $this->setupTemplate(false, 0, $submission->getArticleId()); $templateMgr =& TemplateManager::getManager(); // Get the decisions concerned by a meeting but where the user has not been assigned to review. Only to attend the meeting (array will be cleaned after in this function) $meetingDecisions =& $meetingSectionDecisionDao->getUserMeetingSectionDecisions($articleId, $user->getId()); $undergoingDecisionAndAssignment = $submission->getUndergoingDecisionAndAssignment(); if ($undergoingDecisionAndAssignment) { $templateMgr->assign('undergoing', '1'); $templateMgr->assign_by_ref('undergoingDecision', $undergoingDecisionAndAssignment['decision']); $templateMgr->assign_by_ref('undergoingAssignment', $undergoingDecisionAndAssignment['assignment']); if ($undergoingDecisionAndAssignment['assignment']->getDateConfirmed() == null) { $confirmedStatus = 0; } else { $confirmedStatus = 1; } $templateMgr->assign('confirmedStatus', $confirmedStatus); $templateMgr->assign('declined', $undergoingDecisionAndAssignment['assignment']->getDeclined()); $templateMgr->assign('reviewFormResponseExists', $reviewFormResponseDao->reviewFormResponseExists($undergoingDecisionAndAssignment['assignment']->getReviewId())); foreach ($meetingDecisions as $mdkey => $meetingDecision) { if ($undergoingDecisionAndAssignment['decision']->getId() == $meetingDecision->getId()) { unset($meetingDecisions[$mdkey]); } } } else { $templateMgr->assign('undergoing', '0'); } $pastDecisionsAndAssignments =& $submission->getPastDecisionsAndAssignments(); if ($pastDecisionsAndAssignments) { $templateMgr->assign('past', '1'); $templateMgr->assign_by_ref('pastDecisionsAndAssignments', $pastDecisionsAndAssignments); foreach ($pastDecisionsAndAssignments as $pastDecisionAndAssignment) { $pastDecision =& $pastDecisionAndAssignment['decision']; foreach ($meetingDecisions as $mdkey => $meetingDecision) { if ($pastDecision->getId() == $meetingDecision->getId()) { unset($meetingDecisions[$mdkey]); } } } } else { $templateMgr->assign('past', '0'); } if (!empty($meetingDecisions)) { $templateMgr->assign('otherDecisionsExist', true); $templateMgr->assign_by_ref('otherDecisions', $meetingDecisions); } else { $templateMgr->assign('otherDecisionsExist', false); } $templateMgr->assign_by_ref('user', $user); $templateMgr->assign_by_ref('submission', $submission); $templateMgr->assign_by_ref('reviewFile', $submission->getSubmissionFile()); $templateMgr->assign_by_ref('reviewerFile', $submission->getReviewerFile()); $templateMgr->assign_by_ref('suppFiles', $submission->getSuppFiles()); $templateMgr->assign_by_ref('reportFiles', $submission->getReportFiles()); $templateMgr->assign_by_ref('saeFiles', $submission->getSAEFiles()); $templateMgr->assign_by_ref('previousFiles', $articleFileDao->getPreviousFilesByArticleId($submission->getId())); $templateMgr->assign_by_ref('abstract', $submission->getLocalizedAbstract()); $templateMgr->assign_by_ref('journal', $journal); $templateMgr->assign_by_ref('reviewGuidelines', $journal->getLocalizedSetting('reviewGuidelines')); import('classes.submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign_by_ref('abstractLocales', $journal->getSupportedLocaleNames()); $templateMgr->assign('helpTopicId', 'editorial.reviewersRole.review'); $sourceCurrencyId = $journal->getSetting('sourceCurrency'); $templateMgr->assign('sourceCurrency', $currencyDao->getCurrencyByAlphaCode($sourceCurrencyId)); $templateMgr->assign('pageToDisplay', $page); $templateMgr->display('reviewer/submission.tpl'); }
/** * Open a modal to read the reviewer's review and * download any files they may have uploaded * @param $args array * @param $request PKPRequest * @return JSONMessage JSON object */ function readReview($args, $request) { $templateMgr = TemplateManager::getManager($request); // Assign submission to template. $templateMgr->assign('submission', $this->getSubmission()); // Retrieve review assignment. $reviewAssignment = $this->getAuthorizedContextObject(ASSOC_TYPE_REVIEW_ASSIGNMENT); $templateMgr->assign('reviewAssignment', $reviewAssignment); if ($reviewAssignment->getReviewFormId()) { // Retrieve review form $context = $request->getContext(); $reviewFormElementDao = DAORegistry::getDAO('ReviewFormElementDAO'); $reviewFormElements = $reviewFormElementDao->getByReviewFormId($reviewAssignment->getReviewFormId()); $reviewFormResponseDao = DAORegistry::getDAO('ReviewFormResponseDAO'); $reviewFormResponses = $reviewFormResponseDao->getReviewReviewFormResponseValues($reviewAssignment->getId()); $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); $reviewformid = $reviewAssignment->getReviewFormId(); $reviewForm = $reviewFormDao->getById($reviewAssignment->getReviewFormId(), Application::getContextAssocType(), $context->getId()); $templateMgr->assign('reviewForm', $reviewForm); $templateMgr->assign('reviewFormElements', $reviewFormElements); $templateMgr->assign('reviewFormResponses', $reviewFormResponses); $templateMgr->assign('disabled', true); } else { // Retrieve reviewer comment. $submissionCommentDao = DAORegistry::getDAO('SubmissionCommentDAO'); $submissionComments = $submissionCommentDao->getReviewerCommentsByReviewerId($reviewAssignment->getReviewerId(), $reviewAssignment->getSubmissionId(), $reviewAssignment->getId(), true); $submissionComment = $submissionComments->next(); $templateMgr->assign('comment', $submissionComment ? $submissionComment->getComments() : ''); $submissionCommentsPrivate = $submissionCommentDao->getReviewerCommentsByReviewerId($reviewAssignment->getReviewerId(), $reviewAssignment->getSubmissionId(), $reviewAssignment->getId(), false); $submissionCommentPrivate = $submissionCommentsPrivate->next(); $templateMgr->assign('commentPrivate', $submissionCommentPrivate ? $submissionCommentPrivate->getComments() : ''); } $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); // Render the response. return $templateMgr->fetchJson('controllers/grid/users/reviewer/readReview.tpl'); }
/** * Display reviewer index page. * Last update: EL on March 1st 2013 */ function index($args) { $this->validate(); $this->setupTemplate(); /** * Get user search fields * Added by: Ayvee Mallare * Last Updated: Sept 25, 2011 */ $searchField = Request::getUserVar('searchField'); $dateSearchField = Request::getUserVar('dateSearchField'); $searchMatch = Request::getUserVar('searchMatch'); $search = Request::getUserVar('search'); $fromDate = Request::getUserDateVar('dateFrom', 1, 1); if ($fromDate !== null) { $fromDate = date('Y-m-d H:i:s', $fromDate); } $toDate = Request::getUserDateVar('dateTo', 32, 12, null, 23, 59, 59); if ($toDate !== null) { $toDate = date('Y-m-d H:i:s', $toDate); } $journal =& Request::getJournal(); $user =& Request::getUser(); $reviewerSubmissionDao =& DAORegistry::getDAO('ReviewerSubmissionDAO'); $rangeInfo = Handler::getRangeInfo('submissions'); $page = isset($args[0]) ? $args[0] : ''; switch ($page) { case 'completed': $active = false; break; default: $page = 'active'; $active = true; } $sort = Request::getUserVar('sort'); $sort = isset($sort) ? $sort : 'title'; $sortDirection = Request::getUserVar('sortDirection'); if ($sort == 'decision') { $submissions = $reviewerSubmissionDao->getReviewerSubmissionsByReviewerId($user->getId(), $journal->getId(), $active, $searchField, $searchMatch, $search, $dateSearchField, $fromDate, $toDate, $rangeInfo); // Sort all submissions by status, which is too complex to do in the DB $submissionsArray = $submissions->toArray(); $compare = create_function('$s1, $s2', 'return strcmp($s1->getMostRecentDecisionValue(), $s2->getMostRecentDecisionValue());'); usort($submissionsArray, $compare); if ($sortDirection == SORT_DIRECTION_DESC) { $submissionsArray = array_reverse($submissionsArray); } // Convert submission array back to an ItemIterator class import('lib.pkp.classes.core.ArrayItemIterator'); //TODO change to array instead of iterator $submissions =& ArrayItemIterator::fromRangeInfo($submissionsArray, $rangeInfo); } else { $submissions = $reviewerSubmissionDao->getReviewerSubmissionsByReviewerId($user->getId(), $journal->getId(), $active, $searchField, $searchMatch, $search, $dateSearchField, $fromDate, $toDate, $rangeInfo, $sort, $sortDirection); } $templateMgr =& TemplateManager::getManager(); $templateMgr->assign('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign('pageToDisplay', $page); $templateMgr->assign_by_ref('submissions', $submissions); $templateMgr->assign('rangeInfo', $rangeInfo); import('classes.submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); /********************************************************************* * Add search fields to template * Added by: Ayvee Mallare * Last Updated: Sept 25, 2011 *********************************************************************/ $duplicateParameters = array('searchField', 'searchMatch', 'search', 'dateFromMonth', 'dateFromDay', 'dateFromYear', 'dateToMonth', 'dateToDay', 'dateToYear', 'dateSearchField'); foreach ($duplicateParameters as $param) { $templateMgr->assign($param, Request::getUserVar($param)); } $templateMgr->assign('dateFrom', $fromDate); $templateMgr->assign('dateTo', $toDate); $templateMgr->assign('fieldOptions', array(SUBMISSION_FIELD_TITLE => 'article.title', SUBMISSION_FIELD_AUTHOR => 'user.role.author')); $templateMgr->assign('dateFieldOptions', array(SUBMISSION_FIELD_DATE_SUBMITTED => 'submissions.submitted')); import('classes.issue.IssueAction'); $issueAction = new IssueAction(); $templateMgr->register_function('print_issue_id', array($issueAction, 'smartyPrintIssueId')); $templateMgr->assign('helpTopicId', 'editorial.reviewersRole.submissions'); $templateMgr->assign('sort', $sort); $templateMgr->assign('sortDirection', $sortDirection); $templateMgr->display('reviewer/submissionsIndex.tpl'); }
/** * Records the reviewer's submission recommendation. * @param $reviewId int * @param $recommendation int * @param $send boolean */ function recordRecommendation(&$reviewerSubmission, $recommendation, $send) { $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $userDao =& DAORegistry::getDAO('UserDAO'); // Check validity of selected recommendation $reviewerRecommendationOptions =& ReviewAssignment::getReviewerRecommendationOptions(); if (!isset($reviewerRecommendationOptions[$recommendation])) { return true; } $reviewAssignment =& $reviewAssignmentDao->getReviewAssignmentById($reviewerSubmission->getReviewId()); $reviewer =& $userDao->getUser($reviewAssignment->getReviewerId()); if (!isset($reviewer)) { return true; } // Only record the reviewers recommendation if // no recommendation has previously been submitted. if ($reviewAssignment->getRecommendation() === null || $reviewAssignment->getRecommendation === '') { import('mail.PaperMailTemplate'); $email = new PaperMailTemplate($reviewerSubmission, 'REVIEW_COMPLETE'); // Must explicitly set sender because we may be here on an access // key, in which case the user is not technically logged in $email->setFrom($reviewer->getEmail(), $reviewer->getFullName()); if (!$email->isEnabled() || $send && !$email->hasErrors()) { HookRegistry::call('ReviewerAction::recordRecommendation', array(&$reviewerSubmission, &$email, $recommendation)); if ($email->isEnabled()) { $email->setAssoc(PAPER_EMAIL_REVIEW_COMPLETE, PAPER_EMAIL_TYPE_REVIEW, $reviewerSubmission->getReviewId()); $email->send(); } $reviewAssignment->setRecommendation($recommendation); $reviewAssignment->setDateCompleted(Core::getCurrentDate()); $reviewAssignment->stampModified(); $reviewAssignmentDao->updateReviewAssignment($reviewAssignment); // Add log import('paper.log.PaperLog'); import('paper.log.PaperEventLogEntry'); $entry = new PaperEventLogEntry(); $entry->setPaperId($reviewAssignment->getPaperId()); $entry->setUserId($reviewer->getId()); $entry->setDateLogged(Core::getCurrentDate()); $entry->setEventType(PAPER_LOG_REVIEW_RECOMMENDATION); $entry->setLogMessage('log.review.reviewRecommendationSet', array('reviewerName' => $reviewer->getFullName(), 'paperId' => $reviewAssignment->getPaperId(), 'stage' => $reviewAssignment->getStage())); $entry->setAssocType(LOG_TYPE_REVIEW); $entry->setAssocId($reviewAssignment->getId()); PaperLog::logEventEntry($reviewAssignment->getPaperId(), $entry); } else { if (!Request::getUserVar('continued')) { $assignedDirectors = $email->toAssignedDirectors($reviewerSubmission->getPaperId()); $reviewingTrackDirectors = $email->toAssignedTrackDirectors($reviewerSubmission->getPaperId()); if (empty($assignedDirectors) && empty($reviewingTrackDirectors)) { $schedConf =& Request::getSchedConf(); $email->addRecipient($schedConf->getSetting('contactEmail'), $schedConf->getSetting('contactName')); $editorialContactName = $schedConf->getSetting('contactName'); } else { if (!empty($reviewingTrackDirectors)) { $editorialContact = array_shift($reviewingTrackDirectors); } else { $editorialContact = array_shift($assignedDirectors); } $editorialContactName = $editorialContact->getDirectorFullName(); } $reviewerRecommendationOptions =& ReviewAssignment::getReviewerRecommendationOptions(); $email->assignParams(array('editorialContactName' => $editorialContactName, 'reviewerName' => $reviewer->getFullName(), 'paperTitle' => strip_tags($reviewerSubmission->getLocalizedTitle()), 'recommendation' => Locale::translate($reviewerRecommendationOptions[$recommendation]))); } $email->displayEditForm(Request::url(null, null, 'reviewer', 'recordRecommendation'), array('reviewId' => $reviewerSubmission->getReviewId(), 'recommendation' => $recommendation)); return false; } } return true; }
function enterReviewerRecommendation($args) { $articleId = Request::getUserVar('articleId'); list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW); $reviewId = Request::getUserVar('reviewId'); $recommendation = Request::getUserVar('recommendation'); if ($recommendation != null) { SectionEditorAction::setReviewerRecommendation($articleId, $reviewId, $recommendation, SUBMISSION_REVIEWER_RECOMMENDATION_ACCEPT); Request::redirect(null, null, 'submissionReview', $articleId); } else { parent::setupTemplate(true, $articleId, 'review'); $templateMgr =& TemplateManager::getManager(); $templateMgr->assign('articleId', $articleId); $templateMgr->assign('reviewId', $reviewId); import('submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->display('sectionEditor/reviewerRecommendation.tpl'); } }
/** * Display the submission review page. * @param $args array */ function submission($args) { $journal =& Request::getJournal(); $journalId = $journal->getJournalId(); $session =& Request::getSession(); //%CBP% get the journal/imprint type and set var approriately $CBPPlatformDao =& DAORegistry::getDAO('CBPPlatformDAO'); $workshop = $CBPPlatformDao->getWorkshop($journalId); if ($workshop != "structured") { $workshop = 1; } $args = Request::getRequestedArgs(); if ($workshop == 1) { $args = Request::getRequestedArgs(); if (!$args[1]) { $articleId = $args[0]; $user =& Request::getUser(); if ($workshop == 1 && !$session->getSessionVar('workshopReview_' . $articleId)) { $reviewId = $CBPPlatformDao->setWorkshopReviewer($articleId, $user->getUserId()); $session->setSessionVar('workshopReview_' . $articleId, $articleId); } else { if ($workshop == 1 && $session->getSessionVar('workshopReview_' . $articleId)) { $reviewId = $CBPPlatformDao->getWorkshopReviewId($articleId, $user->getUserId()); if ($CBPPlatformDao->getWorkshopReviewCompleted($reviewId) != null) { $reviewId = $CBPPlatformDao->setWorkshopReviewer($articleId, $user->getUserId()); $session->setSessionVar('workshopReview_' . $articleId, $articleId); } } } Request::redirect(Request::getRequestedJournalPath(), Request::getRequestedPage(), Request::getRequestedOp(), array("review" => $reviewId, "redirect" => 1)); } } $reviewId = $args[0]; $this->validate($reviewId); $user =& $this->user; $submission =& $this->submission; $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $reviewAssignment = $reviewAssignmentDao->getById($reviewId); $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO'); if ($workshop == 1) { $confirmedStatus = 1; } else { if ($submission->getDateConfirmed() == null) { $confirmedStatus = 0; } else { $confirmedStatus = 1; } } $this->setupTemplate(true, $reviewAssignment->getSubmissionId(), $reviewId); $templateMgr =& TemplateManager::getManager(); $templateMgr->assign_by_ref('user', $user); $templateMgr->assign_by_ref('submission', $submission); $templateMgr->assign_by_ref('reviewAssignment', $reviewAssignment); $templateMgr->assign('confirmedStatus', $confirmedStatus); $templateMgr->assign('declined', $submission->getDeclined()); $templateMgr->assign('reviewFormResponseExists', $reviewFormResponseDao->reviewFormResponseExists($reviewId)); $templateMgr->assign_by_ref('reviewFile', $reviewAssignment->getReviewFile()); $templateMgr->assign_by_ref('reviewerFile', $submission->getReviewerFile()); $templateMgr->assign_by_ref('suppFiles', $submission->getSuppFiles()); $templateMgr->assign_by_ref('journal', $journal); $templateMgr->assign_by_ref('reviewGuidelines', $journal->getLocalizedSetting('reviewGuidelines')); $templateMgr->assign_by_ref('workshop', $workshop); import('classes.submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign('helpTopicId', 'editorial.reviewersRole.review'); $templateMgr->display('reviewer/submission.tpl'); }