/** * Display a summary of the status of an author's submission. */ function submission($args) { $journal =& Request::getJournal(); $user =& Request::getUser(); $articleId = isset($args[0]) ? (int) $args[0] : 0; list($journal, $submission) = TrackSubmissionHandler::validate($articleId); parent::setupTemplate(true, $articleId); $journalSettingsDao =& DAORegistry::getDAO('JournalSettingsDAO'); $journalSettings = $journalSettingsDao->getJournalSettings($journal->getJournalId()); // Setting the round. $round = isset($args[1]) ? $args[1] : $submission->getCurrentRound(); $templateMgr =& TemplateManager::getManager(); $publishedArticleDao =& DAORegistry::getDAO('PublishedArticleDAO'); $publishedArticle =& $publishedArticleDao->getPublishedArticleByArticleId($submission->getArticleId()); if ($publishedArticle) { $issueDao =& DAORegistry::getDAO('IssueDAO'); $issue =& $issueDao->getIssueById($publishedArticle->getIssueId()); $templateMgr->assign_by_ref('issue', $issue); } $sectionDao =& DAORegistry::getDAO('SectionDAO'); $section =& $sectionDao->getSection($submission->getSectionId()); $templateMgr->assign_by_ref('section', $section); $templateMgr->assign_by_ref('journalSettings', $journalSettings); $templateMgr->assign_by_ref('submission', $submission); $templateMgr->assign_by_ref('publishedArticle', $publishedArticle); $templateMgr->assign_by_ref('reviewAssignments', $submission->getReviewAssignments($round)); $templateMgr->assign('round', $round); $templateMgr->assign_by_ref('submissionFile', $submission->getSubmissionFile()); $templateMgr->assign_by_ref('revisedFile', $submission->getRevisedFile()); $templateMgr->assign_by_ref('suppFiles', $submission->getSuppFiles()); import('submission.sectionEditor.SectionEditorSubmission'); $templateMgr->assign_by_ref('editorDecisionOptions', SectionEditorSubmission::getEditorDecisionOptions()); // Set up required Payment Related Information import('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->getJournalId(), $articleId)); } if ($paymentManager->fastTrackEnabled()) { $templateMgr->assign_by_ref('fastTrackPayment', $completedPaymentDAO->getFastTrackCompletedPayment($journal->getJournalId(), $articleId)); } if ($paymentManager->publicationEnabled()) { $templateMgr->assign_by_ref('publicationPayment', $completedPaymentDAO->getPublicationCompletedPayment($journal->getJournalId(), $articleId)); } } $templateMgr->assign('helpTopicId', 'editorial.authorsRole'); $templateMgr->display('author/submission.tpl'); }
/** * Records an editor's submission decision. * @param $sectionEditorSubmission object * @param $decision int * @param $request object */ function recordDecision(&$sectionEditorSubmission, $decision, $request) { $editAssignments =& $sectionEditorSubmission->getEditAssignments(); if (empty($editAssignments)) { return; } $sectionEditorSubmissionDao =& DAORegistry::getDAO('SectionEditorSubmissionDAO'); $user =& $request->getUser(); $editorDecision = array('editDecisionId' => null, 'editorId' => $user->getId(), 'decision' => $decision, 'dateDecided' => date(Core::getCurrentDate())); if (!HookRegistry::call('SectionEditorAction::recordDecision', array(&$sectionEditorSubmission, $editorDecision))) { $sectionEditorSubmission->setStatus(STATUS_QUEUED); $sectionEditorSubmission->stampStatusModified(); $sectionEditorSubmission->addDecision($editorDecision, $sectionEditorSubmission->getCurrentRound()); $sectionEditorSubmissionDao->updateSectionEditorSubmission($sectionEditorSubmission); $decisions = SectionEditorSubmission::getEditorDecisionOptions(); // Add log import('classes.article.log.ArticleLog'); AppLocale::requireComponents(LOCALE_COMPONENT_APPLICATION_COMMON, LOCALE_COMPONENT_OJS_EDITOR); ArticleLog::logEvent($request, $sectionEditorSubmission, ARTICLE_LOG_EDITOR_DECISION, 'log.editor.decision', array('editorName' => $user->getFullName(), 'decision' => __($decisions[$decision]))); } }
/** * Records an editor's submission decision. * @param $sectionEditorSubmission object * @param $decision int */ function recordDecision($sectionEditorSubmission, $decision) { $editAssignments =& $sectionEditorSubmission->getEditAssignments(); if (empty($editAssignments)) { return; } $sectionEditorSubmissionDao =& DAORegistry::getDAO('SectionEditorSubmissionDAO'); $user =& Request::getUser(); $editorDecision = array('editDecisionId' => null, 'editorId' => $user->getUserId(), 'decision' => $decision, 'dateDecided' => date(Core::getCurrentDate())); if (!HookRegistry::call('SectionEditorAction::recordDecision', array(&$sectionEditorSubmission, $editorDecision))) { $sectionEditorSubmission->setStatus(STATUS_QUEUED); $sectionEditorSubmission->stampStatusModified(); $sectionEditorSubmission->addDecision($editorDecision, $sectionEditorSubmission->getCurrentRound()); $sectionEditorSubmissionDao->updateSectionEditorSubmission($sectionEditorSubmission); $decisions = SectionEditorSubmission::getEditorDecisionOptions(); // Add log import('article.log.ArticleLog'); import('article.log.ArticleEventLogEntry'); ArticleLog::logEvent($sectionEditorSubmission->getArticleId(), ARTICLE_LOG_EDITOR_DECISION, ARTICLE_LOG_TYPE_EDITOR, $user->getUserId(), 'log.editor.decision', array('editorName' => $user->getFullName(), 'articleId' => $sectionEditorSubmission->getArticleId(), 'decision' => Locale::translate($decisions[$decision]))); } }
function submissionRegrets($args) { $articleId = isset($args[0]) ? (int) $args[0] : 0; list($journal, $submission) = SubmissionEditHandler::validate($articleId); parent::setupTemplate(true, $articleId, 'review'); $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $cancelsAndRegrets = $reviewAssignmentDao->getCancelsAndRegrets($articleId); $reviewFilesByRound = $reviewAssignmentDao->getReviewFilesByRound($articleId); $reviewAssignments =& $submission->getReviewAssignments(); $editorDecisions = $submission->getDecisions(); $numRounds = $submission->getCurrentRound(); $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO'); $reviewFormResponses = array(); if (isset($reviewAssignments[$numRounds - 1])) { foreach ($reviewAssignments[$numRounds - 1] as $reviewAssignment) { $reviewFormResponses[$reviewAssignment->getReviewId()] = $reviewFormResponseDao->reviewFormResponseExists($reviewAssignment->getReviewId()); } } $templateMgr =& TemplateManager::getManager(); $templateMgr->assign_by_ref('submission', $submission); $templateMgr->assign_by_ref('reviewAssignments', $reviewAssignments); $templateMgr->assign('reviewFormResponses', $reviewFormResponses); $templateMgr->assign_by_ref('cancelsAndRegrets', $cancelsAndRegrets); $templateMgr->assign_by_ref('reviewFilesByRound', $reviewFilesByRound); $templateMgr->assign_by_ref('editorDecisions', $editorDecisions); $templateMgr->assign('numRounds', $numRounds); $templateMgr->assign('rateReviewerOnQuality', $journal->getSetting('rateReviewerOnQuality')); $templateMgr->assign_by_ref('editorDecisionOptions', SectionEditorSubmission::getEditorDecisionOptions()); import('submission.reviewAssignment.ReviewAssignment'); $templateMgr->assign_by_ref('reviewerRatingOptions', ReviewAssignment::getReviewerRatingOptions()); $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); $templateMgr->display('sectionEditor/submissionRegrets.tpl'); }
/** * Display specific details of an author's submission. */ function submissionReview($args) { $user =& Request::getUser(); $journal =& Request::getJournal(); $articleId = isset($args[0]) ? (int) $args[0] : 0; $this->validate($articleId); $authorSubmission =& $this->submission; $this->setupTemplate(true, $articleId); Locale::requireComponents(array(LOCALE_COMPONENT_OJS_EDITOR)); // editor.article.decision etc. FIXME? $templateMgr =& TemplateManager::getManager(); //%CBP% Handle the author marking an item of work as creatively complete $CBPPlatformDao =& DAORegistry::getDAO('CBPPlatformDAO'); if ($requestArgs = Request::getUserVar("f") == "creatively_complete") { $CBPPlatformDao->setArticleAsCreativelyComplete($articleId); } $templateMgr->assign_by_ref('creativelyComplete', $CBPPlatformDao->getArticleCreativelyComplete($articleId)); //%CBP% Handle author request to bring editor into proceedings (WORKSHOP BASED ONLY) $templateMgr->assign_by_ref('workshop', $CBPPlatformDao->getWorkshop($journal->getJournalId())); if ($requestArgs = Request::getUserVar("f") == "editor_request") { $CBPPlatformDao->setAuthorRequestEditorAttention($articleId); } $templateMgr->assign_by_ref('editorRequest', $CBPPlatformDao->getAuthorRequestEditorAttention($articleId)); $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $reviewModifiedByRound = $reviewAssignmentDao->getLastModifiedByRound($articleId); $reviewEarliestNotificationByRound = $reviewAssignmentDao->getEarliestNotificationByRound($articleId); $reviewFilesByRound =& $reviewAssignmentDao->getReviewFilesByRound($articleId); $authorViewableFilesByRound =& $reviewAssignmentDao->getAuthorViewableFilesByRound($articleId); $editorDecisions = $authorSubmission->getDecisions($authorSubmission->getCurrentRound()); $lastDecision = count($editorDecisions) >= 1 ? $editorDecisions[count($editorDecisions) - 1] : null; //%CBP% Get reviewer comments and display to author $articleFileDao =& DAORegistry::getDAO('ArticleFileDAO'); $reviewerComments = $CBPPlatformDao->getReviewerComments($articleId, null, null, 1); 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); $reviewAssignments =& $authorSubmission->getReviewAssignments(); $templateMgr->assign_by_ref('reviewAssignments', $reviewAssignments); $templateMgr->assign_by_ref('submission', $authorSubmission); $templateMgr->assign_by_ref('reviewFilesByRound', $reviewFilesByRound); $templateMgr->assign_by_ref('authorViewableFilesByRound', $authorViewableFilesByRound); $templateMgr->assign_by_ref('reviewModifiedByRound', $reviewModifiedByRound); $reviewIndexesByRound = array(); for ($round = 1; $round <= $authorSubmission->getCurrentRound(); $round++) { $reviewIndexesByRound[$round] = $reviewAssignmentDao->getReviewIndexesForRound($articleId, $round); } $templateMgr->assign_by_ref('reviewIndexesByRound', $reviewIndexesByRound); $templateMgr->assign('reviewEarliestNotificationByRound', $reviewEarliestNotificationByRound); $templateMgr->assign_by_ref('submissionFile', $authorSubmission->getSubmissionFile()); $templateMgr->assign_by_ref('revisedFile', $authorSubmission->getRevisedFile()); $templateMgr->assign_by_ref('suppFiles', $authorSubmission->getSuppFiles()); $templateMgr->assign('lastEditorDecision', $lastDecision); import('classes.submission.sectionEditor.SectionEditorSubmission'); $templateMgr->assign('editorDecisionOptions', SectionEditorSubmission::getEditorDecisionOptions()); $templateMgr->assign('helpTopicId', 'editorial.authorsRole.review'); $templateMgr->display('author/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) { $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'); }
/** * Display a summary of the status of an author's submission. */ function submission($args) { $journal =& Request::getJournal(); $user =& Request::getUser(); $articleId = isset($args[0]) ? (int) $args[0] : 0; $this->validate($articleId); $submission =& $this->submission; $this->setupTemplate(true, $articleId); $journalSettingsDao =& DAORegistry::getDAO('JournalSettingsDAO'); $journalSettings = $journalSettingsDao->getJournalSettings($journal->getId()); $templateMgr =& TemplateManager::getManager(); $publishedArticleDao =& DAORegistry::getDAO('PublishedArticleDAO'); $publishedArticle =& $publishedArticleDao->getPublishedArticleByArticleId($submission->getArticleId()); if ($publishedArticle) { $issueDao =& DAORegistry::getDAO('IssueDAO'); $issue =& $issueDao->getIssueById($publishedArticle->getIssueId()); $templateMgr->assign_by_ref('issue', $issue); } $sectionDao =& DAORegistry::getDAO('SectionDAO'); $section =& $sectionDao->getSection($submission->getSectionId()); $templateMgr->assign_by_ref('section', $section); $templateMgr->assign_by_ref('journalSettings', $journalSettings); $templateMgr->assign_by_ref('submission', $submission); $templateMgr->assign_by_ref('publishedArticle', $publishedArticle); $templateMgr->assign_by_ref('submissionFile', $submission->getSubmissionFile()); $templateMgr->assign_by_ref('revisedFile', $submission->getRevisedFile()); $templateMgr->assign_by_ref('suppFiles', $submission->getSuppFiles()); $templateMgr->assign_by_ref('reportFiles', $submission->getReportFiles()); $templateMgr->assign_by_ref('saeFiles', $submission->getSAEFiles()); $suppFileDao =& DAORegistry::getDAO('SuppFileDAO'); $templateMgr->assign_by_ref('suppFileDao', $suppFileDao); import('classes.submission.sectionEditor.SectionEditorSubmission'); $templateMgr->assign_by_ref('editorDecisionOptions', SectionEditorSubmission::getEditorDecisionOptions()); $templateMgr->assign('helpTopicId', 'editorial.authorsRole'); $lastSectionDecision = $submission->getLastSectionDecision(); if ($lastSectionDecision->getDecision() == SUBMISSION_SECTION_NO_DECISION && $lastSectionDecision->getReviewType() == REVIEW_TYPE_INITIAL) { $canEditMetadata = true; $canEditFiles = true; } else { $canEditMetadata = false; $canEditFiles = false; } $templateMgr->assign('canEditMetadata', $canEditMetadata); $templateMgr->assign('canEditFiles', $canEditFiles); $templateMgr->assign_by_ref('riskAssessment', $submission->getRiskAssessment()); $templateMgr->assign_by_ref('abstract', $submission->getLocalizedAbstract()); $currencyDao =& DAORegistry::getDAO('CurrencyDAO'); $sourceCurrencyId = $journal->getSetting('sourceCurrency'); $templateMgr->assign('sourceCurrency', $currencyDao->getCurrencyByAlphaCode($sourceCurrencyId)); $templateMgr->display('author/submission.tpl'); }
/** * Display specific details of an author's submission. */ function submissionReview($args) { $user =& Request::getUser(); $articleId = isset($args[0]) ? (int) $args[0] : 0; $this->validate($articleId); $authorSubmission =& $this->submission; $this->setupTemplate(true, $articleId); AppLocale::requireComponents(array(LOCALE_COMPONENT_OJS_EDITOR)); // editor.article.decision etc. FIXME? $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO'); $reviewModifiedByRound = $reviewAssignmentDao->getLastModifiedByRound($articleId); $reviewEarliestNotificationByRound = $reviewAssignmentDao->getEarliestNotificationByRound($articleId); $reviewFilesByRound =& $reviewAssignmentDao->getReviewFilesByRound($articleId); $authorViewableFilesByRound =& $reviewAssignmentDao->getAuthorViewableFilesByRound($articleId); $editorDecisions = $authorSubmission->getDecisions($authorSubmission->getCurrentRound()); $lastDecision = count($editorDecisions) >= 1 ? $editorDecisions[count($editorDecisions) - 1] : null; $templateMgr =& TemplateManager::getManager(); $reviewAssignments =& $authorSubmission->getReviewAssignments(); $templateMgr->assign_by_ref('reviewAssignments', $reviewAssignments); $templateMgr->assign_by_ref('submission', $authorSubmission); $templateMgr->assign_by_ref('reviewFilesByRound', $reviewFilesByRound); $templateMgr->assign_by_ref('authorViewableFilesByRound', $authorViewableFilesByRound); $templateMgr->assign_by_ref('reviewModifiedByRound', $reviewModifiedByRound); $reviewIndexesByRound = array(); for ($round = 1; $round <= $authorSubmission->getCurrentRound(); $round++) { $reviewIndexesByRound[$round] = $reviewAssignmentDao->getReviewIndexesForRound($articleId, $round); } $templateMgr->assign_by_ref('reviewIndexesByRound', $reviewIndexesByRound); $templateMgr->assign('reviewEarliestNotificationByRound', $reviewEarliestNotificationByRound); $templateMgr->assign_by_ref('submissionFile', $authorSubmission->getSubmissionFile()); $templateMgr->assign_by_ref('revisedFile', $authorSubmission->getRevisedFile()); $templateMgr->assign_by_ref('suppFiles', $authorSubmission->getSuppFiles()); $templateMgr->assign('lastEditorDecision', $lastDecision); import('classes.submission.sectionEditor.SectionEditorSubmission'); $templateMgr->assign('editorDecisionOptions', SectionEditorSubmission::getEditorDecisionOptions()); $templateMgr->assign('helpTopicId', 'editorial.authorsRole.review'); $templateMgr->display('author/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'); }