mwstake/mediawiki-component-manifestregistry

Provides classes and services to interact with registries in MediaWiki manifests

2.1.3 2023-04-18 11:34 UTC

This package is auto-updated.

Last update: 2024-12-11 08:51:52 UTC


README

ManifestRegistry for MediaWiki

Provides a combined registry over all in the attribute section registered things in extension.json files.

This code is meant to be executed within the MediaWiki application context. No standalone usage is intended.

Use in a MediaWiki extension

Add "mwstake/mediawiki-component-manifestregistry": "~2.0" to the require section of your composer.json file.

Since 2.0 explicit initialization is required. This can be achieved by

  • either adding "callback": "mwsInitComponents" to your extension.json/skin.json
  • or calling mwsInitComponents(); within you extensions/skins custom callback method

See also mwstake/mediawiki-componentloader.

Register values in extension.json

{
	"attributes": {
		"BlueSpiceFoundation": {
			"RoleRegistry": {
				"admin": "\\BlueSpice\\Permission\\Role\\Admin::factory",
				"editor": "\\BlueSpice\\Permission\\Role\\Editor::factory",
				"reader": "\\BlueSpice\\Permission\\Role\\Reader::factory",
				"author": "\\BlueSpice\\Permission\\Role\\Author::factory",
				"reviewer": "\\BlueSpice\\Permission\\Role\\Reviewer::factory",
				"accountmanager": "\\BlueSpice\\Permission\\Role\\AccountManager::factory"
			}
		},
		"BlueSpicePrivacy": {
			"CookieConsentNativeMWCookies": {
				"notificationFlag": {
					"group": "necessary",
					"addPrefix": true
				}
			}
		}
	},
	"manifest_version": 2,
}

Implement in your code

$factory = \MediaWiki\MediaWikiServices::getInstance()->getService( 'MWStakeManifestRegistryFactory' );
$registry = $factory->get( 'MyExtensionMyRegistry' );
$myValues = $registry->getValue( 'subValue' );
$allMyValues = $registry->getAllValues();

Configuration

  • mwsgManifestRegistryOverrides: Used to overwrite existing registries by either add, remove or merge their values:

Example 1:

$GLOBALS['mwsgManifestRegistryOverrides']['MyRegistry'] = [
	'set' => [
		'ReplaceKey' => 'with new value',
	],
	'merge' => [
		'AddThisKey' => 'with this value',
	],
	'remove' => [ 'keyOfValueThatShouldBeRemoved' ]
]