Manual:$wgConf
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. |
Andere instellingen: Alfabetisch | Per functie |
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 vanSiteConfiguration::get()
en dergelijke)lang
: site's langtags
: 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:
- Databasenaam
- Tags (in de volgorde van de extractiemethode, die op dit punt heel goed willekeurig zou kunnen worden)
- Wiki achtervoegsel
- 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 pages (this part
# will not be merged with 'default' since there are 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.
$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 the usage of https, 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
$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:
- CommonSettings.php (Wikimedia's versie van
LocalSettings.php
) - InitialiseSettings.php (voor
$wgConf->settings
)
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.