From 67c38c2ad2fa8869faa4f8b34baacdb684860bab Mon Sep 17 00:00:00 2001 From: Kunal Mehta Date: Thu, 8 Sep 2016 21:09:24 -0700 Subject: [PATCH] rollback: Log content model changes If the content model changes during a rollback, make sure it is logged to Special:Log/contentmodel. Change-Id: Icd9a2b0221468936e186178ef09141c09e053cbb --- includes/page/WikiPage.php | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index f1e59de4b5..d5dfd3d00a 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -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 ] ); -- 2.20.1