Manual:$wgConf

This page is a translated version of the page Manual:$wgConf and the translation is 100% complete.
グローバル オブジェクト: $wgConf
サイト設定のオブジェクトを作成します。初期設定のままインストールする場合はほとんど使われません。
導入されたバージョン:1.5.0 (r9670)
除去されたバージョン:使用中
許容される値:未指定
既定値:新しいSiteConfiguration オブジェクト

詳細

サイト設定のオブジェクトを作成します。初期設定のままインストールする場合はほとんど使われません。

この設定はWikimediaの大規模インストールを行う際、数百のウィキに対する設定を集約するのに用いられるもので、サイトグループごとの初期値を設定し、ウィキごとに設定を上書きできるようにします。

今のところ、Extension:CentralAuth がサイトごとの情報 (例: 各ウィキの適切な利用者ページへのリンク) を得るのに必要です。

設定

ウィキはデータベース名に接尾辞をつけてグループ分けされています。大規模インストールでは例えば 'enwiki'、'enwiktionary'、'enwikibooks'のようになり、それぞれが異なる接尾辞グループになります。$wgConf->siteFromDB() を使う場合、接尾辞は$wgConfのsuffixesメンバー変数で宣言する必要があります。

$wgConf->settings は設定値群を格納している配列です。書式は $wgConf->settings['wgSettingName']['wiki'] です。

設定は以下の対象に対する指定となります (範囲の狭い設定から範囲の広い設定への順、これは上記 $wgConf->settings のうち'wiki'の部分になります):

  • 特定のデータベース名
  • ウィキタグ(1.12.0から)
  • $wgConf->siteFromDB() によって決まる)接尾辞グループ内すべてに影響する接尾辞('wiki' や 'wiktionary' など)
  • すべてのウィキに影響する'初期値'

文字列設定のため、設定を抽出するときに置き換えられるパラメータを定義できます。 すべてのウィキで書式を揃えておくと使いやすいでしょう。 $名前 の書式で指定します。 シングルクォート (') を使うときや $ をエスケープするとき (\$) は注意してください。さもないと (設定するときには値が決まらない) PHP 変数に置換されてしまいます。

コールバック関数

1.14 以降、コールバックが導入され、SiteConfiguration::get() やそれに関連する関数に渡すパラメーターを調整できるようになりました。 パラメーターの変更が使われるのは、そのような関数が LocalSettings.php よりも後で呼び出されるときでしょう (CentralAuth がこのケースに該当します)。 これは $wgConf->siteParamsCallback で定義できます。 コールバック関数は最初の引数でサイト設定オブジェクトを、2 つ目の引数でウィキ名を受け取ります。 そして以下のキーを持つ配列を返します (すべて省略可能):

  • suffix: サイトの接尾辞(SiteConfiguration::get() およびこれに類似する $suffix パラメータ)
  • lang: サイトの言語
  • tags: ウィキタグの配列($wikiTags パラメータに関係)
  • params: 置き換えられるパラメータの配列($params パラメータに関係)

これらはパラメータに統合され SiteConfiguration::get() およびこれに似た関数に渡されます。suffixlang に値が設定されていた場合、既定の $wgConf->siteFromDB() の挙動を上書きするのに使われます。

設定の統合

配列はこれで統合できます。これは $wgGroupPermissions の設定に役立つでしょう。これを使うには統合しようとする設定のキーの前に"+"付け加えてください。

  • DefaultSettings.phpにある設定にカスタマイズした設定を統合するには、('+wgGroupPermissions'のように)設定名の前に"+"を付け加えてください
  • より限定した階層の設定を統合するには、その対象となる階層のキー名の前に"+"を付け加えてください。

両方を併用しても構いません。

二つの選択肢は同時に使用できます。

統合は以下の順に行われます:

  1. データベース名
  2. タグ(抽出法による順序にて。これはこの点において非常によくランダム化されているでしょう)
  3. ウィキ接尾辞
  4. 既定値

"+"が前についていないキーがあったとき、統合は終了します。

$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,
        ],
    ],
],

# ...

];

基本的な書式は以下の通りです:

$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',
],
];

この例では3つのウィキ - dewiki, enwiki and frwiki - を使っています。これらはhttp://localhost/$wgDBname/にあります(つまり、http://localhost/dewiki/, http://localhost/enwiki/ and http://localhost/frwiki/)。

$wgDBname は既に定義されているものと仮定します。

この例において、$wgConf->settingsInitialiseSettings.php で宣言されていますが、これは必ずしも必要ではなく 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 );

ウィキメディアでの設定

ウィキメディアではどのように $wgConf を設定しウィキを設定しているのかについては以下を参照してください:

関連項目

  • includes/SiteConfiguration.php ファイルを見る(またはGitHubで見る)と、$wgConf がどのように機能するのかの案内があり、このページを見るよりも簡単に理解することができるでしょう。