function moveToPage($title, $reason, $leave_trace) { if (!$this->isTopmostThread()) { throw new MWException("Attempt to move non-toplevel thread to another page"); } $this->dieIfHistorical(); $dbr = wfGetDB(DB_MASTER); $oldTitle = $this->getTitle(); $newTitle = $title; $new_articleNamespace = $title->getNamespace(); $new_articleTitle = $title->getDBkey(); $new_articleID = $title->getArticleID(); if (!$new_articleID) { $article = new Article($newTitle); Threads::createTalkpageIfNeeded($article); $new_articleID = $article->getId(); } // Update on *all* subthreads. $dbr->update('thread', array('thread_article_namespace' => $new_articleNamespace, 'thread_article_title' => $new_articleTitle, 'thread_article_id' => $new_articleID), array('thread_ancestor' => $this->id()), __METHOD__); $this->articleNamespace = $new_articleNamespace; $this->articleTitle = $new_articleTitle; $this->articleId = $new_articleID; $this->article = null; $this->commitRevision(Threads::CHANGE_MOVED_TALKPAGE, null, $reason); if ($leave_trace) { $this->leaveTrace($reason, $oldTitle, $newTitle); } }