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.
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 $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).
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 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 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.
$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:
- 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.