function submissionReview($args) { $articleId = isset($args[0]) ? (int) $args[0] : 0; list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW); parent::setupTemplate(true, $articleId); $sectionEditorSubmissionDao =& DAORegistry::getDAO('SectionEditorSubmissionDAO'); $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO'); // Setting the round. $round = isset($args[1]) ? $args[1] : $submission->getCurrentRound(); $sectionDao =& DAORegistry::getDAO('SectionDAO'); $sections =& $sectionDao->getJournalSections($journal->getJournalId()); $showPeerReviewOptions = $round == $submission->getCurrentRound() && $submission->getReviewFile() != null ? true : false; $editorDecisions = $submission->getDecisions($round); $lastDecision = count($editorDecisions) >= 1 ? $editorDecisions[count($editorDecisions) - 1]['decision'] : null; $editAssignments =& $submission->getEditAssignments(); $allowRecommendation = $submission->getCurrentRound() == $round && $submission->getReviewFileId() != null && !empty($editAssignments); $allowResubmit = $lastDecision == SUBMISSION_EDITOR_DECISION_RESUBMIT && $sectionEditorSubmissionDao->getMaxReviewRound($articleId) == $round ? true : false; $allowCopyedit = $lastDecision == SUBMISSION_EDITOR_DECISION_ACCEPT && $submission->getCopyeditFileId() == null ? true : false; // Prepare an array to store the 'Notify Reviewer' email logs $notifyReviewerLogs = array(); foreach ($submission->getReviewAssignments($round) as $reviewAssignment) { $notifyReviewerLogs[$reviewAssignment->getReviewId()] = array(); } // Parse the list of email logs and populate the array. import('article.log.ArticleLog'); $emailLogEntries =& ArticleLog::getEmailLogEntries($articleId); foreach ($emailLogEntries->toArray() as $emailLog) { if ($emailLog->getEventType() == ARTICLE_EMAIL_REVIEW_NOTIFY_REVIEWER) { if (isset($notifyReviewerLogs[$emailLog->getAssocId()]) && is_array($notifyReviewerLogs[$emailLog->getAssocId()])) { array_push($notifyReviewerLogs[$emailLog->getAssocId()], $emailLog); } } } // get journal published review form titles $reviewFormTitles =& $reviewFormDao->getJournalReviewFormTitles($journal->getJournalId(), 1); $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO'); $reviewFormResponses = array(); $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO'); $reviewFormTitles = array(); foreach ($submission->getReviewAssignments($round) as $reviewAssignment) { $reviewForm =& $reviewFormDao->getReviewForm($reviewAssignment->getReviewFormId()); if ($reviewForm) { $reviewFormTitles[$reviewForm->getReviewFormId()] = $reviewForm->getReviewFormTitle(); } unset($reviewForm); $reviewFormResponses[$reviewAssignment->getReviewId()] = $reviewFormResponseDao->reviewFormResponseExists($reviewAssignment->getReviewId()); } $templateMgr =& TemplateManager::getManager(); $templateMgr->assign_by_ref('submission', $submission); $templateMgr->assign_by_ref('reviewIndexes', $reviewAssignmentDao->getReviewIndexesForRound($articleId, $round)); $templateMgr->assign('round', $round); $templateMgr->assign_by_ref('reviewAssignments', $submission->getReviewAssignments($round)); $templateMgr->assign('reviewFormResponses', $reviewFormResponses); $templateMgr->assign('reviewFormTitles', $reviewFormTitles); $templateMgr->assign_by_ref('notifyReviewerLogs', $notifyReviewerLogs); $templateMgr->assign_by_ref('submissionFile', $submission->getSubmissionFile()); $templateMgr->assign_by_ref('suppFiles', $submission->getSuppFiles()); $templateMgr->assign_by_ref('reviewFile', $submission->getReviewFile()); $templateMgr->assign_by_ref('copyeditFile', $submission->getCopyeditFile()); $templateMgr->assign_by_ref('revisedFile', $submission->getRevisedFile()); $templateMgr->assign_by_ref('editorFile', $submission->getEditorFile()); $templateMgr->assign('rateReviewerOnQuality', $journal->getSetting('rateReviewerOnQuality')); $templateMgr->assign('showPeerReviewOptions', $showPeerReviewOptions); $templateMgr->assign_by_ref('sections', $sections->toArray()); $templateMgr->assign('editorDecisionOptions', array('' => 'common.chooseOne', SUBMISSION_EDITOR_DECISION_ACCEPT => 'editor.article.decision.accept', SUBMISSION_EDITOR_DECISION_PENDING_REVISIONS => 'editor.article.decision.pendingRevisions', SUBMISSION_EDITOR_DECISION_RESUBMIT => 'editor.article.decision.resubmit', SUBMISSION_EDITOR_DECISION_DECLINE => 'editor.article.decision.decline')); $templateMgr->assign_by_ref('lastDecision', $lastDecision); import('submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign_by_ref('reviewerRatingOptions', ReviewAssignment::getReviewerRatingOptions()); $templateMgr->assign('allowRecommendation', $allowRecommendation); $templateMgr->assign('allowResubmit', $allowResubmit); $templateMgr->assign('allowCopyedit', $allowCopyedit); $templateMgr->assign('helpTopicId', 'editorial.sectionEditorsRole.review'); $templateMgr->display('sectionEditor/submissionReview.tpl'); }
/** * Return the object representing the next row. * @return object */ function &next() { $row =& parent::next(); if ($row == null) { return $row; } $ret = array('articleId' => $row['article_id']); $ret['dateSubmitted'] = $this->journalStatisticsDao->dateFromDB($row['date_submitted']); $article =& $this->articleDao->getArticle($row['article_id']); $ret['title'] = $article->getArticleTitle(); $section =& $this->getSection($row['section_id']); $ret['section'] = $section->getSectionTitle(); // Author Names & Affiliations $maxAuthors = $this->getMaxAuthors(); $ret['authors'] = $maxAuthors == 0 ? array() : array_fill(0, $maxAuthors, ''); $ret['affiliations'] = $maxAuthors == 0 ? array() : array_fill(0, $maxAuthors, ''); $ret['countries'] = $maxAuthors == 0 ? array() : array_fill(0, $maxAuthors, ''); $authors =& $this->authorDao->getAuthorsByArticle($row['article_id']); $authorIndex = 0; foreach ($authors as $author) { $ret['authors'][$authorIndex] = $author->getFullName(); $ret['affiliations'][$authorIndex] = $author->getAffiliation(); $country = $author->getCountry(); if (!empty($country)) { $ret['countries'][$authorIndex] = $this->countryDao->getCountry($country); } $authorIndex++; } if ($this->type === REPORT_TYPE_EDITOR) { $user = null; if ($row['editor_id']) { $user =& $this->userDao->getUser($row['editor_id']); } $ret['editor'] = $user ? $user->getFullName() : ''; } else { $editAssignments =& $this->editAssignmentDao->getEditAssignmentsByArticleId($row['article_id']); $maxEditors = $this->getMaxEditors(); $ret['editors'] = $maxEditors == 0 ? array() : array_fill(0, $maxEditors, ''); $editorIndex = 0; while ($editAssignment =& $editAssignments->next()) { $ret['editors'][$editorIndex++] = $editAssignment->getEditorFullName(); } } // Reviewer Names $ratingOptions =& ReviewAssignment::getReviewerRatingOptions(); if ($this->type === REPORT_TYPE_REVIEWER) { $user = null; if ($row['reviewer_id']) { $user =& $this->userDao->getUser($row['reviewer_id']); } $ret['reviewer'] = $user ? $user->getFullName() : ''; if ($row['quality']) { $ret['score'] = Locale::translate($ratingOptions[$row['quality']]); } else { $ret['score'] = ''; } $ret['affiliation'] = $user ? $user->getAffiliation() : ''; } else { $maxReviewers = $this->getMaxReviewers(); $ret['reviewers'] = $maxReviewers == 0 ? array() : array_fill(0, $maxReviewers, ''); $ret['scores'] = $maxReviewers == 0 ? array() : array_fill(0, $maxReviewers, ''); $ret['recommendations'] = $maxReviewers == 0 ? array() : array_fill(0, $maxReviewers, ''); $reviewAssignments =& $this->reviewAssignmentDao->getReviewAssignmentsByArticleId($row['article_id']); $reviewerIndex = 0; foreach ($reviewAssignments as $reviewAssignment) { $reviewerId = $reviewAssignment->getReviewerId(); $ret['reviewers'][$reviewerIndex] = $reviewAssignment->getReviewerFullName(); $rating = $reviewAssignment->getQuality(); if ($rating != '') { $ret['scores'][$reviewerIndex] = Locale::translate($ratingOptions[$rating]); } $recommendation = $reviewAssignment->getRecommendation(); if ($recommendation !== '' && $recommendation !== null) { $recommendationOptions =& $reviewAssignment->getReviewerRecommendationOptions(); $ret['recommendations'][$reviewerIndex] = Locale::translate($recommendationOptions[$recommendation]); } $reviewerIndex++; } } // Fetch the last editorial decision for this article. $editorDecisions = $this->authorSubmissionDao->getEditorDecisions($row['article_id']); $lastDecision = array_pop($editorDecisions); if ($lastDecision) { import('submission.sectionEditor.SectionEditorSubmission'); $decisionOptions =& SectionEditorSubmission::getEditorDecisionOptions(); $ret['decision'] = Locale::translate($decisionOptions[$lastDecision['decision']]); $ret['dateDecided'] = $lastDecision['dateDecided']; $decisionTime = strtotime($lastDecision['dateDecided']); $submitTime = strtotime($ret['dateSubmitted']); if ($decisionTime === false || $decisionTime === -1 || $submitTime === false || $submitTime === -1) { $ret['daysToDecision'] = ''; } else { $ret['daysToDecision'] = round(($decisionTime - $submitTime) / 3600 / 24); } } else { $ret['decision'] = ''; $ret['daysToDecision'] = ''; $ret['dateDecided'] = ''; } $ret['daysToPublication'] = ''; if ($row['pub_id']) { $submitTime = strtotime($ret['dateSubmitted']); $publishTime = strtotime($this->journalStatisticsDao->dateFromDB($row['date_published'])); if ($publishTime > $submitTime) { // Imported documents can be published before // they were submitted -- in this case, ignore // this metric (as opposed to displaying // negative numbers). $ret['daysToPublication'] = round(($publishTime - $submitTime) / 3600 / 24); } } $ret['status'] = $row['status']; return $ret; }
function submissionReview($args, $request) { $paperId = (int) array_shift($args); $this->validate($request, $paperId, TRACK_DIRECTOR_ACCESS_REVIEW); $conference =& $request->getConference(); $schedConf =& $request->getSchedConf(); $submission =& $this->submission; $round = (int) array_shift($args); $reviewMode = $submission->getReviewMode(); switch ($reviewMode) { case REVIEW_MODE_ABSTRACTS_ALONE: $round = REVIEW_ROUND_ABSTRACT; break; case REVIEW_MODE_BOTH_SIMULTANEOUS: case REVIEW_MODE_PRESENTATIONS_ALONE: $round = REVIEW_ROUND_PRESENTATION; break; case REVIEW_MODE_BOTH_SEQUENTIAL: if ($round != REVIEW_ROUND_ABSTRACT && $round != REVIEW_ROUND_PRESENTATION) { $round = $submission->getCurrentRound(); } break; } $this->setupTemplate($request, true, $paperId); $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO'); $trackDao =& DAORegistry::getDAO('TrackDAO'); $tracks =& $trackDao->getSchedConfTracks($schedConf->getId()); $directorDecisions = $submission->getDecisions($round); $lastDecision = count($directorDecisions) >= 1 ? $directorDecisions[count($directorDecisions) - 1]['decision'] : null; $editAssignments =& $submission->getEditAssignments(); $isCurrent = $round == $submission->getCurrentRound(); $showPeerReviewOptions = $isCurrent && $submission->getReviewFile() != null ? true : false; $allowRecommendation = ($isCurrent || $round == REVIEW_ROUND_ABSTRACT && $reviewMode == REVIEW_MODE_BOTH_SEQUENTIAL) && !empty($editAssignments); $reviewingAbstractOnly = $reviewMode == REVIEW_MODE_BOTH_SEQUENTIAL && $round == REVIEW_ROUND_ABSTRACT || $reviewMode == REVIEW_MODE_ABSTRACTS_ALONE; // Prepare an array to store the 'Notify Reviewer' email logs $notifyReviewerLogs = array(); if ($submission->getReviewAssignments($round)) { foreach ($submission->getReviewAssignments($round) as $reviewAssignment) { $notifyReviewerLogs[$reviewAssignment->getId()] = array(); } } // Parse the list of email logs and populate the array. import('classes.paper.log.PaperLog'); $emailLogEntries =& PaperLog::getEmailLogEntries($paperId); foreach ($emailLogEntries->toArray() as $emailLog) { if ($emailLog->getEventType() == PAPER_EMAIL_REVIEW_NOTIFY_REVIEWER) { if (isset($notifyReviewerLogs[$emailLog->getAssocId()]) && is_array($notifyReviewerLogs[$emailLog->getAssocId()])) { array_push($notifyReviewerLogs[$emailLog->getAssocId()], $emailLog); } } } // get conference published review form titles $reviewFormTitles =& $reviewFormDao->getTitlesByAssocId(ASSOC_TYPE_CONFERENCE, $conference->getId(), 1); $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO'); $reviewFormResponses = array(); $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO'); $reviewFormTitles = array(); if ($submission->getReviewAssignments($round)) { foreach ($submission->getReviewAssignments($round) as $reviewAssignment) { $reviewForm =& $reviewFormDao->getReviewForm($reviewAssignment->getReviewFormId()); if ($reviewForm) { $reviewFormTitles[$reviewForm->getId()] = $reviewForm->getLocalizedTitle(); } unset($reviewForm); $reviewFormResponses[$reviewAssignment->getId()] = $reviewFormResponseDao->reviewFormResponseExists($reviewAssignment->getId()); } } $templateMgr =& TemplateManager::getManager(); $templateMgr->assign_by_ref('submission', $submission); $templateMgr->assign_by_ref('reviewIndexes', $reviewAssignmentDao->getReviewIndexesForRound($paperId, $round)); $templateMgr->assign('round', $round); $templateMgr->assign_by_ref('reviewAssignments', $submission->getReviewAssignments($round)); $templateMgr->assign('reviewFormResponses', $reviewFormResponses); $templateMgr->assign('reviewFormTitles', $reviewFormTitles); $templateMgr->assign_by_ref('notifyReviewerLogs', $notifyReviewerLogs); $templateMgr->assign_by_ref('submissionFile', $submission->getSubmissionFile()); $templateMgr->assign_by_ref('suppFiles', $submission->getSuppFiles()); $templateMgr->assign_by_ref('reviewFile', $submission->getReviewFile()); $templateMgr->assign_by_ref('revisedFile', $submission->getRevisedFile()); $templateMgr->assign_by_ref('directorFile', $submission->getDirectorFile()); $templateMgr->assign('rateReviewerOnQuality', $schedConf->getSetting('rateReviewerOnQuality')); $templateMgr->assign('showPeerReviewOptions', $showPeerReviewOptions); $templateMgr->assign_by_ref('tracks', $tracks->toArray()); $templateMgr->assign_by_ref('directorDecisionOptions', TrackDirectorSubmission::getDirectorDecisionOptions()); $templateMgr->assign_by_ref('lastDecision', $lastDecision); $templateMgr->assign_by_ref('directorDecisions', $directorDecisions); if ($reviewMode != REVIEW_MODE_BOTH_SEQUENTIAL || $round == REVIEW_ROUND_PRESENTATION) { $templateMgr->assign('isFinalReview', true); } import('classes.submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign_by_ref('reviewerRatingOptions', ReviewAssignment::getReviewerRatingOptions()); $templateMgr->assign('isCurrent', $isCurrent); $templateMgr->assign('allowRecommendation', $allowRecommendation); $templateMgr->assign('reviewingAbstractOnly', $reviewingAbstractOnly); $templateMgr->assign('helpTopicId', 'editorial.trackDirectorsRole.review'); $controlledVocabDao =& DAORegistry::getDAO('ControlledVocabDAO'); $templateMgr->assign('sessionTypes', $controlledVocabDao->enumerateBySymbolic('sessionTypes', ASSOC_TYPE_SCHED_CONF, $schedConf->getId())); $templateMgr->display('trackDirector/submissionReview.tpl'); }
function submissionReview($args) { $articleId = isset($args[0]) ? (int) $args[0] : 0; $this->validate($articleId, SECTION_EDITOR_ACCESS_REVIEW); $journal =& Request::getJournal(); $submission =& $this->submission; $this->setupTemplate(true, $articleId); Locale::requireComponents(array(LOCALE_COMPONENT_OJS_MANAGER)); $sectionEditorSubmissionDao =& DAORegistry::getDAO('SectionEditorSubmissionDAO'); $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO'); $CBPPlatformDao =& DAORegistry::getDAO('CBPPlatformDAO'); $userDao =& DAORegistry::getDAO('UserDAO'); $templateMgr =& TemplateManager::getManager(); //%CBP% Display is an article has been marked as creatively complete or not $templateMgr->assign_by_ref('creativelyComplete', $CBPPlatformDao->getArticleCreativelyComplete($articleId)); $templateMgr->assign_by_ref('editorAttention', $CBPPlatformDao->getAuthorRequestEditorAttention($articleId)); //has an author requested editor attention? $workshop = $CBPPlatformDao->getWorkshop($journal->getJournalId()); if ($workshop != "structured") { //%CBP% Get reviewer comments and display to author $articleFileDao =& DAORegistry::getDAO('ArticleFileDAO'); $reviewerComments = $CBPPlatformDao->getReviewerComments($articleId, null, null, 0); foreach ($reviewerComments as &$reviewRound) { foreach ($reviewRound as &$reviewerComment) { if ($reviewerComment['reviewer_file_id']) { $reviewerComment['articleFile'] = $articleFileDao->getArticleFile($reviewerComment['reviewer_file_id']); } } } $templateMgr->assign_by_ref('reviewerComments', $reviewerComments); if ($workshop == "workshop") { $templateMgr->assign_by_ref('workshop', $workshop = "workshop"); } else { $templateMgr->assign_by_ref('workshop', $workshop = 1); } } // Setting the round. $round = isset($args[1]) ? $args[1] : $submission->getCurrentRound(); $sectionDao =& DAORegistry::getDAO('SectionDAO'); $sections =& $sectionDao->getJournalSections($journal->getId()); $showPeerReviewOptions = $round == $submission->getCurrentRound() && $submission->getReviewFile() != null ? true : false; $editorDecisions = $submission->getDecisions($round); $lastDecision = count($editorDecisions) >= 1 ? $editorDecisions[count($editorDecisions) - 1]['decision'] : null; $lastDecisionMaker = count($editorDecisions) >= 1 ? $editorDecisions[count($editorDecisions) - 1]['editorId'] : null; $decisionMaker = $userDao->getUser($lastDecisionMaker); if ($decisionMaker) { $lastDecisionMaker = $decisionMaker->getFullName(); } $editAssignments =& $submission->getEditAssignments(); $allowRecommendation = $submission->getCurrentRound() == $round && $submission->getReviewFileId() != null && !empty($editAssignments); //%CBP% fixing bug for workshops, which was enabling decisions to be made after the intial decision was made if ($lastDecision == SUBMISSION_EDITOR_DECISION_ACCEPT) { //$allowRecommendation = false; } $allowResubmit = $lastDecision == SUBMISSION_EDITOR_DECISION_RESUBMIT && $sectionEditorSubmissionDao->getMaxReviewRound($articleId) == $round ? true : false; $allowCopyedit = $lastDecision == SUBMISSION_EDITOR_DECISION_ACCEPT && $submission->getFileBySignoffType('SIGNOFF_COPYEDITING_INITIAL', true) == null ? true : false; // Prepare an array to store the 'Notify Reviewer' email logs $notifyReviewerLogs = array(); foreach ($submission->getReviewAssignments($round) as $reviewAssignment) { $notifyReviewerLogs[$reviewAssignment->getId()] = array(); } // Parse the list of email logs and populate the array. import('classes.article.log.ArticleLog'); $emailLogEntries =& ArticleLog::getEmailLogEntries($articleId); foreach ($emailLogEntries->toArray() as $emailLog) { if ($emailLog->getEventType() == ARTICLE_EMAIL_REVIEW_NOTIFY_REVIEWER) { if (isset($notifyReviewerLogs[$emailLog->getAssocId()]) && is_array($notifyReviewerLogs[$emailLog->getAssocId()])) { array_push($notifyReviewerLogs[$emailLog->getAssocId()], $emailLog); } } } // get journal published review form titles $reviewFormTitles =& $reviewFormDao->getTitlesByAssocId(ASSOC_TYPE_JOURNAL, $journal->getId(), 1); $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO'); $reviewFormResponses = array(); $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO'); $reviewFormTitles = array(); foreach ($submission->getReviewAssignments($round) as $reviewAssignment) { $reviewForm =& $reviewFormDao->getReviewForm($reviewAssignment->getReviewFormId()); if ($reviewForm) { $reviewFormTitles[$reviewForm->getId()] = $reviewForm->getLocalizedTitle(); } unset($reviewForm); $reviewFormResponses[$reviewAssignment->getId()] = $reviewFormResponseDao->reviewFormResponseExists($reviewAssignment->getId()); } $templateMgr->assign_by_ref('submission', $submission); $templateMgr->assign_by_ref('reviewIndexes', $reviewAssignmentDao->getReviewIndexesForRound($articleId, $round)); $templateMgr->assign('round', $round); $templateMgr->assign_by_ref('reviewAssignments', $submission->getReviewAssignments($round)); $templateMgr->assign('reviewFormResponses', $reviewFormResponses); $templateMgr->assign('reviewFormTitles', $reviewFormTitles); $templateMgr->assign_by_ref('notifyReviewerLogs', $notifyReviewerLogs); $templateMgr->assign_by_ref('submissionFile', $submission->getSubmissionFile()); $templateMgr->assign_by_ref('suppFiles', $submission->getSuppFiles()); $templateMgr->assign_by_ref('reviewFile', $submission->getReviewFile()); $templateMgr->assign_by_ref('copyeditFile', $submission->getFileBySignoffType('SIGNOFF_COPYEDITING_INITIAL')); $templateMgr->assign_by_ref('revisedFile', $submission->getRevisedFile()); $templateMgr->assign_by_ref('editorFile', $submission->getEditorFile()); $templateMgr->assign('rateReviewerOnQuality', $journal->getSetting('rateReviewerOnQuality')); $templateMgr->assign('showPeerReviewOptions', $showPeerReviewOptions); $templateMgr->assign_by_ref('sections', $sections->toArray()); $templateMgr->assign('editorDecisionOptions', SectionEditorSubmission::getEditorDecisionOptions()); $templateMgr->assign_by_ref('lastDecision', $lastDecision); $templateMgr->assign_by_ref('lastDecisionMaker', $lastDecisionMaker); import('classes.submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign_by_ref('reviewerRatingOptions', ReviewAssignment::getReviewerRatingOptions()); $templateMgr->assign('allowRecommendation', $allowRecommendation); $templateMgr->assign('allowResubmit', $allowResubmit); $templateMgr->assign('allowCopyedit', $allowCopyedit); $templateMgr->assign('helpTopicId', 'editorial.sectionEditorsRole.review'); $templateMgr->display('sectionEditor/submissionReview.tpl'); }
/** * View the submission review page. * @param $args array * @param $request PKPRequest */ function submissionReview($args, &$request) { $articleId = isset($args[0]) ? (int) $args[0] : 0; $this->validate($articleId, SECTION_EDITOR_ACCESS_REVIEW); $journal =& Request::getJournal(); $submission =& $this->submission; $this->setupTemplate(true, $articleId); AppLocale::requireComponents(LOCALE_COMPONENT_OJS_MANAGER); $sectionEditorSubmissionDao =& DAORegistry::getDAO('SectionEditorSubmissionDAO'); $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); // Setting the round. $round = isset($args[1]) ? $args[1] : $submission->getCurrentRound(); $sectionDao =& DAORegistry::getDAO('SectionDAO'); $sections =& $sectionDao->getJournalSections($journal->getId()); $showPeerReviewOptions = $round == $submission->getCurrentRound() && $submission->getReviewFile() != null ? true : false; $editorDecisions = $submission->getDecisions($round); $lastDecision = count($editorDecisions) >= 1 ? $editorDecisions[count($editorDecisions) - 1]['decision'] : null; $editAssignments =& $submission->getEditAssignments(); $allowRecommendation = $submission->getCurrentRound() == $round && $submission->getReviewFileId() != null && !empty($editAssignments); $allowResubmit = $lastDecision == SUBMISSION_EDITOR_DECISION_RESUBMIT && $sectionEditorSubmissionDao->getMaxReviewRound($articleId) == $round ? true : false; $allowCopyedit = $lastDecision == SUBMISSION_EDITOR_DECISION_ACCEPT && $submission->getFileBySignoffType('SIGNOFF_COPYEDITING_INITIAL', true) == null ? true : false; // Prepare an array to store the 'Notify Reviewer' email logs $notifyReviewerLogs = array(); foreach ($submission->getReviewAssignments($round) as $reviewAssignment) { $notifyReviewerLogs[$reviewAssignment->getId()] = array(); } // Parse the list of email logs and populate the array. $emailLogDao =& DAORegistry::getDAO('ArticleEmailLogDAO'); $emailLogEntries =& $emailLogDao->getByAssoc(ASSOC_TYPE_ARTICLE, $articleId); foreach ($emailLogEntries->toArray() as $emailLog) { if ($emailLog->getEventType() == ARTICLE_EMAIL_REVIEW_NOTIFY_REVIEWER) { if (isset($notifyReviewerLogs[$emailLog->getAssocId()]) && is_array($notifyReviewerLogs[$emailLog->getAssocId()])) { array_push($notifyReviewerLogs[$emailLog->getAssocId()], $emailLog); } } } $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO'); $reviewFormResponses = array(); $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO'); $reviewFormTitles = array(); foreach ($submission->getReviewAssignments($round) as $reviewAssignment) { $reviewForm =& $reviewFormDao->getReviewForm($reviewAssignment->getReviewFormId()); if ($reviewForm) { $reviewFormTitles[$reviewForm->getId()] = $reviewForm->getLocalizedTitle(); } unset($reviewForm); $reviewFormResponses[$reviewAssignment->getId()] = $reviewFormResponseDao->reviewFormResponseExists($reviewAssignment->getId()); } $templateMgr =& TemplateManager::getManager(); $templateMgr->assign_by_ref('submission', $submission); $templateMgr->assign_by_ref('reviewIndexes', $reviewAssignmentDao->getReviewIndexesForRound($articleId, $round)); $templateMgr->assign('round', $round); $templateMgr->assign_by_ref('reviewAssignments', $submission->getReviewAssignments($round)); $templateMgr->assign('reviewFormResponses', $reviewFormResponses); $templateMgr->assign('reviewFormTitles', $reviewFormTitles); $templateMgr->assign_by_ref('notifyReviewerLogs', $notifyReviewerLogs); $templateMgr->assign_by_ref('submissionFile', $submission->getSubmissionFile()); $templateMgr->assign_by_ref('suppFiles', $submission->getSuppFiles()); $templateMgr->assign_by_ref('reviewFile', $submission->getReviewFile()); $templateMgr->assign_by_ref('copyeditFile', $submission->getFileBySignoffType('SIGNOFF_COPYEDITING_INITIAL')); $templateMgr->assign_by_ref('revisedFile', $submission->getRevisedFile()); $templateMgr->assign_by_ref('editorFile', $submission->getEditorFile()); $templateMgr->assign('rateReviewerOnQuality', $journal->getSetting('rateReviewerOnQuality')); $templateMgr->assign('showPeerReviewOptions', $showPeerReviewOptions); $templateMgr->assign_by_ref('sections', $sections->toArray()); $templateMgr->assign('editorDecisionOptions', SectionEditorSubmission::getEditorDecisionOptions()); $templateMgr->assign_by_ref('lastDecision', $lastDecision); import('classes.submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign_by_ref('reviewerRatingOptions', ReviewAssignment::getReviewerRatingOptions()); $templateMgr->assign('allowRecommendation', $allowRecommendation); $templateMgr->assign('allowResubmit', $allowResubmit); $templateMgr->assign('allowCopyedit', $allowCopyedit); $templateMgr->assign('helpTopicId', 'editorial.sectionEditorsRole.review'); $templateMgr->display('sectionEditor/submissionReview.tpl'); }
function submissionReview($args) { $articleId = isset($args[0]) ? (int) $args[0] : 0; $this->validate($articleId, SECTION_EDITOR_ACCESS_REVIEW); $journal =& Request::getJournal(); $submission =& $this->submission; $this->setupTemplate(1, $articleId); $user =& Request::getUser(); Locale::requireComponents(array(LOCALE_COMPONENT_OJS_MANAGER)); $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO'); $sectionDao =& DAORegistry::getDAO('SectionDAO'); $sections =& $sectionDao->getJournalSections($journal->getId()); $sectionDecisionDao =& DAORegistry::getDAO("SectionDecisionDAO"); $lastDecision = $sectionDecisionDao->getLastSectionDecision($articleId); $reviewAssignments =& $lastDecision->getReviewAssignments(); $articleMoreRecent = strtotime($submission->getLastModified()) > strtotime($lastDecision->getDateDecided()) ? true : false; $approvalNoticeDao =& DAORegistry::getDAO("ApprovalNoticeDAO"); $templates =& $approvalNoticeDao->getApprovalNoticesByCommitteeAndTypeId($lastDecision->getSectionId(), $lastDecision->getReviewType()); // Prepare an array to store the 'Notify Reviewer' email logs $notifyReviewerLogs = array(); foreach ($reviewAssignments as $reviewAssignment) { $notifyReviewerLogs[$reviewAssignment->getId()] = array(); } // Parse the list of email logs and populate the array. import('classes.article.log.ArticleLog'); $emailLogEntries =& ArticleLog::getEmailLogEntries($articleId); foreach ($emailLogEntries->toArray() as $emailLog) { if ($emailLog->getEventType() == ARTICLE_EMAIL_REVIEW_NOTIFY_REVIEWER) { if (isset($notifyReviewerLogs[$emailLog->getAssocId()]) && is_array($notifyReviewerLogs[$emailLog->getAssocId()])) { array_push($notifyReviewerLogs[$emailLog->getAssocId()], $emailLog); } } } $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO'); $reviewFormResponses = array(); $reviewFormTitles = array(); foreach ($reviewAssignments as $reviewAssignment) { $reviewForm =& $reviewFormDao->getReviewForm($reviewAssignment->getReviewFormId()); if ($reviewForm) { $reviewFormTitles[$reviewForm->getId()] = $reviewForm->getLocalizedTitle(); } unset($reviewForm); $reviewFormResponses[$reviewAssignment->getId()] = $reviewFormResponseDao->reviewFormResponseExists($reviewAssignment->getId()); } $ercReviewersDao =& DAORegistry::getDAO('ErcReviewersDAO'); $ercReviewers =& $ercReviewersDao->getReviewersBySectionId($journal->getId(), $lastDecision->getSectionId()); $templateMgr =& TemplateManager::getManager(); $templateMgr->assign('articleId', $submission->getArticleId()); $templateMgr->assign('scientificTitle', $submission->getScientificTitle()); $templateMgr->assign('submitter', $submission->getUser()); $templateMgr->assign('commentsToEditor', $submission->getCommentsToEditor()); $templateMgr->assign('dateSubmitted', $submission->getDateSubmitted()); $templateMgr->assign('proposalStatus', $submission->getSubmissionStatus()); $templateMgr->assign('withdrawComments', $submission->getWithdrawComments('en_US')); $templateMgr->assign('withdrawReason', $submission->getWithdrawReason('en_US')); $templateMgr->assign_by_ref('reviewers', $ercReviewers); $templateMgr->assign('proposalId', $submission->getProposalId()); $templateMgr->assign_by_ref('reviewAssignmentCount', count($reviewAssignments)); $templateMgr->assign_by_ref('reviewIndexes', $reviewAssignmentDao->getReviewIndexesForDecision($lastDecision->getId())); $templateMgr->assign_by_ref('reviewAssignments', $reviewAssignments); $templateMgr->assign('reviewFormResponses', $reviewFormResponses); $templateMgr->assign('reviewFormTitles', $reviewFormTitles); $templateMgr->assign('sectionId', $submission->getSectionId()); $templateMgr->assign('templates', $templates); $templateMgr->assign_by_ref('notifyReviewerLogs', $notifyReviewerLogs); $templateMgr->assign_by_ref('submissionFile', $submission->getSubmissionFile()); $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('reviewFile', $submission->getReviewFile()); $templateMgr->assign_by_ref('previousFiles', $submission->getPreviousFiles()); $templateMgr->assign_by_ref('copyeditFile', $submission->getFileBySignoffType('SIGNOFF_COPYEDITING_INITIAL')); $templateMgr->assign_by_ref('revisedFile', $submission->getRevisedFile()); $templateMgr->assign_by_ref('editorFile', $submission->getEditorFile()); $templateMgr->assign_by_ref('sectionDecisions', $submission->getDecisions()); $templateMgr->assign('rateReviewerOnQuality', $journal->getSetting('rateReviewerOnQuality')); $templateMgr->assign_by_ref('sections', $sections->toArray()); $sectionDecisions = SectionEditorSubmission::getEditorDecisionOptions(); $templateMgr->assign('sectionDecisionOptions', $sectionDecisions); import('classes.submission.common.Action'); unset($sectionDecisions[SUBMISSION_SECTION_DECISION_DECLINED]); $templateMgr->assign('sectionDecisionOptionsWithoutDeclined', $sectionDecisions); $templateMgr->assign('initialReviewOptions', SectionEditorSubmission::getInitialReviewOptions()); $reviewOptions = SectionEditorSubmission::getReviewOptions(); $templateMgr->assign('reviewOptions', $reviewOptions); unset($reviewOptions[SUBMISSION_SECTION_DECISION_EXEMPTED]); $templateMgr->assign('reviewOptionsWithoutExempted', $reviewOptions); $templateMgr->assign('continuingReviewOptions', SectionEditorSubmission::getContinuingReviewOptions()); $templateMgr->assign('articleMoreRecent', $articleMoreRecent); $templateMgr->assign('lastDecision', $lastDecision); import('classes.submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->assign_by_ref('reviewerRatingOptions', ReviewAssignment::getReviewerRatingOptions()); // Set up required Payment Related Information import('classes.payment.ojs.OJSPaymentManager'); $paymentManager =& OJSPaymentManager::getManager(); if ($paymentManager->submissionEnabled() || $paymentManager->fastTrackEnabled() || $paymentManager->publicationEnabled()) { $templateMgr->assign('authorFees', true); $completedPaymentDAO =& DAORegistry::getDAO('OJSCompletedPaymentDAO'); if ($paymentManager->submissionEnabled()) { $templateMgr->assign_by_ref('submissionPayment', $completedPaymentDAO->getSubmissionCompletedPayment($journal->getId(), $articleId)); } if ($paymentManager->fastTrackEnabled()) { $templateMgr->assign_by_ref('fastTrackPayment', $completedPaymentDAO->getFastTrackCompletedPayment($journal->getId(), $articleId)); } if ($paymentManager->publicationEnabled()) { $templateMgr->assign_by_ref('publicationPayment', $completedPaymentDAO->getPublicationCompletedPayment($journal->getId(), $articleId)); } } $templateMgr->assign_by_ref('userId', $user->getId()); $templateMgr->assign('helpTopicId', 'editorial.sectionEditorsRole.review'); $templateMgr->display('sectionEditor/submissionReview.tpl'); }