In order to make it feasible to implement performance improvements like rc_source condition merging (T403142) and the subquery required for T403798, I plan to make the following changes to ChangesListSpecialPage:
- Factor out ChangesListFilterGroupContainer, which will handle iteration over defined filter groups and filters.
- Factor out ChangesListFilterFactory, which will handle registration of filter group definitions and construction of ChangesListFilterGroup objects.
- Add a class called ChangesListQuery which will present a more abstracted view of query building, replacing the current system of query info arrays passed by reference.
- Migrate core and extension filters to the ChangesListQuery system.
- Migrate extensions which handle the ChangesListSpecialPageQuery hook to a new hook which will take a ChangesListQuery.





