/** * Update an existing section editor submission. * @param $sectionEditorSubmission SectionEditorSubmission */ function updateSectionEditorSubmission(&$sectionEditorSubmission) { // Update editor decisions for ($i = 1; $i <= $sectionEditorSubmission->getCurrentRound(); $i++) { $editorDecisions =& $sectionEditorSubmission->getDecisions($i); if (is_array($editorDecisions)) { foreach ($editorDecisions as $key => $editorDecision) { if ($editorDecision['editDecisionId'] == null) { $this->update(sprintf('INSERT INTO edit_decisions (submission_id, round, editor_id, decision, date_decided) VALUES (?, ?, ?, ?, %s)', $this->datetimeToDB($editorDecision['dateDecided'])), array($sectionEditorSubmission->getId(), $sectionEditorSubmission->getCurrentRound(), $editorDecision['editorId'], $editorDecision['decision'])); $editorDecisions[$key]['editDecisionId'] = $this->_getInsertId('edit_decisions', 'edit_decision_id'); } } } unset($editorDecisions); } // update review assignments foreach ($sectionEditorSubmission->getReviewAssignments() as $roundReviewAssignments) { foreach ($roundReviewAssignments as $reviewAssignment) { if ($reviewAssignment->getId() > 0) { $this->reviewAssignmentDao->updateObject($reviewAssignment); } else { $this->reviewAssignmentDao->insertObject($reviewAssignment); } } } // Remove deleted review assignments $removedReviewAssignments = $sectionEditorSubmission->getRemovedReviewAssignments(); for ($i = 0, $count = count($removedReviewAssignments); $i < $count; $i++) { $this->reviewAssignmentDao->deleteById($removedReviewAssignments[$i]); } // Update article if ($sectionEditorSubmission->getId()) { $article = parent::getById($sectionEditorSubmission->getId()); // Only update fields that can actually be edited. $article->setSectionId($sectionEditorSubmission->getSectionId()); $article->setCurrentRound($sectionEditorSubmission->getCurrentRound()); $article->setStatus($sectionEditorSubmission->getStatus()); $article->setDateStatusModified($sectionEditorSubmission->getDateStatusModified()); $article->setLastModified($sectionEditorSubmission->getLastModified()); $article->setCommentsStatus($sectionEditorSubmission->getCommentsStatus()); parent::updateObject($article); } }