[DI] Use dependency injection for Hooks

Change-Id: I23f56b0a3df1ef206ec160453294349d2482435f
This commit is contained in:
C. Scott Ananian 2024-04-04 17:59:34 -04:00
parent d71a297781
commit c983a822e3
2 changed files with 22 additions and 9 deletions

View file

@ -28,7 +28,9 @@
"main": {
"class": "MediaWiki\\Linter\\Hooks",
"services": [
"LinkRenderer"
"LinkRenderer",
"MainWANObjectCache",
"JobQueueGroup"
]
},
"schema": {

View file

@ -23,6 +23,7 @@ namespace MediaWiki\Linter;
use ApiQuerySiteinfo;
use Content;
use IContextSource;
use JobQueueGroup;
use MediaWiki\Api\Hook\APIQuerySiteInfoGeneralInfoHook;
use MediaWiki\Deferred\MWCallableUpdate;
use MediaWiki\Hook\BeforePageDisplayHook;
@ -30,7 +31,6 @@ use MediaWiki\Hook\InfoActionHook;
use MediaWiki\Hook\ParserLogLinterDataHook;
use MediaWiki\Linker\LinkRenderer;
use MediaWiki\Logger\LoggerFactory;
use MediaWiki\MediaWikiServices;
use MediaWiki\Output\OutputPage;
use MediaWiki\Page\Hook\RevisionFromEditCompleteHook;
use MediaWiki\Page\Hook\WikiPageDeletionUpdatesHook;
@ -39,6 +39,7 @@ use MediaWiki\SpecialPage\SpecialPage;
use MediaWiki\Title\Title;
use MediaWiki\User\UserIdentity;
use Skin;
use WANObjectCache;
use WikiPage;
class Hooks implements
@ -49,14 +50,23 @@ class Hooks implements
RevisionFromEditCompleteHook,
WikiPageDeletionUpdatesHook
{
/** @var LinkRenderer */
private $linkRenderer;
private LinkRenderer $linkRenderer;
private WANObjectCache $cache;
private JobQueueGroup $jobQueueGroup;
/**
* @param LinkRenderer $linkRenderer
* @param WANObjectCache $cache
* @param JobQueueGroup $jobQueueGroup
*/
public function __construct( LinkRenderer $linkRenderer ) {
public function __construct(
LinkRenderer $linkRenderer,
WANObjectCache $cache,
JobQueueGroup $jobQueueGroup
) {
$this->linkRenderer = $linkRenderer;
$this->cache = $cache;
$this->jobQueueGroup = $jobQueueGroup;
}
/**
@ -103,11 +113,12 @@ class Hooks implements
*/
public function onWikiPageDeletionUpdates( $wikiPage, $content, &$updates ) {
$id = $wikiPage->getId();
$updates[] = new MWCallableUpdate( static function () use ( $id ) {
$cache = $this->cache;
$updates[] = new MWCallableUpdate( static function () use ( $id, $cache ) {
$database = new Database( $id );
$totalsLookup = new TotalsLookup(
new CategoryManager(),
MediaWikiServices::getInstance()->getMainWANObjectCache(),
$cache,
$database
);
$totalsLookup->updateStats( $database->setForPage( [] ) );
@ -147,7 +158,7 @@ class Hooks implements
$database = new Database( $wikiPage->getId() );
$totalsLookup = new TotalsLookup(
new CategoryManager(),
MediaWikiServices::getInstance()->getMainWANObjectCache(),
$this->cache,
$database
);
$totalsLookup->updateStats( $database->setForPage( [] ) );
@ -270,7 +281,7 @@ class Hooks implements
'errors' => $errors,
'revision' => $revision,
] );
MediaWikiServices::getInstance()->getJobQueueGroup()->push( $job );
$this->jobQueueGroup->push( $job );
return true;
}
}