Manual:$wgConf

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.

Het kan echter een beetje verwarrend zijn. :) 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 $name. 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).

1.13 en eerder

MediaWiki-versie:
1.13

Bij het uitpakken van globale instellingen zal het object eerst het meer specifieke niveau zoeken (het eerste niveau in de lijst hierboven) en als het de instelling niet vindt, zal het zoeken in minder specifieke niveaus. Als het er een vindt, zal het zoeken naar minder specifieke niveaus. Dit betekent dat u moet letten op enkele specifieke instellingen, zoals $wgGroupPermissions , omdat het de instelling niet samenvoegt met minder specifieke niveaus, noch de standaardwaarde (die in DefaultSettings.php), u zult het zelf moeten doen.

Om de instellingen in globale variabelen uit te pakken, kunt u $wgConf->extractAllGlobals( $wiki, $suffix, $params, $wikiTags ); gebruiken.

Parameters zijn:

  • $wiki - Wiki's database naam (over het algemeen $wgDBname ). Je moet het zelf definiëren.
  • $suffix - Wiki's achtervoegsel, gebruikt om het achtervoegselniveau te krijgen.
  • $params - een reeks parameters die de naam van de Wiki aan zijn waarde koppelen.
  • $wikiTags - (nieuw in 1.12.0) array van wiki-tags.

1.14 en nieuwer

MediaWiki-versie:
1.14

In 1.14.0 zijn enkele nieuwe functies toegevoegd. Het 1.13 en eerder deel kan echter nog steeds gebruikt worden.

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 = [

# ...

# '+' triggers a merge with this and the value of $wgGroupPermissions defined
#  in DefaultSettings.php
'+wgGroupPermissions' => [

    # Allow bureaucrats to change status on remote wikis
    #  and allow anonymous users to create page (this part
    #  will not be merged with 'default' since there's no
    #  "+" in front of 'centralwiki')
    'centralwiki' => [
        'bureaucrat' => [
            'userrights-interwiki' => true,
        ],
    ],

    # A wiki with rollback right given to logged-in users
    #  the 'default' part will be merged with this value
    #  (i.e. anonymous users won't be able to create pages)
    '+somewiki' => [
        'user' => [
            'rollback' => true,
        ],
    ],

    # Disallow anonymous users to create pages.
    # Note: the 'default' key should never have a "+" in front of it
    'default' => [
        '*' => [
            'createpage' => false,
            'createtalk' => false,
        ],
    ],
],

# ...

];

De basissyntaxis is dus:

$wgConf->settings = [
'wgConfigurationSetting' => [
    'default' => 'defaultvalue',
    'wikidatabasename1' => 'value that overrides default for this wiki',
],
# To merge the settings you set here with those in DefaultSettings.php:
'+wgConfigurationSetting' => [
# Note: This and DefaultSettings.php are NOT the same! The default specified here
#        overrides that in DefaultSettings.php, and becomes the new default for all
#        your wikis unless you choose to override it for a particular wiki,
#        like for wikidatabasename1 here.
    'default' => 'defaultvalue',
    'wikidatabasename1' => 'value that overrides default for this wiki',
],
];

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' => [
    # If you want to allow also usage of https, just use '//localhost'
    #  and set 'http://localhost' at 'wgCanonicalServer'
    'default' => 'http://localhost',
],

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

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

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

'wgSitename' => [
    'default' => 'Wikipedia',
    'frwiki' => 'Wikipédia', # accent in French
],

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

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

];

LocalSettings.php

1.13 en eerder

MediaWiki-versie:
1.13
$wgLocalDatabases = [
    'dewiki',
    'enwiki',
    'frwiki',
];

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

require_once "$IP/InitialiseSettings.php";

list( $site, $lang ) = $wgConf->siteFromDB( $wgDBname );
$params = [
    'site' => $site,
    'lang' => $lang,
    'wiki' => $wgDBname,
];
$wgConf->extractAllGlobals( $wgDBname, $site, $params, [] );

1.14 en nieuwer

MediaWiki-versie:
1.14
$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.