ArticleDAO::updateObject PHP Method

updateObject() public method

Update an existing article.
public updateObject ( $article )
$article Article
    function updateObject($article)
    {
        $article->stampModified();
        $this->update(sprintf('UPDATE submissions
				SET	locale = ?,
					section_id = ?,
					stage_id = ?,
					language = ?,
					comments_to_ed = ?,
					citations = ?,
					date_submitted = %s,
					date_status_modified = %s,
					last_modified = %s,
					status = ?,
					submission_progress = ?,
					current_round = ?,
					pages = ?,
					fast_tracked = ?,
					hide_author = ?
				WHERE submission_id = ?', $this->datetimeToDB($article->getDateSubmitted()), $this->datetimeToDB($article->getDateStatusModified()), $this->datetimeToDB($article->getLastModified())), array($article->getLocale(), (int) $article->getSectionId(), (int) $article->getStageId(), $article->getLanguage(), $article->getCommentsToEditor(), $article->getCitations(), (int) $article->getStatus(), (int) $article->getSubmissionProgress(), (int) $article->getCurrentRound(), $article->getPages(), (int) $article->getFastTracked(), (int) $article->getHideAuthor(), (int) $article->getId()));
        $this->updateLocaleFields($article);
        // update authors for this article
        $authors = $article->getAuthors();
        for ($i = 0, $count = count($authors); $i < $count; $i++) {
            if ($authors[$i]->getId() > 0) {
                $this->authorDao->updateObject($authors[$i]);
            } else {
                $this->authorDao->insertObject($authors[$i]);
            }
        }
        // Update author sequence numbers
        $this->authorDao->resequenceAuthors($article->getId());
        $this->flushCache();
    }

Usage Example

    /**
     * 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);
        }
    }