Legoktm has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/226938

Change subject: Populate rev_content_model when a move causes default content 
model to change
......................................................................

Populate rev_content_model when a move causes default content model to change

If the default content model changes due to a page move, a NULL in
rev_content_model will now reference the new default, which is not how
the revision was serialized, causing an exception to be thrown.

This was caused by a5bc9f49cd01e, since previously NULL would use the
correct, but techncially inaccurate, page_content_model.

Bug: T105260
Change-Id: I0c29d0e657ad0b656e5da6ba365f337229ad4dfd
---
M includes/MovePage.php
1 file changed, 17 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/38/226938/1

diff --git a/includes/MovePage.php b/includes/MovePage.php
index 9891106..964fbff 100644
--- a/includes/MovePage.php
+++ b/includes/MovePage.php
@@ -416,6 +416,13 @@
                        $redirectContent = null;
                }
 
+               // Figure out whether the content model is no longer the default
+               $oldDefault = ContentHandler::getDefaultModelFor( 
$this->oldTitle );
+               $contentModel = $this->oldTitle->getContentModel();
+               $newDefault = ContentHandler::getDefaultModelFor( $nt );
+               $defaultContentModelChanging = ( $oldDefault !== $newDefault
+                       && $oldDefault === $contentModel );
+
                // bug 57084: log_page should be the ID of the *moved* page
                $oldid = $this->oldTitle->getArticleID();
                $logTitle = clone $this->oldTitle;
@@ -493,6 +500,16 @@
                $newpage->doEditUpdates( $nullRevision, $user,
                        array( 'changed' => false, 'moved' => true, 
'oldcountable' => $oldcountable ) );
 
+               // If the default content model changes, we need to populate 
rev_content_model
+               if ( $defaultContentModelChanging ) {
+                       $dbw->update(
+                               'revision',
+                               array( 'rev_content_model' => $contentModel ),
+                               array( 'rev_page' => $nt->getArticleID(), 
'rev_content_model IS NULL' ),
+                               __METHOD__
+                       );
+               }
+
                if ( !$moveOverRedirect ) {
                        WikiPage::onArticleCreate( $nt );
                }

-- 
To view, visit https://gerrit.wikimedia.org/r/226938
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0c29d0e657ad0b656e5da6ba365f337229ad4dfd
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Legoktm <legoktm.wikipe...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to