The supported DBTypes are hard-coded into a protected static array in the Installer class.
I'm working on a [[ https://github.com/MWStake/PerconaDB | DB backend for Percona ]] and I need a way to make it available to a user of the web installer.
The CLI-based installer works since the user can just say "percona" and MediaWiki will find the provided DatabasePercona class. The web installer, though, provides a list of possible backends that has been hard-coded in.
## Technical solution:
[] The Installer early runs `LocalSettings.php` to self-injecting some extended behavior. This may be useful not only for BDTypes injections.
[] Upgrade action criteria for an existing installation are determined by defining of DB configuration in `LocalSettings.php`
[] Add a new extension action for the installer. Use the section: `Actions.installer: [ 'Some::Method' ]` of `extension.json`. Example: https://github.com/artbaltai/mediawiki-dbext/blob/master/extension.json#L20
[] Implement 2 ways to load Installer Extensions and. run "Installer Action":
[] - load as a typical extension by `LocalSettings.php` with a typical registration in the scope:
[] - scan default extensions directory, read `extension.json` and register the extension only with Installer Action
[] Use standard WMF mechanism and approaches where is possible
[]The solution should be compatible with https://github.com/MWStake/PerconaDB injection
Optional:
[] Prepare PR to support a new Installer Action for https://github.com/MWStake/PerconaDB