Background
For full details see T337089: [Epic] Implement global contributions feature.
Technical background
Since T363358: Create extendable parent classes for special pages showing contributions lists, MediaWiki core has parent classes for building pages that display lists of contributions: ContributionsSpecialPage and ContributionsPager. These are currently used to make Special:Contributions, Special:DeletedContributions and (in CheckUser) Special:IPContributions.
For Special:GlobalContributions, we will need SpecialGlobalContributions and GlobalContributionsPager. This will work similarly to Special:IPContributions in normal (non-archive) mode. Since it needs to use the CheckUser tables, it will only show contributions from the last 90 days.
This task is for creating the pager (which fetches the results and displays them).
Acceptance criteria
- GlobalContributionsPager is implemented, extending ContributionsPager
- GlobalContributionsPager::doQuery logs access, similar to`IPContributionsPager`
- GlobalContributionsPager::getRevisionQuery is overridden to fetch the latest contributions by temporary accounts from a given IP or range. It makes use of the cuci_temp_edit table and possibly other optimizations discussed in T355672: Investigate: How to make the GUC query performant. This is the bulk of the work for this task.
- Submitting the form with an IP address or range fetches the latest revisions from temporary accounts using those IP addresses for all wikis in this wiki farm (limit to 20 per wiki)
- Results are displayed in a paginated list and sorted by descending timestamp
- Visibility of contributions (hidden users, suppression, etc) works the same as for the other contributions special pages
- IP reveal is not available on this page (since IP look-ups that are not local would fail)