Manuel:Extension.json/Schéma

This page is a translated version of the page Manual:Extension.json/Schema and the translation is 79% complete.

Cette page documente le schéma utilisé par extension.json. Tous les champs sont optionnels sauf contre-indication. Il est actuellement incomplet.

Pour la première itération de ce schéma voir docs/extension.schema.v1.json (MW 1.25+), pour la seconde voir docs/extension.schema.v2.json (MW 1.29+).

manifest_version

Version de MediaWiki :
1.25
Gerrit change 212239

Ce champ est obligatoire.

Ceci spécifie la version du format de fichier extension.json qui sera utilisé. A l'avenir, si des modifications viennent à changer le format du fichier, ce nombre sera incrémenté pour continuer à prendre en charge les extensions qui utilisent l'ancien format.

Actuellement les valeurs suivantes sont acceptées :

  • 1: 1.25+
  • 2: 1.29+

v2 provides stronger developer validation features, and is recommended if your extension already requires MediaWiki 1.29+. Il est recommandé de supprimer la compatibilité avec les anciennes versions, simplement pour forcer la mise à jour vers un nouveau manifest_version.

Currently new features are added to both v1 and v2, but it has been proposed to freeze and soft deprecate v1 in the MediaWiki 1.38 release (discuss on Phabricator).

Exemple :

{
	"manifest_version": 2
}
Ce champ est typiquement placé à la fin des fichiers extension.json .

name

Version de MediaWiki :
1.25
Gerrit change 166705

Ce champ est obligatoire.

Il s'agit du nom canonique de l'extension. Il ne doit pas être modifié une fois qu'il a été défini parce qu'il est utilisé comme API pour que les autres extensions puissent détecter qu'elle a été installée.

{
	"name": "FooBar"
}

namemsg

Version de MediaWiki :
1.25
Gerrit change 166705

Version traduite du nom de l'extension. Typically the message key is named in the format <name>-extensionname or <name>-skinname.

{
	"namemsg": "foobar-extensionname"
}

type

Version de MediaWiki :
1.25
Gerrit change 166705

The type of extension it is, for sorting on Special:Version. Les types suivants sont acceptés :

Custom types can be added by using the ExtensionTypes hook. Known ones include:

If not set, the extension will default to the "other" section, and if set to an invalid value the extension will not appear on Special:Version.

{
	"type": "specialpage"
}

author

Version de MediaWiki :
1.25
Gerrit change 166705

Auteurs de l'extension, peut contenir du texte wiki. Ceci peut être soit une chaîne unique, soit un tableau de chaînes. En plus, la chaîne spéciale ... peut être utilisée pour ajouter un suffixe générique « autres » en utilisant le message version-poweredby-others .

version

Version de MediaWiki :
1.25
Gerrit change 166705

The current version of the extension. Should be in a format supported by Composer.

url

Version de MediaWiki :
1.25
Gerrit change 166705

URL to the extension's "homepage" or documentation. Typically points to https://www.mediawiki.org/wiki/Extension:<extensionname>.

description

Version de MediaWiki :
1.25
Gerrit change 166705

Description of the extension, may contain wikitext. Note: it is recommended to use descriptionmsg instead.

descriptionmsg

Version de MediaWiki :
1.25
Gerrit change 166705

Localization message key for the extension's description, typically in the format <extensionname>-desc. This will override description.

license-name

Version de MediaWiki :
1.25
Gerrit change 166705

The SPDX license identifier for the license the source code is licensed as. If you create a file named COPYING or LICENSE (with an optional .txt extension) in the extension root directory with the contents of the license, it will also be linked and visible from Special:Version.

requires

Version de MediaWiki :
1.26
Gerrit change 210856
Version de MediaWiki :
1.29
Gerrit change 250060

The requires section allows you to document dependencies on versions of MediaWiki core (1.26+) and other extensions (1.29+).

{
	"requires": {
		"MediaWiki": ">= 1.27.0",
		"extensions": {
			"FooBar": "*",
			"Baz": ">= 1.2.3"
		}
	}
}

