Jump to content

Manuel:$wgConf

From mediawiki.org
This page is a translated version of the page Manual:$wgConf and the translation is 100% complete.
Objets globaux: $wgConf
Créer un objet de configuration de site.
Introduit dans la version :1.5.0 (r9670)
Retiré dans la version :Encore utilisé
Valeurs autorisées :Non renseigné
Valeur par défaut :nouvel objet SiteConfiguration.

Détails

Vous permet créer un objet de configuration de site. Pas trop utilisé dans une installation par défaut.

Ce paramètre est utilisé dans une installation en masse de Wikimedia pour fournir un fichier de configuration centralisé pour quelques centaines de wikis, fournissant des valeurs par défaut par groupe de sites et des écrasements par wiki.

Il est aujourd'hui nécessaire pour Extension:CentralAuth pour récupérer les informations par site, par exemple pour les liens vers les bonnes pages utilisateur sur chaque wiki.

Configuration

Les wikis sont groupés par le suffixe de leurs noms de base de données; sur une grande installation, il peut par exemple y avoir 'enwiki' et 'enwiktionary' et 'enwikibooks', chacun dans un groupe de suffixe différent. Les suffixes doivent être déclarés dans la variable de membre suffixes de $wgConf si vous voulez utiliser $wgConf->siteFromDB().

$wgConf->settings est le tableau des paramètres. Son format est $wgConf->settings['wgSettingName']['wiki'].

