diff options
author | Petr Pchelko <ppchelko@wikimedia.org> | 2021-07-27 14:34:19 -0700 |
---|---|---|
committer | Ppchelko <ppchelko@wikimedia.org> | 2021-09-17 15:49:50 +0000 |
commit | e33f6b4b8eb7babeabad6de24ff5aef4b6929a7b (patch) | |
tree | deede7426038f545a64cf9f8a634dfd542819788 /includes/MovePage.php | |
parent | b1b9c296b7121a005f2db8cddd8a68292ffe84b2 (diff) | |
download | mediawikicore-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.php | 53 |
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 |