Skip to content

wikimedia/mediawiki-extensions-CommunityConfiguration

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Community configuration 2.0: Backend extension

This extension is a part of the CommunityConfigurationExample as an example usage of Community configuration in a feature.

Setting up locally

An end to end setup of Community configuration depends on three components:

  • This extension, CommunityConfiguration
  • The example usage in CommunityConfigurationExample

To set up Community configuration 2.0, please follow those instructions:

# clone the necessary extensions
core $ git clone https://gitlab.wikimedia.org/repos/growth/community-configuration-example extensions/CommunityConfigurationExample
core $ git clone https://gitlab.wikimedia.org/repos/growth/community-configuration extensions/CommunityConfiguration
# enable extensions in LocalSettings.php
core $ echo "wfLoadExtensions( ['CommunityConfiguration', 'CommunityConfigurationExample' ] );" >> LocalSettings.php

Once done, you should be able to access CommunityConfiguration from Special:CommunityConfigurationExample. Interacting with the Community configuration interface should be also working:

core $ php maintenance/run.php shell
> $config = \MediaWiki\MediaWikiServices::getInstance()->get('CommunityConfiguration.ProviderFactory')->newProvider('static-example')->loadValidConfiguration()
= StatusValue {#5739
    +value: [
      "wgFooBar" => 42,
    ],
    +success: [],
    +successCount: 0,
    +failCount: 0,
  }

> $config->isOK()
= true

> $config->getValue()
= [
    "wgFooBar" => 42,
  ]

>

Json validation example

For a given JSON schema defintion, eg: community-configuration-example/src/Schemas/schema_draft-07.json

core $ php maintenance/run.php shell
> $provider = \MediaWiki\MediaWikiServices::getInstance()->get('CommunityConfiguration.ProviderFactory')->newProvider('FooBar');
= MediaWiki\Extension\CommunityConfiguration\Provider\DataConfigurationProvider {#5696}

> $provider->getValidator()->validate( [ 'FooBar' => 1 ] )->isOk();
= false

> $provider->getValidator()->validate( [ 'FooBar' => 1 ] )->getErrors();
= [
    [
      "type" => "error",
      "message" => "communityconfiguration-schema-validation-error",
      "params" => [
        "/FooBar",
        "The data (integer) must match the type: string",
        Opis\JsonSchema\Errors\ValidationError {#6802},
      ],
    ],
  ]

>

Resources

Follow Lee on X/Twitter - Father, Husband, Serial builder creating AI, crypto, games & web tools. We are friends :) AI Will Come To Life!

Check out: eBank.nz (Art Generator) | Netwrck.com (AI Tools) | Text-Generator.io (AI API) | BitBank.nz (Crypto AI) | ReadingTime (Kids Reading) | RewordGame | BigMultiplayerChess | WebFiddle | How.nz | Helix AI Assistant