addExtensionTable( 'linter', "$dir/linter.sql" ); } /** * Hook: EditFormInitialText * * If there is a lintid parameter, look up that error in the database * and setup and output our client-side helpers * * @param EditPage $editPage */ public static function onEditFormInitialText( EditPage $editPage ) { $context = $editPage->getContext(); $request = $context->getRequest(); $lintId = $request->getInt( 'lintid' ); if ( !$lintId ) { return; } $title = $editPage->getTitle(); $lintError = ( new Database( $title->getArticleID() ) )->getFromId( $lintId ); if ( !$lintError ) { // Already fixed or bogus URL parameter? return; } $out = $context->getOutput(); $out->addJsConfigVars( [ 'wgLinterErrorCategory' => $lintError->category, 'wgLinterErrorLocation' => $lintError->location, ] ); $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( [] ); } ); } }