Les paramètres peuvent être assignés (du plus spécifique au moins spécifique, c'est la partie 'wiki' de $wgConf->settings comme mentionné ci-dessus) à :

  • un nom de base de données spécifique
  • une balise wiki (depuis la 1.12.0)
  • un suffixe (par exemple 'wiki' ou 'wiktionary') pour affecter tous ceux qui sont dans ce groupe de suffixe (peut être déterminé avec $wgConf->siteFromDB())
  • 'default' pour affecter tous les wikis

Pour les variables de type chaîne, vous pouvez définir des paramètres qui seront remplacés à l'extraction des paramètres. Cela peut être utile quand le paramètre a le même format pour tous les wikis. Le format est $nom. Faites attention d'utiliser des apostrophes simples (') ou d'échapper le $ (\$) sinon il sera remplacé par la variable PHP (qui peut ne pas être définie à ce moment-là).

Fonction de rappel

Depuis la 1.14, une fonction de rappel a été introduite pour pouvoir modifier les paramètres passés à SiteConfiguration::get() et la fonction associée. Elle peut être utilisée pour modifier les paramètres lorsque de telles fonctions sont appelées après LocalSettings.php (c’est le cas avec CentralAuth). Vous pouvez la définir dans $wgConf->siteParamsCallback. La fonction de rappel recevra l’objet SiteConfiguration dans le premier argument et le nom du wiki dans le second argument. Elle doit renvoyer un tableau avec les clés suivantes (toutes optionnelles) :

  • suffix : suffixe du site (correspondant au paramètre $suffix de SiteConfiguration::get() et similaire)
  • lang : langue du site
  • tags : tableau des balises du wiki (correspondant au paramètre $wikiTags)
  • params : tableau des paramètres à remplacer (correspondant au paramètre $params)

Ils seront fusionnés avec les paramètres passés à SiteConfiguration::get() et des fonctions similaires. Si suffix et lang sont remplis, ils seront utilisés pour remplacer le comportement par défaut de $wgConf->siteFromDB().

Fusion des paramètres

Les tableaux peuvent maintenant être fusionnés. Cela peut être utile pour $wgGroupPermissions . Pour l’utiliser, vous devez préfixer les clés avec un "+" pour les paramètres que vous voulez fusionner.

  • Pour fusionner votre version personnalisée du paramètre avec celle de DefaultSettings.php, préfixez le nom du paramètre avec + (tel que '+wgGroupPermissions')
  • Pour fusionner un niveau plus spécifique avec un niveau moins spécifique, préfixez le niveau avec un +.

Les deux possibilités peuvent être utilisées ensemble.

La fusion se fait dans l’ordre suivant :

  1. nom de la base de données
  2. Balises (dans l’ordre fourni à la méthode d’extraction, qui pourrait très bien être rendues aléatoires à ce stade)
  3. Suffixe du wiki
  4. Par défaut

Lorsqu'une clé non préfixée par "+" est rencontrée, la fusion prend fin.

Exemple avec $wgGroupPermissions  :

$wgConf->settings = [

# ...

#  '+' déclenche une fusion avec ceci et la valeur de $wgGroupPermissions définie dans DefaultSettings.php
'+wgGroupPermissions' => [

    # permettre aux bureaucrates de changer l'état sur les wikis distants ainsi qu'aux utilisateurs anonymes de créer des pages 
    # (cette partie ne sera pas fusionnée avec 'default' puisqu'il n'y a pas de "+" devant 'centralwiki')
    'centralwiki' => [
        'bureaucrat' => [
            'userrights-interwiki' => true,
        ],
    ],

    # pour un wiki avec les droits ''rollback'' attribués aux utilisateurs connectés, la partie 'default' sera fusionnée avec cette valeur
    # (c'est a dire que les utilisateurs anonymes ne pourront pas créer de pages)
    '+somewiki' => [
        'user' => [
            'rollback' => true,
        ],
    ],

    # empêcher les utilisateurs anonymes de créer des pages.
    # Note: la clé 'default' ne doit jamais avoir "+" devant elle
    'default' => [
        '*' => [
            'createpage' => false,
            'createtalk' => false,
        ],
    ],
],

# ...

];

La syntaxe de base est :

$wgConf->settings = [
'wgConfigurationSetting' => [
    'default' => 'defaultvalue',
    'wikidatabasename1' => 'valeur qui remplace la valeur par défaut pour ce wiki',
],
# pour fusionner les paramètres que vous avez définis ici avec ceux de DefaultSettings.php :
'+wgConfigurationSetting' => [
# Note: ceci est différent de DefaultSettings.php ! 
# La valeur par défaut indiquée ici remplace celle de DefaultSettings.php et devient la nouvelle valeur par défaut pour tous vos wikis sauf si vous choisissez de la redéfinir pour un wiki particulier, comme wikidatabasename1 ici.
    'default' => 'defaultvalue',
    'wikidatabasename1' => 'valeur qui remplace la valeur par défaut pour ce wiki',
],
];

Exemples

Cet exemple utilise 3 wikis : dewiki, dewiki et frwiki. Ils se trouvent à http://localhost/$wgDBname/ (i.e. http://localhost/dewiki/, http://localhost/enwiki/ et http://localhost/frwiki/).

Il suppose que $wgDBname est déjà défini.

Dans cet exemple, $wgConf->settings est déclaré dans InitialiseSettings.php , ce n’est pas nécessaire et peut être fait en LocalSettings.php.

InitialiseSettings.php

<?php

$wgConf->settings = [

'wgServer' => [
    # si vous souhaitez autoriser l'utilisation de https, utiliser '//localhost' et initialiser 'http://localhost' à 'wgCanonicalServer'
    'default' => 'http://localhost',
],

'wgCanonicalServer' => [
    'default' => 'http://localhost',
],

'wgScriptPath' => [
    'default' => '/$wiki',
],

'wgArticlePath' => [
    'default' => '/$wiki/index.php/$1',
],

'wgSitename' => [
    'default' => 'Wikipedia',
    'frwiki' => 'Wikipédia', # avec un accent en français
],

'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 );

Configuration de Wikimedia

Pour voir comment Wikimedia utilise $wgConf pour configurer ses wikis, voir :

Voir aussi

  • Le fichier includes/SiteConfiguration.php (ou le voir sur GitHub), qui fournit un guide sur le fonctionnement de $wgConf qui pourrait être plus facile à comprendre que cette page.