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 = [
# ...
# '+' 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.
$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:
- CommonSettings.php (Wikimedia's versie van
LocalSettings.php) - InitialiseSettings.php (voor
$wgConf->settings)
Zie ook
- Het
includes/SiteConfiguration.phpbestand (of bekijk het op GitHub), heeft een gids over hoe $wgConf werkt die misschien makkelijker te begrijpen is dan deze pagina.