Příručka:$wgConf
Globální objekty: $wgConf | |
---|---|
Vytvoří objekt konfigurace webu. Ve výchozí instalaci se příliš nepoužívá. |
|
Zavedeno od verze: | 1.5.0 (r9670) |
Odstraněno od verze: | stále se používá |
Povolené hodnoty: | Blíže neurčeno |
Výchozí hodnota: | nový SiteConfiguration objekt. |
Další nastavení: Podle abecedy | Podle funkce |
Podrobnosti
Vytvoří objekt konfigurace webu. Ve výchozí instalaci se příliš nepoužívá.
Toto se používá při hromadné instalaci Wikimedie k poskytnutí centralizovaného konfiguračního souboru pro několik stovek wiki, poskytujících výchozí hodnoty pro skupinu stránek a přepisy pro wiki.
Může to být ale trochu matoucí. :) Aktuálně je potřeba Rozšíření:CentralAuth k načtení informací o jednotlivých stránkách, např. odkazování na správné uživatelské stránky na každé wiki.
Konfigurace
Wiki jsou seskupeny podle přípony na názvech jejich databází. Na velké instalaci může být např. 'enwiki' a 'enwiktionary' a 'enwikibooks', každá v jiné skupině přípon. Chcete-li použít $wgConf->siteFromDB()
, musí být přípony deklarovány v členské proměnné suffixes
$wgConf.
$wgConf->settings
je pole nastavení. Jeho formát je $wgConf->settings['wgSettingName']['wiki']
.
Nastavení lze přiřadit (od specifičtějšího po méně konkrétní, toto je část 'wiki'
$wgConf->settings
, jak je uvedeno výše):
- konkrétní název DB.
- značka wiki (od 1.12.0)
- přípona (např. 'wiki' nebo 'wikislovník'), která ovlivní všechny v této skupině přípon (lze určit pomocí
$wgConf->siteFromDB()
) - 'výchozí' ovlivní všechny wikiny
Pro nastavení řetězce můžete definovat parametry, které budou nahrazeny při extrahování nastavení.
Může být užitečné, když má nastavení stejný formát pro všechny wikiny.
Formát je $Jméno
.
Dejte pozor, abyste používali jednoduché uvozovky ('
) nebo kód $
(\$
), jinak bude nahrazen proměnnou PHP (tj. nelze v té době definovat).
1.13 a starší
Verze MediaWiki: | ≤ 1.13 |
Při extrahování globálních nastavení bude objekt hledat nejprve konkrétnější úroveň (první v seznamu výše) a pokud nastavení nenajde, bude hledat v méně konkrétních úrovních.
Když to najde, pokud nebude hledat méně konkrétní.
To znamená, že musíte věnovat pozornost některým specifickým nastavením, jako je $wgGroupPermissions
, protože neslučuje nastavení s méně specifickými úrovněmi, ani výchozí hodnotu (ta v DefaultSettings.php), kterou budete muset vytvořit sami.
Chcete-li extrahovat nastavení v globálních proměnných, můžete použít $wgConf->extractAllGlobals( $wiki, $suffix, $params, $wikiTags );
.
Parametry jsou:
$wiki
- Název databáze Wiki (obecně$wgDBname
). Musíte si jej definovat sami.$suffix
- Přípona Wiki, používaná k získání úrovně přípony.$params
- Pole parametrů mapujících jeho název na jeho hodnotu.$wikiTags
- (zavedeno od 1.12.0) Pole wiki tagů.
1.14 a novější
Verze MediaWiki: | ≥ 1.14 |
Ve verzi 1.14.0 byly přidány některé nové funkce. Část 1.13 a starší však může být stále používána.
Funkce zpětného volání (Callback)
Od 1.14 byl zaveden callback, aby bylo možné upravit parametry předané SiteConfiguration::get()
a související funkci.
Může být použit ke změně parametrů, když jsou takové funkce volány přes LocalSettings.php
(to je případ CentralAuth).
Můžete to definovat v $wgConf->siteParamsCallback
.
Funkce zpětného volání obdrží objekt SiteConfiguration v prvním argumentu a název wiki ve druhém.
Musí vrátit pole s následujícími klíči (vše volitelné):
suffix
: přípona webu (odpovídá $suffix paramaterSiteConfiguration::get()
a podobně)jazyk
: jazyk webutags
: pole wiki tagů (odpovídající parametru $wikiTags)params
: pole parametrů, které mají být nahrazeny (odpovídající parametru $params)
Budou sloučeny s parametry předanými do SiteConfiguration::get()
a podobnými funkcemi. Pokud jsou vyplněny suffix
a lang
, použijí se k přepsání výchozího chování $wgConf->siteFromDB()
.
Sloučení nastavení
Pole lze nyní sloučit. To může být užitečné pro $wgGroupPermissions
. Chcete-li jej použít, musíte před klávesy přidat "+" pro nastavení, která chcete sloučit.
- Chcete-li sloučit svou upravenou verzi nastavení s tou v DefaultSettings.php, přidejte před název nastavení "+" (například
'+wgGroupPermissions'
) - Chcete-li sloučit specifičtější úroveň s méně specifickou, přidejte před úroveň "+".
Obě možnosti lze použít společně.
Sloučení probíhá v následujícím pořadí:
- Jméno databáze
- Značky (v pořadí poskytnutém metodě extrakce, která může být v tomto okamžiku velmi dobře náhodná)
- Přípona wiki
- Výchozí
Když je nalezen klíč, který nemá předponu "+", sloučení se ukončí.
Příklad s $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,
],
],
],
# ...
];
Základní syntaxe je tedy:
$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',
],
];
Příklad
Tento příklad používá 3 wiki: dewiki
, enwiki
a frwiki
. Jsou umístěny na adrese http://localhost/$wgDBname/
(tj. http://localhost/dewiki/
, http://localhost/enwiki/
a http://localhost/frwiki/
).
Předpokládá, že $wgDBname
je již definován.
$wgConf->settings
deklarován v InitialiseSettings.php , není to povinné a lze to provést v 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
pro 1.13 a starší
Verze MediaWiki: | ≤ 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, [] );
pro 1.14 a novější
Verze MediaWiki: | ≥ 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 );
Konfigurace Wikimedie
Chcete-li vidět, jak Wikimedie používá $wgConf
ke konfiguraci svých wiki, podívejte se na:
- CommonSettings.php (verze
LocalSettings.php
od Wikimedie) - InitialiseSettings.php (pro
$wgConf->settings
)
Související odkazy
- Soubor
includes/SiteConfiguration.php
(nebo si jej prohlédněte na GitHubu), který poskytuje návod, jak $wgConf funguje, což může být srozumitelnější než tato stránka.