You can use any version specifier that composer supports. For MediaWiki, it is best practice to specify a >= for the minimum supported version, unless you know a future version is explicitly broken. For extensions, if they don't have a version specifier set, or don't use a versioning system, use a plain * to indicate any version is acceptable.

If your extension uses Wikimedia Continuous integration, you also need to add extension dependencies to zuul/parameter_functions.py in the integration/config project.

platform

Version de MediaWiki :
1.32
Gerrit change 458940
Version de MediaWiki :
1.32
Gerrit change 462596

You can also express a dependency on platform settings, currently limited to PHP version and PHP extensions. Note that most extensions are expected to follow the PHP version requirements for the versions of MediaWiki core they support, and specifying a more restrictive PHP version contraint should only be done in exceptional cases. Checking for PHP extension versions isn't supported right now.

{
	"requires": {
		"MediaWiki": ">= 1.32.0",
		"platform": {
			"php": ">= 7.1",
			"ext-curl": "*"
		}
	}
}

In this example, the extension requires 1.32 (which has a minimum requirement of PHP 7.0), and additionally expresses that it needs a higher dependency of at least PHP 7.1 since it requires usage of some newer PHP feature. Furthermore, it required the curl PHP extension to be installed.

ResourceFileModulePaths

Version de MediaWiki :
1.25
Gerrit change 188996

Specifies the default paths to use for all ResourceLoader file modules.

The allowed properties are:

  • localBasePath
  • remoteExtPath
  • remoteSkinPath

These correspond to the same options in each module definition in ResourceModules. If a value is not specified in the module definition, the default value specified here will be used.

{
	"ResourceFileModulePaths": {
		"localBasePath": "resources",
		"remoteExtPath": "FooBar/resources"
	}
}

ResourceModules

Version de MediaWiki :
1.25
Gerrit change 166705

ResourceLoader modules to register.

Cette option correspond directement à la variable globale $wgResourceModules . Veuillez lire la documentation correspondante sur la manière de la configurer.


ResourceModuleSkinStyles

Version de MediaWiki :
1.25
Gerrit change 201661

ResourceLoader modules for custom skin styles.

Cette option correspond directement à la variable globale $wgResourceModuleSkinStyles . Veuillez lire la documentation correspondante sur la manière de la configurer.


ResourceLoaderSources

Version de MediaWiki :
1.25
Gerrit change 166705

ResourceLoader sources to register.

Cette option correspond directement à la variable globale $wgResourceLoaderSources . Veuillez lire la documentation correspondante sur la manière de la configurer.


ResourceLoaderLESSVars

Versions de MediaWiki :
1.25 – 1.30
Gerrit change 166705

An associative array binding variable names to LESS code snippets representing their values.

Cette option correspond directement à la variable globale $wgResourceLoaderLESSVars . Veuillez lire la documentation correspondante sur la manière de la configurer.


SkinLessImportPaths

Version de MediaWiki :
1.36
Gerrit change 434211

Path to the skin-specific LESS import directory, keyed by skin name. Can be used to define skin-specific LESS variables.

QUnitTestModule

Version de MediaWiki :
1.33
Gerrit change 485247

A ResourceLoader file module, to loaded when running JavaScript unit tests. This follows the same syntax as ResourceModules.

Internally, when $wgEnableJavaScriptTest is true, this module is automatically registered under the name "test.ExtensionName".

MessagePosterModule

Version de MediaWiki :
1.35
Gerrit change 542655

Allows extensions to add additional files or dependencies to the mediawiki.messagePoster module bundle. This follows the same syntax as ResourceModules.

ConfigRegistry

Version de MediaWiki :
1.25
Gerrit change 166705

Registry of factory functions to create Config objects.

Cette option correspond directement à la variable globale $wgConfigRegistry . Veuillez lire la documentation correspondante sur la manière de la configurer.


SessionProviders

