Page MenuHomePhabricator

Add a factory service for `RecentChange` objects
Closed, ResolvedPublic

Description

I propose creating a factory for RecentChanges that would inject the needed dependencies:

  • LoadBalancer (currently uses wfGetDB)
  • CommentStore (currently uses CommentStore::getStore())
  • ActorMigration (currently uses ActorMigration::newMigration())
  • HookContainer (currently uses Hooks::run())
  • PermissionManager
  • Global variables $wgPutIPinRC, $wgUseEnotif, $wgShowUpdatedMarker, $wgRCFeeds, $wgRCEngines, $wgUseRCPatrol, $wgUseNPPatrol, $wgUseFilePatrol, $wgLogRestrictions, $wgRCMaxAge

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript

I believe that RC has to be converted to a value object, and all the DB-related stuff has to be moved into a new RecentChangeStore. Factory can be an interface implemented by the store, just like RevisionFactory and RevisionStore.

Perhaps the RC class after extracting DB functionality wouldn't be as pure as we'd want, since I see the, for example, 'getAttribute' loads comment from he comment store, but that could be implemented via some callbacks.

Some methods In RC, like 'doMarkPatrolled' probably doesn't belong in the store at all and should be moved elsewhere.

Change #1180241 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/core@master] Refactor RecentChange to use separate interfaces and services

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

Change #1180672 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/core@master] Introduce RecentChangePatrolManager

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

Change #1180684 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/core@master] Start using new recent changes services

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

Change #1180686 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/core@master] Introduce RecentChangeRCFeedNotifier

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

Change #1180691 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/core@master] Remove a few methods from RecentChange without deprecation

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

Change #1180241 merged by jenkins-bot:

[mediawiki/core@master] Introduce RecentChangeStore

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

Change #1180686 merged by jenkins-bot:

[mediawiki/core@master] Introduce RecentChangeRCFeedNotifier

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

Change #1180684 merged by jenkins-bot:

[mediawiki/core@master] Start using new recent changes services

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

Change #1180691 merged by jenkins-bot:

[mediawiki/core@master] Remove a few methods from RecentChange without deprecation

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

Change #1180672 merged by jenkins-bot:

[mediawiki/core@master] Introduce PatrolManager

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

Change #1181663 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/core@master] Use new RecentChangeLookup methods

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

Change #1181670 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/extensions/AbuseFilter@master] Replace deprecated RecentChange methods

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

Change #1181674 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/core@master] Add type hinting to new recentchanges services

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

Change #1181670 merged by jenkins-bot:

[mediawiki/extensions/AbuseFilter@master] Replace deprecated RecentChange methods

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

Change #1181663 merged by jenkins-bot:

[mediawiki/core@master] Use new RecentChangeLookup methods

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

Change #1181674 merged by jenkins-bot:

[mediawiki/core@master] Add type hinting to new recentchanges services

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

Change #1260814 had a related patch set uploaded (by Reedy; author: Zabe):

[mediawiki/extensions/AbuseFilter@REL1_44] Replace deprecated RecentChange methods

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

Change #1260815 had a related patch set uploaded (by Reedy; author: Zabe):

[mediawiki/extensions/AbuseFilter@REL1_43] Replace deprecated RecentChange methods

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

Change #1260815 abandoned by Reedy:

[mediawiki/extensions/AbuseFilter@REL1_43] Replace deprecated RecentChange methods

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

Change #1260814 abandoned by Reedy:

[mediawiki/extensions/AbuseFilter@REL1_44] Replace deprecated RecentChange methods

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

Change #1271077 had a related patch set uploaded (by MGChecker; author: MGChecker):

[mediawiki/core@master] Hard-deprecate static RecentChange methods

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

Change #1271077 merged by jenkins-bot:

[mediawiki/core@master] Hard-deprecate static RecentChange methods

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