Addshore has uploaded a new change for review. https://gerrit.wikimedia.org/r/311696
Change subject: WIP DNM add TitleMoveComplete hook ...................................................................... WIP DNM add TitleMoveComplete hook Change-Id: If35ad0903336b01fff18925f2677e8a03e00f381 --- M extension.json M src/CognateHooks.php M src/hooks/CognatePageHookHandler.php M tests/phpunit/hooks/CognatePageHookHandlerTest.php 4 files changed, 58 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Cognate refs/changes/96/311696/1 diff --git a/extension.json b/extension.json index f544dfb..77d8e0c 100644 --- a/extension.json +++ b/extension.json @@ -26,6 +26,7 @@ "LanguageLinks": [ "CognateHooks::onLanguageLinks" ], "WikiPageDeletionUpdates": [ "CognateHooks::onWikiPageDeletionUpdates" ], "ArticleUndelete": [ "CognateHooks::onArticleUndelete" ], + "TitleMoveComplete": [ "CognateHooks::onTitleMoveComplete" ], "LoadExtensionSchemaUpdates": [ "CognateHooks::onLoadExtensionSchemaUpdates" ], "UnitTestsList": [ "CognateHooks::onUnitTestsList" ] }, diff --git a/src/CognateHooks.php b/src/CognateHooks.php index 1bd91ce..e138df8 100644 --- a/src/CognateHooks.php +++ b/src/CognateHooks.php @@ -37,6 +37,17 @@ return true; } + public static function onTitleMoveComplete() { + call_user_func_array( + [ + MediaWikiServices::getInstance()->getService( 'CognatePageHookHandler' ), + 'onTitleMoveComplete' + ], + func_get_args() + ); + return true; + } + /** * @param Title $title * @param array $links diff --git a/src/hooks/CognatePageHookHandler.php b/src/hooks/CognatePageHookHandler.php index 1fb288f..b3f2542 100644 --- a/src/hooks/CognatePageHookHandler.php +++ b/src/hooks/CognatePageHookHandler.php @@ -112,4 +112,35 @@ } } + /** + * Occurs whenever a request to move an article is completed, after the database transaction commits. + * @see https://www.mediawiki.org/wiki/Manual:Hooks/TitleMoveComplete + * + * @param Title $title + * @param Title $newTitle + * @param User $user + * @param int $oldid + * @param int $newid + * @param string $reason + * @param Revision $revision + */ + public function onTitleMoveComplete( + Title $title, + Title $newTitle, + User $user, + $oldid, + $newid, + $reason, + Revision $revision + ) { + if ( $title->inNamespaces( $this->namespaces ) ) { + $store = MediaWikiServices::getInstance()->getService( 'CognateStore' ); + $store->deletePage( $this->languageCode, $title->getDBkey() ); + } + if ( $newTitle->inNamespaces( $this->namespaces ) ) { + $store = MediaWikiServices::getInstance()->getService( 'CognateStore' ); + $store->savePage( $this->languageCode, $title->getDBkey() ); + } + } + } \ No newline at end of file diff --git a/tests/phpunit/hooks/CognatePageHookHandlerTest.php b/tests/phpunit/hooks/CognatePageHookHandlerTest.php index 3834b01..8f9bedc 100644 --- a/tests/phpunit/hooks/CognatePageHookHandlerTest.php +++ b/tests/phpunit/hooks/CognatePageHookHandlerTest.php @@ -185,4 +185,19 @@ ); } + public function test_onTitleMoveComplete_namespaceMatch() { + $this->store->expects( $this->once() ) + ->method( 'deletePage' ) + ->with( 'abc2', 'ArticleDbKey' ); + $this->store->expects( $this->once() ) + ->method( 'savePage' ) + ->with( 'abc2', 'ArticleDbKey' ); + + $this->call_onArticleUndelete( + [ 0 ], + 'abc2', + new TitleValue( 0, 'ArticleDbKey' ) + ); + } + } -- To view, visit https://gerrit.wikimedia.org/r/311696 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If35ad0903336b01fff18925f2677e8a03e00f381 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Cognate Gerrit-Branch: master Gerrit-Owner: Addshore <addshorew...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits