From: Kunal Mehta Date: Fri, 9 Sep 2016 04:09:24 +0000 (-0700) Subject: rollback: Log content model changes X-Git-Tag: 1.31.0-rc.0~5687^2 X-Git-Url: http://git.cyclocoop.org/%24href?a=commitdiff_plain;h=67c38c2ad2fa8869faa4f8b34baacdb684860bab;p=lhc%2Fweb%2Fwiklou.git 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 --- 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 ] );