Version de MediaWiki :
1.27
Gerrit change 288324

Specifies what providers to use for SessionManager.

Cette option correspond directement à la variable globale $wgSessionProviders . Veuillez lire la documentation correspondante sur la manière de la configurer.


AuthManagerAutoConfig

Version de MediaWiki :
1.27
Gerrit change 195297

AuthManager auto-configuration.

Cette option correspond directement à la variable globale $wgAuthManagerAutoConfig . Veuillez lire la documentation correspondante sur la manière de la configurer.


The following properties are available:

  • preauth: Pre-authentication providers.
  • primaryauth: Primary authentication providers.
  • secondaryauth: Secondary authentication providers.

CentralIdLookupProviders

Version de MediaWiki :
1.27
Gerrit change 261909

Central ID lookup providers.

Cette option correspond directement à la variable globale $wgCentralIdLookupProviders . Veuillez lire la documentation correspondante sur la manière de la configurer.


ChangeCredentialsBlacklist

Version de MediaWiki :
1.28
Gerrit change 294859

AuthenticationRequest classes which can only be used internally for credential change.

Cette option correspond directement à la variable globale $wgChangeCredentialsBlacklist . Veuillez lire la documentation correspondante sur la manière de la configurer.


RemoveCredentialsBlacklist

Version de MediaWiki :
1.28
Gerrit change 294859

AuthenticationRequest classes which can only be used internally for credential removal.

Cette option correspond directement à la variable globale $wgRemoveCredentialsBlacklist . Veuillez lire la documentation correspondante sur la manière de la configurer.


namespaces

Version de MediaWiki :
1.25.3
Gerrit change 237973

Method to add extra namespaces.

The following properties are available:

  • id: An integer. The numeric identifier of the namespace, as used in the database. Since MW 1.30, the namespace ID can be overwritten locally, by defining the respective constant in LocalSettings.php before loading the extension. Extension code must therefore always use the constant for the namespace ID, and never use the ID as a literal in PHP code. Consider listing your id number used at Extension default namespaces to avoid conflicts with other extensions.
  • constant: A string. The name of the constant that the extension code uses to refer to the namespace ID.
  • name: A string. The name of the namespace, as used in titles.
  • gender: Gender object. Properties are either "male" or "female". See gender support.
  • subpages: Boolean. Default is false. See Manuel:$wgNamespaceWithSubpages .
  • content: Boolean. Default is false. See Manuel:$wgContentNamespaces .
  • defaultcontentmodel: A string. See ContentHandler .
  • protection: Userright(s) required to edit in this namespace. An array or string.
  • capitallinkoverride: Set $wgCapitalLinks on a per-namespace basis. Boolean.
  • conditional: Whether the namespace is conditional upon configuration and should not be registered (requires separate registration via a hook such as CanonicalNamespaces). Boolean. Default is false.
  • movable: Whether it is possible to move pages in this namespace. Boolean. Default is true. MW 1.35.2+

TrackingCategories

Version de MediaWiki :
1.25
Gerrit change 166705

Tracking category message keys.

Cette option correspond directement à la variable globale $wgTrackingCategories . Veuillez lire la documentation correspondante sur la manière de la configurer.


DefaultUserOptions

Version de MediaWiki :
1.25
Gerrit change 166705


Cette option correspond directement à la variable globale $wgDefaultUserOptions . Veuillez lire la documentation correspondante sur la manière de la configurer.

	"DefaultUserOptions": {
		"math": "png"
	},

HiddenPrefs

Version de MediaWiki :
1.25
Gerrit change 166705

Preferences users cannot set.

Cette option correspond directement à la variable globale $wgHiddenPrefs . Veuillez lire la documentation correspondante sur la manière de la configurer.


GroupPermissions

Version de MediaWiki :
1.25
Gerrit change 166705

Default permissions to give to user groups.

Cette option correspond directement à la variable globale $wgGroupPermissions . Veuillez lire la documentation correspondante sur la manière de la configurer.


RevokePermissions

