Jump to content

Manual:$wgConf

From mediawiki.org
This page is a translated version of the page Manual:$wgConf and the translation is 100% complete.
Globale objecten: $wgConf
Maak een site-configuratieobject. Wordt niet veel gebruikt in een standaardinstallatie.
Geïntroduceerd in versie:1.5.0 (r9670)
Verwijderd in versie:nog steeds in gebruik
Toegelaten waardes:Niet opgegeven
Standaardwaarde:nieuw SiteConfiguration object.

Details

Maak een site-configuratieobject. Wordt niet veel gebruikt in een standaardinstallatie.

Dit wordt gebruikt op Wikimedia's massa-installatie om een gecentraliseerd configuratiebestand te leveren voor een paar honderd wiki's, met standaardinstellingen per sitegroep en per-wiki overrides.

Op dit moment nodig door Extension:CentralAuth/nl om informatie per-site op te halen, bijvoorbeeld door te linken naar de juiste gebruikerspagina's op elke wiki.

Configuratie

Wiki's zijn gegroepeerd door het achtervoegsel op hun databasenaam; op een grote installatie kunnen er bijvoorbeeld 'enwiki' en 'enwikibooks' zijn, elk in een andere achtervoegselgroep. Achtervoegsels moeten worden gedeclareerd in de suffixen lidvariabele van $wgConf als u $wgConf->siteFromDB() wilt gebruiken.

$wgConf->settings is de reeks instellingen. Het formaat is $wgConf->settings['wgSettingName']['wiki'].

Instellingen kunnen worden toegewezen aan (van de meer specifieke naar de minder specifieke, dit is het 'wiki' deel van $wgConf->settings zoals hierboven vermeld):

  • een specifieke DB-naam.
  • een wiki-tag (sinds 1.12.0)
  • een achtervoegsel (bijvoorbeeld 'wiki' of 'wiktionary') om alles in die achtervoegselgroep te beïnvloeden (kan worden bepaald met $wgConf->siteFromDB())
  • 'default' om alle wiki's te beïnvloeden

Voor de stringinstellingen kunt u parameters definiëren die bij het uitpakken van de instellingen worden vervangen. Het kan nuttig zijn wanneer de instelling hetzelfde formaat heeft voor alle wiki's. Het formaat is $naam. Wees voorzichtig met het gebruik van enkele aanhalingstekens (') of om e $ (\$) te escapen of het zal worden vervangen door de PHP-variabele (die op dat moment niet kan worden gedefinieerd).

Callback function

Sinds 1.14 is er een callback ingevoerd om de parameters die worden doorgegeven aan SiteConfiguration::get() en de bijbehorende functie te kunnen wijzigen. Het kan worden gebruikt om parameters te wijzigen wanneer dergelijke functies worden aangeroepen na LocalSettings.php (dit is het geval met CentralAuth). U kunt het definiëren in $wgConf->siteParamsCallback. De callback functie zal het SiteConfiguration object in het eerste argument ontvangen en de wiki naam in het tweede argument. Het moet een array teruggeven met de volgende key's (allemaal optioneel):

  • suffix: site's suffix (komt overeen met $suffix paramater van SiteConfiguration::get() en dergelijke)
  • lang: site's lang
  • tags: reeks wiki-tags (overeenkomend met de parameter $wikiTags)
  • params: array van te vervangen parameters (overeenkomend met $params parameter)

Ze worden samengevoegd met de parameters die worden doorgegeven aan SiteConfiguration::get() en soortgelijke functies. Als de suffix en lang worden ingevuld, worden ze gebruikt om het standaardgedrag van $wgConf->siteFromDB() te overschrijven.

Samenvoegen van instellingen

Arrays kunnen nu worden samengevoegd. Dit kan nuttig zijn voor $wgGroupPermissions . Om ze te gebruiken, moet je bij de key's een "+" voor de instellingen plaatsen die je wilt samenvoegen.

  • Om uw aangepaste versie van de instelling samen te voegen met die in DefaultSettings.php, moet u de naam van de instelling voorvoegen met een + (zoals '+wgGroupPermissions')
  • Om een meer specifiek niveau samen te voegen met een minder specifiek niveau, moet het niveau worden voorafgegaan door een +.

De twee mogelijkheden kunnen samen worden gebruikt.

Het samenvoegen gebeurt in de volgende volgorde:

  1. Databasenaam
  2. Tags (in de volgorde van de extractiemethode, die op dit punt heel goed willekeurig zou kunnen worden)
  3. Wiki achtervoegsel
  4. Standaard

Wanneer een toets wordt aangetroffen die niet voorafgegaan is door een "+", zal de samenvoeging eindigen.

Voorbeeld met $wgGroupPermissions :

