Page MenuHomePhabricator

Create HookRunner classes and interfaces for Wikibase Repo and use them
Closed, ResolvedPublic

Description

On the basis of the Wikibase Hooks ADR in T391438 and in support of T338452, create HookRunner classes and interfaces for the Wikibase Repo code, and use them throughout the Wikibase codebase

This includes:

  • core hooks
  • MobileFrontend hooks
  • Vector hook
  • Own hooks

MediaWikiEditFilterHook will be handled separately in T391963

Acceptance Criteria

  • Use of Wikibase Hooks within Wikibase Repo code (except for MediaWikiEditFilterHook) are conformant with the Wikibase Hooks ADR

Details

SubjectRepoBranchLines +/-
mediawiki/extensions/Wikibasemaster+3 -2
mediawiki/extensions/Wikibasemaster+2 -2
mediawiki/extensions/Wikibasemaster+24 -34
mediawiki/extensions/Wikibasemaster+2 -3
mediawiki/extensions/Wikibasemaster+39 -8
mediawiki/extensions/Wikibasemaster+85 -10
mediawiki/extensions/Wikibasemaster+52 -16
mediawiki/extensions/Wikibasemaster+66 -32
mediawiki/extensions/Wikibasemaster+52 -17
mediawiki/extensions/Wikibasemaster+57 -15
mediawiki/extensions/Wikibasemaster+44 -2
mediawiki/extensions/Wikibasemaster+20 -65
mediawiki/extensions/Wikibasemaster+64 -24
mediawiki/extensions/Wikibasemaster+55 -28
mediawiki/extensions/Wikibasemaster+49 -31
mediawiki/extensions/Wikibasemaster+46 -17
mediawiki/extensions/Wikibasemaster+58 -42
mediawiki/extensions/Wikibasemaster+76 -8
Show related patches Customize query in gerrit

Related Objects

Event Timeline

Change #1135745 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Add HookRunner to repo

https://gerrit.wikimedia.org/r/1135745

Change #1135757 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Add WikibaseRepoHookRunner to service container

https://gerrit.wikimedia.org/r/1135757

Change #1135758 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] WIP: Use HookRunner for WikibaseTextForSearchIndex

https://gerrit.wikimedia.org/r/1135758

Change #1135904 had a related patch set uploaded (by Arthur taylor; author: Arthur taylor):

[mediawiki/extensions/Wikibase@master] Use HookRunner for WikibaseClientSiteLinksForItem

https://gerrit.wikimedia.org/r/1135904

Change #1135927 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Migrate WikibaseChangeNotification hook

https://gerrit.wikimedia.org/r/1135927

Change #1135934 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Migrate WikibaseRepoOnParserOutputUpdaterConstruction hook

https://gerrit.wikimedia.org/r/1135934

Change #1135985 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Migrate GetEntityByLinkedTitleLookup hook

https://gerrit.wikimedia.org/r/1135985

Change #1135986 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Migrate MediaWikiEditFilterHookRunner

https://gerrit.wikimedia.org/r/1135986

This isn’t done yet (I checked all the references to HookContainer in repo/includes/, but that misses several hooks that are run directly in the service wiring – docs/topics/hooks-php.md can also serve as an additional list of hooks), but what’s there already should mostly be okay to start reviewing (except for the MediaWikiEditFilterHookRunner change, where CI isn’t green yet).

Change #1135757 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Add WikibaseRepoHookRunner to service container

https://gerrit.wikimedia.org/r/1135757

Change #1135758 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Migrate WikibaseTextForSearchIndex hook

https://gerrit.wikimedia.org/r/1135758

Change #1135927 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Migrate WikibaseChangeNotification hook

https://gerrit.wikimedia.org/r/1135927

Change #1136332 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Add strict types to EntityParserOutputGeneratorFactory

https://gerrit.wikimedia.org/r/1136332

Change #1135985 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Migrate GetEntityByLinkedTitleLookup hook

https://gerrit.wikimedia.org/r/1135985

Change #1135745 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Migrate GetEntityContentModelForTitle hook

https://gerrit.wikimedia.org/r/1135745

Change #1135934 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Migrate WikibaseRepoOnParserOutputUpdaterConstruction hook

https://gerrit.wikimedia.org/r/1135934

Change #1136332 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Add strict types to EntityParserOutputGeneratorFactory

https://gerrit.wikimedia.org/r/1136332

Change #1136410 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Add configureHookRunner() to ServiceWiringTestCase

