diff --git a/extension.json b/extension.json index ee3efe66..78766e3b 100644 --- a/extension.json +++ b/extension.json @@ -23,7 +23,8 @@ }, "Hooks": { "LoadExtensionSchemaUpdates": "MediaWiki\\Linter\\Hooks::onLoadExtensionSchemaUpdates", - "EditFormInitialText": "MediaWiki\\Linter\\Hooks::onEditFormInitialText" + "EditFormInitialText": "MediaWiki\\Linter\\Hooks::onEditFormInitialText", + "WikiPageDeletionUpdates": "MediaWiki\\Linter\\Hooks::onWikiPageDeletionUpdates" }, "APIModules": { "record-lint": "MediaWiki\\Linter\\ApiRecordLint" diff --git a/includes/Hooks.php b/includes/Hooks.php index 5c94acbd..81d4d470 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -20,8 +20,11 @@ namespace MediaWiki\Linter; +use Content; use DatabaseUpdater; use EditPage; +use MWCallableUpdate; +use WikiPage; class Hooks { /** @@ -62,4 +65,23 @@ class Hooks { ] ); $out->addModules( 'ext.linter.edit' ); } + + /** + * Hook: WikiPageDeletionUpdates + * + * Remove entries from the linter table upon page deletion + * + * @param WikiPage $wikiPage + * @param Content $content + * @param array &$updates + */ + public static function onWikiPageDeletionUpdates( WikiPage $wikiPage, + Content $content, array &$updates + ) { + $id = $wikiPage->getId(); + $updates[] = new MWCallableUpdate( function() use ( $id ) { + $database = new Database( $id ); + $database->setForPage( [] ); + } ); + } }