/** * Update an existing section editor submission. * @param $sectionEditorSubmission SectionEditorSubmission */ function updateSectionEditorSubmission(&$sectionEditorSubmission) { // update edit assignment $editAssignments =& $sectionEditorSubmission->getEditAssignments(); foreach ($editAssignments as $editAssignment) { if ($editAssignment->getEditId() > 0) { $this->editAssignmentDao->updateEditAssignment($editAssignment); } else { $this->editAssignmentDao->insertEditAssignment($editAssignment); } } // Update editor decisions for ($i = 1; $i <= $sectionEditorSubmission->getCurrentRound(); $i++) { $editorDecisions = $sectionEditorSubmission->getDecisions($i); if (is_array($editorDecisions)) { foreach ($editorDecisions as $editorDecision) { if ($editorDecision['editDecisionId'] == null) { $this->update(sprintf('INSERT INTO edit_decisions (article_id, round, editor_id, decision, date_decided) VALUES (?, ?, ?, ?, %s)', $this->datetimeToDB($editorDecision['dateDecided'])), array($sectionEditorSubmission->getArticleId(), $sectionEditorSubmission->getCurrentRound(), $editorDecision['editorId'], $editorDecision['decision'])); } } } } if ($this->reviewRoundExists($sectionEditorSubmission->getArticleId(), $sectionEditorSubmission->getCurrentRound())) { $this->update('UPDATE review_rounds SET review_revision = ? WHERE article_id = ? AND round = ?', array($sectionEditorSubmission->getReviewRevision(), $sectionEditorSubmission->getArticleId(), $sectionEditorSubmission->getCurrentRound())); } elseif ($sectionEditorSubmission->getReviewRevision() != null) { $this->createReviewRound($sectionEditorSubmission->getArticleId(), $sectionEditorSubmission->getCurrentRound() === null ? 1 : $sectionEditorSubmission->getCurrentRound(), $sectionEditorSubmission->getReviewRevision()); } // Update copyeditor assignment $copyeditSignoff = $this->signoffDao->getBySymbolic('SIGNOFF_COPYEDITING_INITIAL', ASSOC_TYPE_ARTICLE, $sectionEditorSubmission->getArticleId()); if ($copyeditSignoff) { $copyeditorSubmission =& $this->copyeditorSubmissionDao->getCopyeditorSubmission($sectionEditorSubmission->getArticleId()); } else { $copyeditorSubmission = new CopyeditorSubmission(); } // Only update the fields that an editor can modify. $copyeditorSubmission->setArticleId($sectionEditorSubmission->getArticleId()); $copyeditorSubmission->setDateStatusModified($sectionEditorSubmission->getDateStatusModified()); $copyeditorSubmission->setLastModified($sectionEditorSubmission->getLastModified()); // update review assignments foreach ($sectionEditorSubmission->getReviewAssignments() as $roundReviewAssignments) { foreach ($roundReviewAssignments as $reviewAssignment) { if ($reviewAssignment->getId() > 0) { $this->reviewAssignmentDao->updateReviewAssignment($reviewAssignment); } else { $this->reviewAssignmentDao->insertReviewAssignment($reviewAssignment); } } } // Remove deleted review assignments $removedReviewAssignments = $sectionEditorSubmission->getRemovedReviewAssignments(); for ($i = 0, $count = count($removedReviewAssignments); $i < $count; $i++) { $this->reviewAssignmentDao->deleteReviewAssignmentById($removedReviewAssignments[$i]); } // Update article if ($sectionEditorSubmission->getArticleId()) { $article =& $this->articleDao->getArticle($sectionEditorSubmission->getArticleId()); // Only update fields that can actually be edited. $article->setSectionId($sectionEditorSubmission->getSectionId()); $article->setCurrentRound($sectionEditorSubmission->getCurrentRound()); $article->setReviewFileId($sectionEditorSubmission->getReviewFileId()); $article->setEditorFileId($sectionEditorSubmission->getEditorFileId()); $article->setStatus($sectionEditorSubmission->getStatus()); $article->setDateStatusModified($sectionEditorSubmission->getDateStatusModified()); $article->setLastModified($sectionEditorSubmission->getLastModified()); $article->setCommentsStatus($sectionEditorSubmission->getCommentsStatus()); $this->articleDao->updateArticle($article); } }
/** * Update an existing section editor submission. * @param $sectionEditorSubmission SectionEditorSubmission */ function updateSectionEditorSubmission(&$sectionEditorSubmission) { // Update section decisions $sectionDecisions = $sectionEditorSubmission->getDecisions(); if (is_array($sectionDecisions)) { foreach ($sectionDecisions as $sectionDecision) { if ($sectionDecision->getId() == null) { $this->sectionDecisionDao->insertSectionDecision($sectionDecision); } else { $this->sectionDecisionDao->updateSectionDecision($sectionDecision); } } } // Update copyeditor assignment $copyeditSignoff = $this->signoffDao->getBySymbolic('SIGNOFF_COPYEDITING_INITIAL', ASSOC_TYPE_ARTICLE, $sectionEditorSubmission->getArticleId()); if ($copyeditSignoff) { $copyeditorSubmission =& $this->copyeditorSubmissionDao->getCopyeditorSubmission($sectionEditorSubmission->getArticleId()); } else { $copyeditorSubmission = new CopyeditorSubmission(); } // Only update the fields that an editor can modify. $copyeditorSubmission->setArticleId($sectionEditorSubmission->getArticleId()); $copyeditorSubmission->setDateStatusModified($sectionEditorSubmission->getDateStatusModified()); $copyeditorSubmission->setLastModified($sectionEditorSubmission->getLastModified()); // Update article if ($sectionEditorSubmission->getArticleId()) { $article =& $this->articleDao->getArticle($sectionEditorSubmission->getArticleId()); // Only update fields that can actually be edited. $article->setReviewFileId($sectionEditorSubmission->getReviewFileId()); $article->setEditorFileId($sectionEditorSubmission->getEditorFileId()); $article->setStatus($sectionEditorSubmission->getStatus()); $article->setDateStatusModified($sectionEditorSubmission->getDateStatusModified()); $article->setLastModified($sectionEditorSubmission->getLastModified()); $article->setCommentsStatus($sectionEditorSubmission->getCommentsStatus()); $this->articleDao->updateArticle($article); } }