diff --git a/RELEASE-NOTES-1.35 b/RELEASE-NOTES-1.35 index 70242167fb7..47b7ac3dc2a 100644 --- a/RELEASE-NOTES-1.35 +++ b/RELEASE-NOTES-1.35 @@ -857,6 +857,8 @@ because of Phabricator reports. new RevisionUndeleted hook instead. * The NewRevisionFromEditComplete hook has been hard deprecated. Please use the new RevisionFromEditComplete hook instead. +* The TitleMoveCompleting and TitleMoveComplete hooks have been soft deprecated. + Please use the new PageMoveComplete hook instead. * ResourceLoaderFileModule::compileLessFile() has been deprecated, use ResourceLoaderFileModule::compileLessString() instead * The SquidPurgeClient and SquidPurgeClientPool classes have been deprecated. diff --git a/docs/hooks.txt b/docs/hooks.txt index 861bcf7a084..f107841cee6 100644 --- a/docs/hooks.txt +++ b/docs/hooks.txt @@ -2540,6 +2540,15 @@ the key. $user: User (object) requesting the page &$forOptions: array of options the hash is for +'PageMoveComplete': After moving an article (title), post-commit. +$old: LinkTarget for the old title +$nt: LinkTarget for the new title +$user: UserIdentity for the user who did the move +$pageid: database ID of the page that's been moved +$redirid: database ID of the created redirect +$reason: reason for the move +$revisionRecord: the RevisionRecord created by the move + 'PageViewUpdates': Allow database (or other) changes to be made after a page view is seen by MediaWiki. Note this does not capture views made via external caches such as Squid. @@ -3505,7 +3514,8 @@ $old: old title $nt: new title $user: user who does the move -'TitleMoveComplete': After moving an article (title), post-commit. +'TitleMoveComplete': DEPRECATED since 1.35! Use PageMoveComplete +After moving an article (title), post-commit. [&]$old: old title [&]$nt: new title [&]$user: user who did the move @@ -3514,7 +3524,8 @@ $redirid: database ID of the created redirect $reason: reason for the move $revision: the Revision created by the move -'TitleMoveCompleting': After moving an article (title), pre-commit. +'TitleMoveCompleting': DEPRECATED since 1.35! Use PageMoveComplete +After moving an article (title), pre-commit. $old: old title $nt: new title $user: user who did the move diff --git a/includes/Hook/PageMoveCompleteHook.php b/includes/Hook/PageMoveCompleteHook.php new file mode 100644 index 00000000000..aa42b949432 --- /dev/null +++ b/includes/Hook/PageMoveCompleteHook.php @@ -0,0 +1,32 @@ + [ 'deprecatedVersion' => '1.35', 'silent' => true ], 'SkinTemplatePreventOtherActiveTabs' => [ 'deprecatedVersion' => '1.35' ], 'SkinTemplateTabAction' => [ 'deprecatedVersion' => '1.35' ], + 'TitleMoveComplete' => [ 'deprecatedVersion' => '1.35', 'silent' => true ], + 'TitleMoveCompleting' => [ 'deprecatedVersion' => '1.35', 'silent' => true ], 'UndeleteShowRevision' => [ 'deprecatedVersion' => '1.35' ], 'UserRetrieveNewTalks' => [ 'deprecatedVersion' => '1.35' ], 'UserSetCookies' => [ 'deprecatedVersion' => '1.27' ], diff --git a/includes/HookContainer/HookRunner.php b/includes/HookContainer/HookRunner.php index 6ed86cc9133..88734d81bf9 100644 --- a/includes/HookContainer/HookRunner.php +++ b/includes/HookContainer/HookRunner.php @@ -261,6 +261,7 @@ class HookRunner implements \MediaWiki\Hook\PageHistoryLineEndingHook, \MediaWiki\Hook\PageHistoryPager__doBatchLookupsHook, \MediaWiki\Hook\PageHistoryPager__getQueryInfoHook, + \MediaWiki\Hook\PageMoveCompleteHook, \MediaWiki\Hook\PageRenderingHashHook, \MediaWiki\Hook\ParserAfterParseHook, \MediaWiki\Hook\ParserAfterStripHook, @@ -2801,6 +2802,13 @@ class HookRunner implements ); } + public function onPageMoveComplete( $old, $new, $user, $pageid, $redirid, $reason, $revision ) { + return $this->container->run( + 'PageMoveComplete', + [ $old, $new, $user, $pageid, $redirid, $reason, $revision ] + ); + } + public function onPageRenderingHash( &$confstr, $user, &$forOptions ) { return $this->container->run( 'PageRenderingHash', diff --git a/includes/MovePage.php b/includes/MovePage.php index 4cfaa98e82f..5750ab2cfb2 100644 --- a/includes/MovePage.php +++ b/includes/MovePage.php @@ -694,6 +694,8 @@ class MovePage { } } + // Deprecated since 1.35, use PageMoveComplete + // TODO hard deprecate $nullRevisionObj = new Revision( $nullRevision ); $this->hookRunner->onTitleMoveCompleting( $this->oldTitle, $this->newTitle, @@ -706,14 +708,28 @@ class MovePage { new AtomicSectionUpdate( $dbw, __METHOD__, - function () use ( $user, $pageid, $redirid, $reason, $nullRevisionObj ) { + function () use ( $user, $pageid, $redirid, $reason, $nullRevision ) { + $this->hookRunner->onPageMoveComplete( + $this->oldTitle, + $this->newTitle, + $user, + $pageid, + $redirid, + $reason, + $nullRevision + ); + + $nullRevisionObj = new Revision( $nullRevision ); + // Deprecated since 1.35, use PageMoveComplete + // TODO hard deprecate $this->hookRunner->onTitleMoveComplete( $this->oldTitle, $this->newTitle, $user, $pageid, $redirid, $reason, - $nullRevisionObj ); + $nullRevisionObj + ); } ) );