rollback: Log content model changes
authorKunal Mehta <legoktm@member.fsf.org>
Fri, 9 Sep 2016 04:09:24 +0000 (21:09 -0700)
committerKunal Mehta <legoktm@member.fsf.org>
Fri, 9 Sep 2016 04:09:24 +0000 (21:09 -0700)
If the content model changes during a rollback, make sure it is logged
to Special:Log/contentmodel.

Change-Id: Icd9a2b0221468936e186178ef09141c09e053cbb

includes/page/WikiPage.php

index f1e59de..d5dfd3d 100644 (file)
@@ -3235,9 +3235,12 @@ class WikiPage implements Page, IDBAccessObject {
                        $flags |= EDIT_FORCE_BOT;
                }
 
+               $targetContent = $target->getContent();
+               $changingContentModel = $targetContent->getModel() !== $current->getContentModel();
+
                // Actually store the edit
                $status = $this->doEditContent(
-                       $target->getContent(),
+                       $targetContent,
                        $summary,
                        $flags,
                        $target->getId(),
@@ -3287,6 +3290,22 @@ class WikiPage implements Page, IDBAccessObject {
                        ] ];
                }
 
+               if ( $changingContentModel ) {
+                       // If the content model changed during the rollback,
+                       // make sure it gets logged to Special:Log/contentmodel
+                       $log = new ManualLogEntry( 'contentmodel', 'change' );
+                       $log->setPerformer( $guser );
+                       $log->setTarget( $this->mTitle );
+                       $log->setComment( $summary );
+                       $log->setParameters( [
+                               '4::oldmodel' => $current->getContentModel(),
+                               '5::newmodel' => $targetContent->getModel(),
+                       ] );
+
+                       $logId = $log->insert( $dbw );
+                       $log->publish( $logId );
+               }
+
                $revId = $statusRev->getId();
 
                Hooks::run( 'ArticleRollbackComplete', [ $this, $guser, $target, $current ] );