Version de MediaWiki :
1.25
Gerrit change 166705

Default permissions to revoke from user groups.

Cette option correspond directement à la variable globale $wgRevokePermissions . Veuillez lire la documentation correspondante sur la manière de la configurer.


GrantPermissions

Map of permissions granted to authorized consumers to their bundles, called 'grants.'

Cette option correspond directement à la variable globale $wgGrantPermissions . Veuillez lire la documentation correspondante sur la manière de la configurer.


GrantPermissionGroups

Map of grants to their UI grouping.

Cette option correspond directement à la variable globale $wgGrantPermissionGroups . Veuillez lire la documentation correspondante sur la manière de la configurer.


ImplicitGroups

Implicit groups.

Cette option correspond directement à la variable globale $wgImplicitGroups . Veuillez lire la documentation correspondante sur la manière de la configurer.


GroupsAddToSelf

Groups a user can add to themselves.

Cette option correspond directement à la variable globale $wgGroupsAddToSelf . Veuillez lire la documentation correspondante sur la manière de la configurer.


GroupsRemoveFromSelf

Groups a user can remove from themselves.

Cette option correspond directement à la variable globale $wgGroupsRemoveFromSelf . Veuillez lire la documentation correspondante sur la manière de la configurer.


AddGroups

Groups a user can add to users.

Cette option correspond directement à la variable globale $wgAddGroups . Veuillez lire la documentation correspondante sur la manière de la configurer.


RemoveGroups

Groups a user can remove from users.

Cette option correspond directement à la variable globale $wgRemoveGroups . Veuillez lire la documentation correspondante sur la manière de la configurer.


AvailableRights

User rights added by the extension.

Cette option correspond directement à la variable globale $wgAvailableRights . Veuillez lire la documentation correspondante sur la manière de la configurer.


ContentHandlers

Mapping of Model ID to class name.

Cette option correspond directement à la variable globale $wgContentHandlers . Veuillez lire la documentation correspondante sur la manière de la configurer.


RateLimits

Simple rate limiter options to brake edit floods.

Cette option correspond directement à la variable globale $wgRateLimits . Veuillez lire la documentation correspondante sur la manière de la configurer.


RecentChangesFlags

Flags (letter symbols) shown in recent changes and watchlist to indicate certain types of edits.

Cette option correspond directement à la variable globale $wgRecentChangesFlags . Veuillez lire la documentation correspondante sur la manière de la configurer.


MediaHandlers

Plugins for media file type handling. Each entry in the array map maps a MIME type to a PHP class name.

Cette option correspond directement à la variable globale $wgMediaHandlers . Veuillez lire la documentation correspondante sur la manière de la configurer.


ExtensionFunctions

Function to call after setup has finished.

Cette option correspond directement à la variable globale $wgExtensionFunctions . Veuillez lire la documentation correspondante sur la manière de la configurer.


ExtensionMessagesFiles

File paths containing PHP internationalization files.

Cette option correspond directement à la variable globale $wgExtensionMessagesFiles . Veuillez lire la documentation correspondante sur la manière de la configurer.


MessagesDirs

Directory paths containing JSON internationalization data.

Cette option correspond directement à la variable globale $wgMessagesDirs . Veuillez lire la documentation correspondante sur la manière de la configurer.


If you use the default directory layout with localized messages in the i18n/ directory, you can specify:

"MessagesDirs": {
	"ExtensionName": [
		"i18n"
	]
},

ExtensionEntryPointListFiles

Array of files with list(s) of extension entry points to be used in maintenance/mergeMessageFileList.php

Cette option correspond directement à la variable globale $wgExtensionEntryPointListFiles . Veuillez lire la documentation correspondante sur la manière de la configurer.


SpecialPages

SpecialPages implemented in this extension (mapping of page name to class name).

Cette option correspond directement à la variable globale $wgSpecialPages . Veuillez lire la documentation correspondante sur la manière de la configurer.


AutoloadClasses