$wgConf->settings = [

# ...

#  '+' activeert een samenvoeging hiermee en de waarde van $wgGroupPermissions gedefinieerd in DefaultSettings.php
'+wgGroupPermissions' => [

    # Toestaan dat bureaucraten de status van remote wiki's kunnen veranderen en dat anonieme gebruikers pagina's kunnen aanmaken 
    # (dit deel wordt niet samengevoegd met 'default' omdat er geen "+" voor 'centralwiki')
    'centralwiki' => [
        'bureaucrat' => [
            'userrights-interwiki' => true,
        ],
    ],

    # Een wiki met een recht terugdraaien dat aan ingelogde gebruikers is gegeven, het deel 'default' wordt samengevoegd met deze waarde
    # (d.w.z. anonieme gebruikers kunnen geen pagina's aanmaken)
    '+somewiki' => [
        'user' => [
            'rollback' => true,
        ],
    ],

    # Anonieme gebruikers verbieden pagina's aan te maken.
    # Opmerking: de 'default' key mag nooit een "+" voor zich hebben
    'default' => [
        '*' => [
            'createpage' => false,
            'createtalk' => false,
        ],
    ],
],

# ...

];

De basissyntaxis is dus:

$wgConf->settings = [
'wgConfigurationSetting' => [
    'default' => 'defaultvalue',
    'wikidatabasename1' => 'waarde die de standaard voor deze wiki overschrijft',
],
# Om de instellingen die u hier heeft ingesteld te combineren met die in DefaultSettings.php:
'+wgConfigurationSetting' => [
# Opmerking: Dit en DefaultSettings.php zijn NIET hetzelfde! 
# De aangegeven standaardwaarde overschrijft die in DefaultSettings.php en wordt de nieuwe standaard voor al uw wiki's, tenzij u ervoor kiest om het te overschrijven voor een bepaalde wiki, zoals hier voor wikidatabasename1.
    'default' => 'defaultvalue',
    'wikidatabasename1' => 'waarde die de standaard voor deze wiki overschrijft',
],
];

Voorbeeld

In dit voorbeeld worden 3 wiki's gebruikt: dewiki, enwiki en frwiki. Ze staan op http://localhost/$wgDBname/ (d.w.z. http://localhost/dewiki/, http://localhost/enwiki/ en http://localhost/frwiki/).

Het gaat ervan uit dat de $wgDBname al gedefinieerd is.

In dit voorbeeld wordt $wgConf->settings gedeclareerd in InitialiseSettings.php , dit is niet vereist en kan worden gedaan in LocalSettings.php.

InitialiseSettings.php

<?php

$wgConf->settings = [

'wgServer' => [
    # Als u het gebruik van https wilt toestaan, gebruik '//localhost' en stel 'http://localhost' in op 'wgCanonicalServer'
    'default' => 'http://localhost',
],

'wgCanonicalServer' => [
    'default' => 'http://localhost',
],

'wgScriptPath' => [
    'default' => '/$wiki',
],

'wgArticlePath' => [
    'default' => '/$wiki/index.php/$1',
],

'wgSitename' => [
    'default' => 'Wikipedia',
    'frwiki' => 'Wikipédia', # met een Frans accent
],

'wgLanguageCode' => [
    'default' => '$lang',
],

'wgLocalInterwiki' => [
    'default' => '$lang',
],

];

LocalSettings.php

$wgLocalDatabases = [
    'dewiki',
    'enwiki',
    'frwiki',
];

$wgConf->wikis = $wgLocalDatabases;
$wgConf->suffixes = [ 'wiki' ];
$wgConf->localVHosts = [ 'localhost' ];

require_once "$IP/InitialiseSettings.php";

function efGetSiteParams( $conf, $wiki ) {
    $site = null;
    $lang = null;
    foreach( $conf->suffixes as $suffix ) {
        if ( substr( $wiki, -strlen( $suffix ) ) === $suffix ) {
            $site = $suffix;
            $lang = substr( $wiki, 0, -strlen( $suffix ) );
            break;
        }
    }
    return [
        'suffix' => $site,
        'lang' => $lang,
        'params' => [
            'lang' => $lang,
            'site' => $site,
            'wiki' => $wiki,
        ],
        'tags' => [],
    ];
}

$wgConf->suffixes = $wgLocalDatabases;
$wgConf->siteParamsCallback = 'efGetSiteParams';
$wgConf->extractAllGlobals( $wgDBname );

Wikimedia-configuratie

Om te zien hoe Wikimedia $wgConf gebruikt om zijn wiki's te configureren zie:

Zie ook

  • Het includes/SiteConfiguration.php bestand (of bekijk het op GitHub), heeft een gids over hoe $wgConf werkt die misschien makkelijker te begrijpen is dan deze pagina.