Revision: Interpret a NULL rev_content_model as the default model
authorKunal Mehta <legoktm@gmail.com>
Thu, 2 Jul 2015 07:40:40 +0000 (00:40 -0700)
committerKunal Mehta <legoktm@gmail.com>
Thu, 2 Jul 2015 07:40:40 +0000 (00:40 -0700)
If a revision using the default content model is saved, the
rev_content_model field will be set to NULL in order to save space.
However, Revision::getContentModel() was using Title::getContentModel()
when it found a NULL, which will return the current content model rather
than the default. So change that to use the default content model, as
returned by ContentHandler::getDefaultModelFor() rather than the current
one.

Change-Id: I7011812b6b131170b3c593917ad263bcba83898d

includes/Revision.php

index 5939715..71bdf58 100644 (file)
@@ -1087,7 +1087,7 @@ class Revision implements IDBAccessObject {
        /**
         * Returns the content model for this revision.
         *
-        * If no content model was stored in the database, $this->getTitle()->getContentModel() is
+        * If no content model was stored in the database, the default content model for the title is
         * used to determine the content model to use. If no title is know, CONTENT_MODEL_WIKITEXT
         * is used as a last resort.
         *
@@ -1097,7 +1097,11 @@ class Revision implements IDBAccessObject {
        public function getContentModel() {
                if ( !$this->mContentModel ) {
                        $title = $this->getTitle();
-                       $this->mContentModel = ( $title ? $title->getContentModel() : CONTENT_MODEL_WIKITEXT );
+                       if ( $title ) {
+                               $this->mContentModel = ContentHandler::getDefaultModelFor( $title );
+                       } else {
+                               $this->mContentModel = CONTENT_MODEL_WIKITEXT;
+                       }
 
                        assert( !empty( $this->mContentModel ) );
                }