Array mapping class names to filenames, for autoloading.

Cette option correspond directement à la variable globale $wgAutoloadClasses . Veuillez lire la documentation correspondante sur la manière de la configurer.

Example:

{
    ...
    "AutoloadClasses": {
        "MyClassName": "includes/FileContainingMyClassName.php",
        "SomeNamespace\\SpecialHelloWorld": "specials/SpecialHelloWorld.php"
    },
    ...
}

AutoloadNamespaces

Version de MediaWiki :
1.31
Gerrit change 373626

Array containing mapping of namespaces to directories in a PSR-4 compatible manner. Here's an example:

{
	"AutoloadNamespaces": {
		"MediaWiki\\Extension\\BetaFeatures\\": "includes/"
	}
}

In this case all of the PHP classes are under the MediaWiki\Extension\BetaFeatures\ namespace, and the naming of the classes directly maps to the files located in the includes/ directory (relative to the extension.json file). Note that the namespace portion must end with \\.

Extensions using this feature should require at least MediaWiki 1.31 in extension.json file:

{
	"requires": {
		"MediaWiki": ">= 1.31.0"
	},
}

For example, see Gerrit change 468385.

TestAutoloadClasses and TestAutoloadNamespaces

Version de MediaWiki :
1.35
Gerrit change 556181

Both are the same as AutoloadClasses and AutoloadNamespaces, except that they are only used when running tests.

For example, see Gerrit change 556240.

Hooks

Hooks this extension uses (mapping of hook name to callback).

Cette option correspond directement à la variable globale $wgHooks . Veuillez lire la documentation correspondante sur la manière de la configurer.


{
	"Hooks": {
		"ParserFirstCallInit": "MassMessageHooks::onParserFirstCallInit"
	}
}

It's possible to register multiple callbacks for the same hook event:

{
	"Hooks": {
		"ParserFirstCallInit": [
			"MassMessageHooks::onParserFirstCallInitOne",
			"MassMessageHooks::onParserFirstCallInitTwo"
		]
	}
}

HookHandlers

Version de MediaWiki :
1.35
Gerrit change 596914

ObjectFactory specifications for new-style hook handlers.

{
    "Hooks": {
        "BeforePageDisplay": "main"
    },
    "HookHandlers": {
        "main": {
            "class": "MediaWiki\\Extension\\MyExtension\\HookHandler",
            "services": [ "UserNameUtils" ]
        }
    }
}

DeprecatedHooks

Version de MediaWiki :
1.35
Gerrit change 596914

Deprecated hooks (see Stable interface policy). Maps hook name to an array with deprecatedVersion (MediaWiki version) and component (optional, usually omitted).

JobClasses

Job types this extension implements (mapping of job types to class name).

Cette option correspond directement à la variable globale $wgJobClasses . Veuillez lire la documentation correspondante sur la manière de la configurer.


LogTypes

List of new log types this extension uses.

Cette option correspond directement à la variable globale $wgLogTypes . Veuillez lire la documentation correspondante sur la manière de la configurer.


LogRestrictions

Restricts log access to those who have a certain right.

Cette option correspond directement à la variable globale $wgLogRestrictions . Veuillez lire la documentation correspondante sur la manière de la configurer.


FilterLogTypes

An object.

Cette option correspond directement à la variable globale $wgFilterLogTypes . Veuillez lire la documentation correspondante sur la manière de la configurer.


ActionFilteredLogs

List of log types which can be filtered by log actions.

Cette option correspond directement à la variable globale $wgActionFilteredLogs . Veuillez lire la documentation correspondante sur la manière de la configurer.


LogNames

Lists the message key string for each log type.

Cette option correspond directement à la variable globale $wgLogNames . Veuillez lire la documentation correspondante sur la manière de la configurer.


LogHeaders

Lists the message key string for descriptive text to be shown at the top of each log type.

Cette option correspond directement à la variable globale $wgLogHeaders . Veuillez lire la documentation correspondante sur la manière de la configurer.


