jenkins-bot has submitted this change and it was merged. Change subject: Implement hook for deleted pages ......................................................................
Implement hook for deleted pages Change-Id: If25f56c31b94f8d6db204deffe3fa732ebaeafc5 --- M extension.json M src/CognateHooks.php M src/CognateStore.php M tests/phpunit/CognateStoreTest.php 4 files changed, 56 insertions(+), 10 deletions(-) Approvals: Legoktm: Looks good to me, approved jenkins-bot: Verified diff --git a/extension.json b/extension.json index 7276618..51e8bf1 100644 --- a/extension.json +++ b/extension.json @@ -23,7 +23,7 @@ "Hooks": { "PageContentSaveComplete": [ "CognateHooks::onPageContentSaveComplete" ], "LanguageLinks": [ "CognateHooks::onLanguageLinks" ], - "ArticleDeleteComplete": [ "CognateHooks::onArticleDeleteComplete" ], + "WikiPageDeletionUpdates": [ "CognateHooks::onWikiPageDeletionUpdates" ], "LoadExtensionSchemaUpdates": [ "CognateHooks::onLoadExtensionSchemaUpdates" ], "UnitTestsList": [ "CognateHooks::onUnitTestsList" ] }, diff --git a/src/CognateHooks.php b/src/CognateHooks.php index 7405172..e016eef 100644 --- a/src/CognateHooks.php +++ b/src/CognateHooks.php @@ -40,24 +40,42 @@ global $wgCognateNamespaces, $wgLanguageCode; $title = $article->getTitle(); - if ( !in_array( $title->getNamespace(), $wgCognateNamespaces ) ) { + if ( !$title->inNamespaces( $wgCognateNamespaces ) ) { return true; } $interlanguage = MediaWikiServices::getInstance()->getService( 'CognateStore' ); - $interlanguage->savePage( $wgLanguageCode, $article->getTitle()->getDBkey() ); + $interlanguage->savePage( $wgLanguageCode, $title->getDBkey() ); return true; } - public static function onArticleDeleteComplete( - &$article, - User &$user, - $reason, - $id, + /** + * @param WikiPage $page + * @param Content|null $content + * @param DataUpdate[] $updates + * + * @return bool + */ + public static function onWikiPageDeletionUpdates( + WikiPage $page, Content $content = null, - LogEntry $logEntry + array &$updates ) { - // TODO remove language link from central storage + global $wgCognateNamespaces; + + $title = $page->getTitle(); + if ( $title->inNamespaces( $wgCognateNamespaces ) ) { + $updates[] = new MWCallableUpdate( + function () use ( $title ){ + global $wgLanguageCode; + $interlanguage = MediaWikiServices::getInstance()->getService( 'CognateStore' ); + $interlanguage->deletePage( $wgLanguageCode, $title->getDBkey() ); + }, + __METHOD__ + ); + } + + return true; } /** diff --git a/src/CognateStore.php b/src/CognateStore.php index b5fbb28..287c58c 100644 --- a/src/CognateStore.php +++ b/src/CognateStore.php @@ -37,6 +37,23 @@ } /** + * @param string $language Language code, taken from $wgLanguageCode + * @param string $title Page title + * @return bool + */ + public function deletePage( $language, $title ) { + $pageData = [ + 'ilt_language' => $language, + 'ilt_title' => $title + ]; + $dbw = $this->loadBalancer->getConnection( DB_MASTER ); + $result = $dbw->delete( self::TABLE_NAME, $pageData, __METHOD__ ); + $this->loadBalancer->reuseConnection( $dbw ); + + return $result; + } + + /** * Get the language codes where a translations is available * * @param string $language Language code to exclude diff --git a/tests/phpunit/CognateStoreTest.php b/tests/phpunit/CognateStoreTest.php index 373fe57..7016c43 100644 --- a/tests/phpunit/CognateStoreTest.php +++ b/tests/phpunit/CognateStoreTest.php @@ -46,4 +46,15 @@ $this->assertArrayEquals( [ 'de', 'eo' ], $languages ); } + public function testSaveAndDeletePageResultsInNoEntry() { + $this->interlanguage->savePage( 'en', 'My_test_page' ); + $this->interlanguage->deletePage( 'en', 'My_test_page' ); + $this->assertSelect( + 'inter_language_titles', + [ 'ilt_language', 'ilt_title' ], + [ 'ilt_title != "UTPage"' ], + [] + ); + } + } -- To view, visit https://gerrit.wikimedia.org/r/311440 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: If25f56c31b94f8d6db204deffe3fa732ebaeafc5 Gerrit-PatchSet: 3 Gerrit-Project: mediawiki/extensions/Cognate Gerrit-Branch: master Gerrit-Owner: Addshore <addshorew...@gmail.com> Gerrit-Reviewer: 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: Legoktm <legoktm.wikipe...@gmail.com> 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