aboutsummaryrefslogtreecommitdiffstats
path: root/includes/MovePage.php
diff options
context:
space:
mode:
authorPetr Pchelko <ppchelko@wikimedia.org>2021-07-27 14:34:19 -0700
committerPpchelko <ppchelko@wikimedia.org>2021-09-17 15:49:50 +0000
commite33f6b4b8eb7babeabad6de24ff5aef4b6929a7b (patch)
treedeede7426038f545a64cf9f8a634dfd542819788 /includes/MovePage.php
parentb1b9c296b7121a005f2db8cddd8a68292ffe84b2 (diff)
downloadmediawikicore-e33f6b4b8eb7babeabad6de24ff5aef4b6929a7b.tar.gz
mediawikicore-e33f6b4b8eb7babeabad6de24ff5aef4b6929a7b.zip
MovePage - use PageUpdater to create redirect page
After parent patch MovePage changed code is covered by tests, plus tested locally quite a bit. Seems to work. Change-Id: I0f8db203eb4aa767e5e1f3067f3a9e35835f38ea
Diffstat (limited to 'includes/MovePage.php')
-rw-r--r--includes/MovePage.php53
1 files changed, 6 insertions, 47 deletions
diff --git a/includes/MovePage.php b/includes/MovePage.php
index b8d784925b2b..452f9978ef2c 100644
--- a/includes/MovePage.php
+++ b/includes/MovePage.php
@@ -31,7 +31,6 @@ use MediaWiki\Page\PageIdentity;
use MediaWiki\Page\WikiPageFactory;
use MediaWiki\Permissions\Authority;
use MediaWiki\Permissions\PermissionStatus;
-use MediaWiki\Revision\MutableRevisionRecord;
use MediaWiki\Revision\RevisionRecord;
use MediaWiki\Revision\RevisionStore;
use MediaWiki\Revision\SlotRecord;
@@ -1027,52 +1026,12 @@ class MovePage {
if ( $redirectContent ) {
$redirectArticle = $this->wikiPageFactory->newFromTitle( $this->oldTitle );
$redirectArticle->loadFromRow( false, WikiPage::READ_LOCKING ); // T48397
- $newid = $redirectArticle->insertOn( $dbw );
- if ( $newid ) { // sanity
- $this->oldTitle->resetArticleID( $newid );
- $redirectRevRecord = new MutableRevisionRecord( $this->oldTitle );
- $redirectRevRecord->setPageId( $newid )
- ->setUser( $user )
- ->setComment( $commentObj )
- ->setContent( SlotRecord::MAIN, $redirectContent )
- ->setTimestamp( MWTimestamp::now( TS_MW ) );
-
- $inserted = $this->revisionStore->insertRevisionOn(
- $redirectRevRecord,
- $dbw
- );
- $redirectRevId = $inserted->getId();
- $redirectArticle->updateRevisionOn( $dbw, $inserted, 0 );
-
- $fakeTags = [];
- $this->hookRunner->onRevisionFromEditComplete(
- $redirectArticle,
- $inserted,
- false,
- $user,
- $fakeTags
- );
-
- // Clear all caches to make sure no stale information is used
- // when parsing the newly created redirect. Without this, moves would fail
- // under certain conditions when Lua core runs on the new page.
- // It is not entirely clear why this is needed, we just found that
- // it fixes the issue at hand (T279832).
- Title::clearCaches();
-
- $redirectArticle->doEditUpdates(
- $inserted,
- $user,
- [ 'created' => true ]
- );
-
- // make a copy because of log entry below
- $redirectTags = $changeTags;
- if ( in_array( 'mw-new-redirect', ChangeTags::getSoftwareTags() ) ) {
- $redirectTags[] = 'mw-new-redirect';
- }
- ChangeTags::addTags( $redirectTags, null, $redirectRevId, null );
- }
+ $redirectArticle->newPageUpdater( $user )
+ ->setContent( SlotRecord::MAIN, $redirectContent )
+ ->addTags( $changeTags )
+ ->addSoftwareTag( 'mw-new-redirect' )
+ ->setUsePageCreationLog( false )
+ ->saveRevision( $commentObj );
}
# Log the move