LogActions

Lists the message key string for formatting individual events of each type and action when listed in the logs.

Cette option correspond directement à la variable globale $wgLogActions . Veuillez lire la documentation correspondante sur la manière de la configurer.


LogActionsHandlers

Same as $wgLogActions , but values are functions callbacks.

Cette option correspond directement à la variable globale $wgLogActionsHandlers . Veuillez lire la documentation correspondante sur la manière de la configurer.


Actions

Array of allowed values for the "action" parameter for normal pages.

Cette option correspond directement à la variable globale $wgActions . Veuillez lire la documentation correspondante sur la manière de la configurer.


APIModules

API module extensions.

Cette option correspond directement à la variable globale $wgAPIModules . Veuillez lire la documentation correspondante sur la manière de la configurer.


APIFormatModules

API format module extensions.

Cette option correspond directement à la variable globale $wgAPIFormatModules . Veuillez lire la documentation correspondante sur la manière de la configurer.


APIMetaModules

API Query meta module extensions.

Cette option correspond directement à la variable globale $wgAPIMetaModules . Veuillez lire la documentation correspondante sur la manière de la configurer.


APIPropModules

API Query prop module extensions.

Cette option correspond directement à la variable globale $wgAPIPropModules . Veuillez lire la documentation correspondante sur la manière de la configurer.


APIListModules

API Query list module extensions.

Cette option correspond directement à la variable globale $wgAPIListModules . Veuillez lire la documentation correspondante sur la manière de la configurer.


RestRoutes

Version de MediaWiki :
1.35
Gerrit change 508972

List of route specifications to be added to the REST API. See API:REST API/Extensions.

ValidSkinNames

List of valid skin names. Skins can optionally use this variable to tell MediaWiki that they are available.

Cette option correspond directement à la variable globale $wgValidSkinNames . Veuillez lire la documentation correspondante sur la manière de la configurer.


FeedClasses

Available feed objects.

Cette option correspond directement à la variable globale $wgFeedClasses . Veuillez lire la documentation correspondante sur la manière de la configurer.


SkinOOUIThemes

Map of skin names to OOUI themes to use.

{
	"SkinOOUIThemes": {
		"yourskinname": "Apex"
	}
}

OOUIThemePaths

Map of custom OOUI theme names to paths to load them from.

{
	"OOUIThemePaths": {
		"YourTheme": {
			"scripts": "resources/ooui/oojs-ui-yourtheme.js",
			"styles": "resources/ooui/oojs-ui-{module}-yourtheme.css",
			"images": "resources/ooui/{module}.json"
		}
	},
}
scripts
Path to script file.
styles
Path to style files. {module} will be replaced with the module's name.
images
Path to images (optional, can be set to null). {module} will be replaced with the module's name.

PasswordPolicy

Password policies.

Cette option correspond directement à la variable globale $wgPasswordPolicy . Veuillez lire la documentation correspondante sur la manière de la configurer.


FileExtensions

Preferred file extensions for uploading.

Cette option correspond directement à la variable globale $wgFileExtensions . Veuillez lire la documentation correspondante sur la manière de la configurer.


RawHtmlMessages

List of messages which might contain raw HTML.

Cette option correspond directement à la variable globale $wgRawHtmlMessages . Veuillez lire la documentation correspondante sur la manière de la configurer.


ReauthenticateTime

Time frame for re-authentication.

Cette option correspond directement à la variable globale $wgReauthenticateTime . Veuillez lire la documentation correspondante sur la manière de la configurer.


callback

Sometimes extensions need to do non-standard things during registration, or are just very complex. You can specify a callback key in your extension.json if you need to execute some PHP code. The value should be set to a valid PHP callable, for example: FooBarHooks::onRegistration. ExtensionRegistry will execute this callback after it processes the extension.json file and sets all the other globals and configuration settings. This happens after LocalSettings, so all user-specified configuration is available, but some defaults set by MediaWiki might not have been initialized yet.

{
	"callback": "FooBarHooks::onRegistration"
}

The callback isn't a normal hook function, it runs in early initialization. See Manual:Extension registration/Limitations for what sort of things may require custom registration.

Manual:$wgExtensionFunctions and the SetupAfterCache, BeforeInitialize and ApiBeforeMain hooks provide other ways of programmatically interacting with configuration.

config

Version de MediaWiki :
1.25

The config section is where you can define configuration settings that sysadmins can change to configure the extension. This section should only be used for things that are configured in LocalSettings.php - if it is supposed to be modified by other extensions, you should use attributes, or if it is just class metadata, use a private static variable or something like that. The format of config changed in manifest_version 2.

Manifest version 1

A simple example:

{
    "config": {
        "FooBarUseExtraFeature": false
    }
}

This is equivalent to writing $wgFooBarUseExtraFeature = false; in PHP. Note that the typical "wg" prefix is not included, as that will be added by default. If your settings start with a different prefix like $eg, you can use the magic _prefix key:

{
	"config": {
		"_prefix": "eg",
		"FooBarUseExtraFeature": false
	}
}

This is now equivalent to writing $egFooBarUseExtraFeature = false; in PHP.

A more complex example:

{
	"config": {
		"FooBarEnabledNamespaces": {
			"0": true,
			"2": true,
			"4": true,
			"_merge_strategy": "array_plus"
		},
		"FooBarCoolStuff": {
			"sysop": {
				"foo": true,
				"bar": false
			},
			"_merge_strategy": "array_plus_2d"
		}
	}
}

The first setting, $wgFooBarEnabledNamespaces, has keys that are numbers, so PHP will turn them into integers, even though they are strings in JSON. Because of how PHP treats integer keys when merging arrays, we need to use a different type of merge here, so we set a different "merge strategy" using the magic key. In the second example, we have a nested array, which requires a different type of merging, since we want to allow people to continue writing $wgFooBarCoolStuff['user']['foo'] = true; in their LocalSettings.php.

Changes in manifest version 2

Version de MediaWiki :
1.29

With MediaWiki 1.29, a new manifest_version (2) was introduced. In this version, the config section is improved in several ways. To support these changes, the signature of a set of configuration option and configuration value changed a bit. The key of the config object is still the configuration name, however, the value of that key is an object, which describes this configuration option, where one of the values is the value. You can find information about what the specific keys and values for a configuration option are on the extension registration documentation page. An easy example of the new schema, which simply is one configuration option and it's value, would look like:

{
	"config": {
		"FooBarUseExtraFeature": {
			"value": false
		}
	},
	"manifest_version": 2
}

A more complex one would look like:

{
	"config_prefix": "eg",
	"config": {
		"MyExtSetting": {
			"value": true,
			"path": false,
			"description": "The description for the configuration",
			"descriptionmsg": "myextension-config-myextsetting",
			"public": true
		},
		"FooBarCoolStuff": {
			"value": {
				"sysop": {
					"foo": true,
					"bar": false
				}
			},
		    "merge_strategy": "array_plus_2d"
		}
	},
	"manifest_version": 2
}
The version 2 of the schema is incompatible with version 1. Thus you will have to convert your existing "extension.json" file to the new format using the updateExtensionJsonSchema.php script.

Paths

As demonstrated in the example above, a configuration option can have the path key defined. When present and set to true, the value of the setting will be interpreted as a path local to the extension. For example, an extension might define its configuration as

{
	"config": {
		"Setting": {
			"value": "some_file.txt",
			"path": true
		}
	},
	"manifest_version": 2
}

The value for the configuration option "Setting" will be resolved to $wgExtensionDirectory/FooBar/some_file.txt.

Merge strategies

The merge strategy defines how to merge the default value of the configuration setting with the global value (the value of the $wgXXX global variable). This only makes sense for array-valued configuration settings. The following merge strategies are available:

  • array_merge: Uses the array_merge PHP command: array elements with numeric keys will be interpreted as non-associative list items and concatenated to the array (with the keys renumbered if needed), array elements with non-numeric keys will be interpreted as hashmap items and overwrite items with the same key.
  • array_plus: Uses the + PHP operator, so fields of the default value will only be used when the corresponding field is not set in the global value. This is useful for associative arrays with integer keys (such as namespace IDs).
  • array_plus_2d: Uses wfArrayPlus2d to handles nested arrays to a depth of 2 properly (e.g. $wgGroupPermissions ).
  • array_merge_recursive: Handles arrays even deeper than 2 with array_merge_recursive. Given the unintuitive behavior of this method (example), this strategy is not recommended. A configuration setting that is more than 2 levels deep suggests too many things are being configured in one setting, and splitting it into multiple settings might be a good idea.
  • array_replace_recursive: Uses array_replace_recursive, basically the recursive version of array_plus. Unlike array_merge_recursive, this will handle non-array fields the way one would expect.
  • provide_default (since MW 1.35.3): no merging; the default will only be used when no global value is set.

When not explicitly set, the merge strategy defaults to array_merge. When at least one of the global value and the default is not an array, the merge strategy is ignored and the global value will simply override the default.

config_prefix

Version de MediaWiki :
1.28

Prefixe à insérer devant les paramètres de configuration lors de l'export vers $GLOBALS.

The default is "wg", so a configuration setting "Example" corresponds to a PHP global $wgExample. Note that choosing a different config prefix can make it more difficult to find the extension setting corresponding to a given global.

ParsoidModules

Version de MediaWiki :
1.35
Gerrit change 597639

Liste de spécifieurs de modules de l'extension Parsoid. Un module d'extension Parsoid est une classe qui implémente Wikimedia\Parsoid\Ext\ExtensionModule; un spécifieur est un nom de classe ou une spécification de ObjectFactory ou encore une spécification de module dédié Parsoid.

A FAIRE : document


ParserTestFiles

Ensemble des fichiers de test de l'analyseur à exécuter par parserTests.php quand aucun nom de fichier spécifique lui est fourni.

Cette option correspond directement à la variable globale $wgParserTestFiles . Veuillez lire la documentation correspondante sur la manière de la configurer.


ServiceWiringFiles

Tableau contenant les noms des fichiers associés aux services, à charger par l'instance par défaut de MediaWikiServices.

Cette option correspond directement à la variable globale $wgServiceWiringFiles . Veuillez lire la documentation correspondante sur la manière de la configurer.


attributes

Informations d'enregistrement pour les autres extensions. Cela permet à une extension d'enregistrer des éléments en rapport avec d'autres extensions. Les attributs doivent être des tableaux PHP : soit une liste (tableau JSON) ou associatifs (objet JSON)

Dans manifest_version 1 il s'agissait des clés de premier niveau que vous pouviez nommer arbitrairement :

"EventLoggingSchemas": {
    "MySchema": 123
}

Dans manifest_version 2, elles figurent sous la clé attributes de premier niveau, et sont imbriquées sous le nom de l'extension à laquelle l'attribut appartient. Le nom de l'attribut est encore EventLoggingSchemas. Si cette extension (EventLogging dans notre cas) n'est pas installée, les attributs ne seront pas chargés dans le registre.

"attributes": {
    "EventLogging": {
        "Schemas": {
            "MySchema": 123
        }
    }
}

Pour accéder à la valeur d'un attribut en PHP, vous pouvez utiliser ExtensionRegistry :

$schemas = ExtensionRegistry::getInstance()->getAttribute( 'EventLoggingSchemas' );

load_composer_autoloader

Charger le chargeur automatique de composer pour cette extension, s'il en existe un. Ceci doit être utilisé si l'extension a des dépendances sur les bibliothèques spécifiées dans composer.json. Ce qui équivaut en gros au code suivant :

if ( file_exists( __DIR__ . '/vendor/autoload.php' ) ) {
	require_once __DIR__ . '/vendor/autoload.php';
}