The CirrusSearch extension needs to be converted to use the new extension registration system. More details are available on T87875.
The missing parts appear to be:
- ~~Profile definitions: `$wgCirrusSearchCompletionProfiles` & friends. These are global presumably because we want to make them configurable. Potential solution: load them in special handler? Create API to manipulate them from local configs?~~ Default profiles are no longer loaded by CirrusSearch.php. `$wgCirrusSearchCompletionProfiles` & friends are now by default empty and can be populated by users when they want to customize search profiles.
- Non-simple values: values that are either function calls or references to other values. E.g. `$wgCirrusSearchIndexBaseName = wfWikiID();`.
Potential solution: set them in handler/hook? The problem is distinguishing between default and override. Another solution: default to null and substitute the real value later, on-demand. For some, like `$wgCirrusSearchCompletionGeoContextSettings`, we can change the profile value to a profile name.
- Calculated constant values, e.g. `$wgCirrusSearchDropDelayedJobsAfter = 60 * 60 * 24 * 2; // 2 days`. The main issue is documenting the value and making it clear. Potential solution: separate documentation and possibly `@note` in the config.
- Lack of support for PHP constants, e.g. when defining `$wgCirrusSearchFieldTypes`. Potential solution: use string constants that have self-documenting values? TBD.
- Lack of support to specifying class names - e.g. like `$wgCirrusSearchFieldTypeOverrides` and `$wgCirrusSearchFieldTypes` use `php\class\name::class`. Potential solution: so far I can see only converting back to strings. Not ideal, but we have many other contexts where class names are configured as strings.