https://gerrit.wikimedia.org/r/1136410

Change #1136411 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Migrate WikibaseContentModelMapping hook

https://gerrit.wikimedia.org/r/1136411

Change #1136415 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Migrate WikibaseRepoDataTypes hook

https://gerrit.wikimedia.org/r/1136415

Still not done but ready for another round of reviews.

Change #1136410 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Add configureHookRunner() to ServiceWiringTestCase

https://gerrit.wikimedia.org/r/1136410

Change #1136411 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Migrate WikibaseContentModelMapping hook

https://gerrit.wikimedia.org/r/1136411

Change #1136415 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Migrate WikibaseRepoDataTypes hook

https://gerrit.wikimedia.org/r/1136415

Change #1136667 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Migrate WikibaseRepoEntityTypes hook

https://gerrit.wikimedia.org/r/1136667

Change #1136667 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Migrate WikibaseRepoEntityTypes hook

https://gerrit.wikimedia.org/r/1136667

Change #1136686 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Migrate WikibaseRepoEntitySearchHelperCallbacks hook

https://gerrit.wikimedia.org/r/1136686

Change #1136686 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Migrate WikibaseRepoEntitySearchHelperCallbacks hook

https://gerrit.wikimedia.org/r/1136686

Change #1136729 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Migrate WikibaseContentLanguages hook

https://gerrit.wikimedia.org/r/1136729

Still missing:

  • WikibaseContentLanguages (see patch above)
  • WikibaseRepoEntityNamespaces (called in Wikibase.default.php)

And that should be it as far as hooks-php.md goes, at least. We’ll probably want to check the code again before declaring this task done. (This Huma query might be useful, though it’s apparently based on an outdated MediaWiki version.)

Change #1136729 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Migrate WikibaseContentLanguages hook

https://gerrit.wikimedia.org/r/1136729

Change #1137217 had a related patch set uploaded (by Arthur taylor; author: Arthur taylor):

[mediawiki/extensions/Wikibase@master] Use HookRunner pattern for WikibaseRepoEntityNamespaces hook

https://gerrit.wikimedia.org/r/1137217

Change #1137264 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Use WikibaseRepoHookRunner service for default settings

https://gerrit.wikimedia.org/r/1137264

Change #1137265 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Update WikibaseRepoEntityNamespacesHook docs

https://gerrit.wikimedia.org/r/1137265

Change #1137217 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Use HookRunner pattern for WikibaseRepoEntityNamespaces hook

https://gerrit.wikimedia.org/r/1137217

Change #1137274 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Clean up hooks documentation

https://gerrit.wikimedia.org/r/1137274

And that should be it as far as hooks-php.md goes, at least. We’ll probably want to check the code again before declaring this task done.

Well, depends I guess. We now have hook interfaces for all of our own hooks, and use the hook runner to run them. We don’t yet use hook handler classes for all the hooks we implement – I still see plenty of static method references in "Hooks" in extension-repo.json. (Almost all of them in RepoHooks, except for ViewEntityAction::onBeforeDisplayNoArticleText.) Is that part of this task?

Change #1137327 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Fix abortability of two repo hooks

https://gerrit.wikimedia.org/r/1137327

Well, depends I guess. We now have hook interfaces for all of our own hooks, and use the hook runner to run them. We don’t yet use hook handler classes for all the hooks we implement – I still see plenty of static method references in "Hooks" in extension-repo.json. (Almost all of them in RepoHooks, except for ViewEntityAction::onBeforeDisplayNoArticleText.) Is that part of this task?

Insofar as they're hooks for which interfaces exist, I would say it is part of the larger Epic. I would draw the line at creating interfaces in other extensions or in core for us to implement. The same issue exists in extension-client.json - my preference would be to have two new tickets for the remaining tidy-up - this task is already long and full of patches.

Change #1137264 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Use WikibaseRepoHookRunner service for default settings

https://gerrit.wikimedia.org/r/1137264

Change #1137265 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Update WikibaseRepoEntityNamespacesHook docs

https://gerrit.wikimedia.org/r/1137265

Change #1137274 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Clean up hooks documentation

https://gerrit.wikimedia.org/r/1137274

Change #1137327 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Fix abortability of two repo hooks

https://gerrit.wikimedia.org/r/1137327

I would draw the line at creating interfaces in other extensions or in core for us to implement.

We shouldn’t need to create any interfaces, we can just migrate to non-static hook handler classes regardless of whether the corresponding interfaces already exist or not.