jenkins-bot has submitted this change and it was merged. Change subject: Add hook for restoring a page & tests ......................................................................
Add hook for restoring a page & tests Change-Id: I891df2f2ecbf25d9313015a0f293c2b1dff958dd --- M extension.json M src/CognateHooks.php M src/hooks/CognatePageHookHandler.php M tests/phpunit/hooks/CognatePageHookHandlerTest.php 4 files changed, 77 insertions(+), 0 deletions(-) Approvals: Daniel Kinzler: Looks good to me, approved jenkins-bot: Verified diff --git a/extension.json b/extension.json index 364d02f..f544dfb 100644 --- a/extension.json +++ b/extension.json @@ -25,6 +25,7 @@ "PageContentSaveComplete": [ "CognateHooks::onPageContentSaveComplete" ], "LanguageLinks": [ "CognateHooks::onLanguageLinks" ], "WikiPageDeletionUpdates": [ "CognateHooks::onWikiPageDeletionUpdates" ], + "ArticleUndelete": [ "CognateHooks::onArticleUndelete" ], "LoadExtensionSchemaUpdates": [ "CognateHooks::onLoadExtensionSchemaUpdates" ], "UnitTestsList": [ "CognateHooks::onUnitTestsList" ] }, diff --git a/src/CognateHooks.php b/src/CognateHooks.php index 56dfb9e..1bd91ce 100644 --- a/src/CognateHooks.php +++ b/src/CognateHooks.php @@ -26,6 +26,17 @@ return true; } + public static function onArticleUndelete() { + call_user_func_array( + [ + MediaWikiServices::getInstance()->getService( 'CognatePageHookHandler' ), + 'onArticleUndelete' + ], + func_get_args() + ); + return true; + } + /** * @param Title $title * @param array $links diff --git a/src/hooks/CognatePageHookHandler.php b/src/hooks/CognatePageHookHandler.php index 1058ce3..1fb288f 100644 --- a/src/hooks/CognatePageHookHandler.php +++ b/src/hooks/CognatePageHookHandler.php @@ -91,4 +91,25 @@ } } + /** + * When one or more revisions of an article are restored + * @see https://www.mediawiki.org/wiki/Manual:Hooks/ArticleUndelete + * + * @param Title $title + * @param bool $create + * @param string $comment + * @param int $oldPageId + */ + public function onArticleUndelete( + Title $title, + $create, + $comment, + $oldPageId + ) { + if ( $title->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 e6f898d..3834b01 100644 --- a/tests/phpunit/hooks/CognatePageHookHandlerTest.php +++ b/tests/phpunit/hooks/CognatePageHookHandlerTest.php @@ -141,4 +141,48 @@ return $updates; } + public function test_onArticleUndelete_namespaceMatch() { + $this->store->expects( $this->never() ) + ->method( 'deletePage' ); + $this->store->expects( $this->once() ) + ->method( 'savePage' ) + ->with( 'abc2', 'ArticleDbKey' ); + + $this->call_onArticleUndelete( + [ 0 ], + 'abc2', + new TitleValue( 0, 'ArticleDbKey' ) + ); + } + + public function test_onArticleUndelete_noNamespaceMatch() { + $this->store->expects( $this->never() ) + ->method( 'deletePage' ); + $this->store->expects( $this->never() ) + ->method( 'savePage' ); + + $this->call_onArticleUndelete( + [ 120 ], + 'abc2', + new TitleValue( 0, 'ArticleDbKey' ) + ); + } + + /** + * @param int[] $namespaces + * @param string $language + * @param LinkTarget $linkTarget + */ + private function call_onArticleUndelete( + array $namespaces, + $language, + LinkTarget $linkTarget + ) { + $handler = new CognatePageHookHandler( $namespaces, $language ); + $handler->onArticleUndelete( + Title::newFromLinkTarget( $linkTarget ), + null, null, null + ); + } + } -- To view, visit https://gerrit.wikimedia.org/r/311692 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I891df2f2ecbf25d9313015a0f293c2b1dff958dd Gerrit-PatchSet: 3 Gerrit-Project: mediawiki/extensions/Cognate Gerrit-Branch: master Gerrit-Owner: Addshore <addshorew...@gmail.com> Gerrit-Reviewer: Aude <aude.w...@gmail.com> Gerrit-Reviewer: Daniel Kinzler <daniel.kinz...@wikimedia.de> Gerrit-Reviewer: Gabriel Birke <gabriel.bi...@wikimedia.de> Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits