summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Urbanec <martin.urbanec@wikimedia.cz>2023-10-11 11:39:16 +0200
committerMartin Urbanec <martin.urbanec@wikimedia.cz>2023-10-11 11:39:16 +0200
commitfafc8a8598901c94f9f270ddd66edb94f5340763 (patch)
treeac8456d4724ac467fe2e9567ba409933740baf95
parentd4e04bcfb17aa59fa444a41818fd8bd6874d97cd (diff)
PoC: Add Community configuration variablessandbox/urbanecm/community-configuration
Change-Id: Ie11594d5cf20340784b5e02bd39ed2713dde90d5
-rw-r--r--docs/config-schema.yaml12
-rw-r--r--docs/config-vars.php18
-rw-r--r--docs/extension.schema.v1.json9
-rw-r--r--docs/extension.schema.v2.json9
-rw-r--r--includes/MainConfigNames.php18
-rw-r--r--includes/MainConfigSchema.php24
-rw-r--r--includes/config-schema.php9
-rw-r--r--includes/registration/ExtensionProcessor.php3
8 files changed, 102 insertions, 0 deletions
diff --git a/docs/config-schema.yaml b/docs/config-schema.yaml
index dc4450240897..e99c3cecc5c3 100644
--- a/docs/config-schema.yaml
+++ b/docs/config-schema.yaml
@@ -7910,3 +7910,15 @@ config-schema:
description: |-
Whether to enable the client-side edit recovery feature.
This is a temporary feature flag.
+ CommunityConfigurationStorages:
+ default: { }
+ type: object
+ description: 'List of configured community configuration storages'
+ CommunityConfigurationValidators:
+ default: { }
+ type: object
+ description: 'List of configured community configuration validators'
+ CommunityConfigurationProviders:
+ default: { }
+ type: object
+ description: 'List of configured community configuration providers'
diff --git a/docs/config-vars.php b/docs/config-vars.php
index dd8016fe282b..f928279e441e 100644
--- a/docs/config-vars.php
+++ b/docs/config-vars.php
@@ -4438,3 +4438,21 @@ $wgSpecialContributeSkinsEnabled = null;
* @see MediaWiki\MainConfigSchema::EnableEditRecovery
*/
$wgEnableEditRecovery = null;
+
+/**
+ * Config variable stub for the CommunityConfigurationStorages setting, for use by phpdoc and IDEs.
+ * @see MediaWiki\MainConfigSchema::CommunityConfigurationStorages
+ */
+$wgCommunityConfigurationStorages = null;
+
+/**
+ * Config variable stub for the CommunityConfigurationValidators setting, for use by phpdoc and IDEs.
+ * @see MediaWiki\MainConfigSchema::CommunityConfigurationValidators
+ */
+$wgCommunityConfigurationValidators = null;
+
+/**
+ * Config variable stub for the CommunityConfigurationProviders setting, for use by phpdoc and IDEs.
+ * @see MediaWiki\MainConfigSchema::CommunityConfigurationProviders
+ */
+$wgCommunityConfigurationProviders = null;
diff --git a/docs/extension.schema.v1.json b/docs/extension.schema.v1.json
index 53bd95bd1d7c..2b931f395c1d 100644
--- a/docs/extension.schema.v1.json
+++ b/docs/extension.schema.v1.json
@@ -1400,6 +1400,15 @@
"type": "string",
"description": "The directory holding the foreign-resources.yaml file, relative to the extension root. See https://www.mediawiki.org/wiki/Foreign_resources"
},
+ "CommunityConfigurationStorages": {
+ "type": "object"
+ },
+ "CommunityConfigurationValidators": {
+ "type": "object"
+ },
+ "CommunityConfigurationProviders": {
+ "type": "object"
+ },
"load_composer_autoloader": {
"type": "boolean",
"description": "Load the composer autoloader for this extension, if one is present"
diff --git a/docs/extension.schema.v2.json b/docs/extension.schema.v2.json
index f2c4126d6cac..1bcc51dbb878 100644
--- a/docs/extension.schema.v2.json
+++ b/docs/extension.schema.v2.json
@@ -1596,6 +1596,15 @@
"type": "string",
"description": "The directory holding the foreign-resources.yaml file, relative to the extension root. See https://www.mediawiki.org/wiki/Foreign_resources"
},
+ "CommunityConfigurationStorages": {
+ "type": "object"
+ },
+ "CommunityConfigurationValidators": {
+ "type": "object"
+ },
+ "CommunityConfigurationProviders": {
+ "type": "object"
+ },
"attributes": {
"description": "Registration information for other extensions",
"type": "object",
diff --git a/includes/MainConfigNames.php b/includes/MainConfigNames.php
index fcc7203e8267..2cbd1f97754f 100644
--- a/includes/MainConfigNames.php
+++ b/includes/MainConfigNames.php
@@ -4454,4 +4454,22 @@ class MainConfigNames {
*/
public const EnableEditRecovery = 'EnableEditRecovery';
+ /**
+ * Name constant for the CommunityConfigurationStorages setting, for use with Config::get()
+ * @see MainConfigSchema::CommunityConfigurationStorages
+ */
+ public const CommunityConfigurationStorages = 'CommunityConfigurationStorages';
+
+ /**
+ * Name constant for the CommunityConfigurationValidators setting, for use with Config::get()
+ * @see MainConfigSchema::CommunityConfigurationValidators
+ */
+ public const CommunityConfigurationValidators = 'CommunityConfigurationValidators';
+
+ /**
+ * Name constant for the CommunityConfigurationProviders setting, for use with Config::get()
+ * @see MainConfigSchema::CommunityConfigurationProviders
+ */
+ public const CommunityConfigurationProviders = 'CommunityConfigurationProviders';
+
}
diff --git a/includes/MainConfigSchema.php b/includes/MainConfigSchema.php
index ef656ba74610..f517cadb5940 100644
--- a/includes/MainConfigSchema.php
+++ b/includes/MainConfigSchema.php
@@ -12670,6 +12670,30 @@ class MainConfigSchema {
'type' => 'boolean',
];
+ /**
+ * List of configured community configuration storages
+ */
+ public const CommunityConfigurationStorages = [
+ 'default' => [],
+ 'type' => 'object',
+ ];
+
+ /**
+ * List of configured community configuration validators
+ */
+ public const CommunityConfigurationValidators = [
+ 'default' => [],
+ 'type' => 'object',
+ ];
+
+ /**
+ * List of configured community configuration providers
+ */
+ public const CommunityConfigurationProviders = [
+ 'default' => [],
+ 'type' => 'object',
+ ];
+
// endregion -- End Miscellaneous
}
diff --git a/includes/config-schema.php b/includes/config-schema.php
index bfbfb83b7e63..d16526822f65 100644
--- a/includes/config-schema.php
+++ b/includes/config-schema.php
@@ -2483,6 +2483,12 @@ return [
'SpecialContributeSkinsEnabled' => [
],
'EnableEditRecovery' => false,
+ 'CommunityConfigurationStorages' => [
+ ],
+ 'CommunityConfigurationValidators' => [
+ ],
+ 'CommunityConfigurationProviders' => [
+ ],
],
'type' => [
'ConfigRegistry' => 'object',
@@ -2951,6 +2957,9 @@ return [
'SkinsPreferred' => 'array',
'SpecialContributeSkinsEnabled' => 'array',
'EnableEditRecovery' => 'boolean',
+ 'CommunityConfigurationStorages' => 'object',
+ 'CommunityConfigurationValidators' => 'object',
+ 'CommunityConfigurationProviders' => 'object',
],
'mergeStrategy' => [
'TiffThumbnailType' => 'replace',
diff --git a/includes/registration/ExtensionProcessor.php b/includes/registration/ExtensionProcessor.php
index d258ce152f0c..ff227eb30039 100644
--- a/includes/registration/ExtensionProcessor.php
+++ b/includes/registration/ExtensionProcessor.php
@@ -31,6 +31,9 @@ class ExtensionProcessor implements Processor {
MainConfigNames::ChangeCredentialsBlacklist,
MainConfigNames::ConfigRegistry,
MainConfigNames::ContentHandlers,
+ MainConfigNames::CommunityConfigurationStorages,
+ MainConfigNames::CommunityConfigurationValidators,
+ MainConfigNames::CommunityConfigurationProviders,
MainConfigNames::DefaultUserOptions,
MainConfigNames::ExtensionEntryPointListFiles,
MainConfigNames::ExtensionFunctions,