Extension:Farmer/fr

MediaWiki extensions manual
Farmer
Release status: unmaintained
Implementation Special page
Description Gère un ensemble Mediawiki aussi bien qu'il modifie la configuration grâce à une interface Web.
Author(s) Gregory Szorc
Latest version 0.1.0 (2014-10-25)
MediaWiki > 1.17+
Database changes Yes
License GNU General Public License 2.0 or later
Download
Changelog
Quarterly downloads 8 (Ranked 166th)
Translate the Farmer extension if it is available at translatewiki.net

À proposEdit

Farmer est un outil qui vous permet d'administrer un ensemble de projets Mediawiki aussi bien qu'il modifie la configuration grâce à une interface Web.

ChangelogEdit

0.0.2
Gère l'apparence par défaut ainsi que les extensions grâce à l'interface Web. L'administrateur Farmer pour sélectionner les extensions disponibles pour l'ensemble des sites. Chaque wiki peut sélectionner les extensions qu'il veut activer.
0.0.1
Version initiale. Possiblité de créer un nouveau wiki grâce à une interface Web. Peut aussi modifier les habilitations wiki par cette même interface.

Installer FarmerEdit

Travaux préparatoires sur votre Wiki pour l'installationEdit

Préfixe de la TableEdit

Farmer impose que toutes les tables Mediawiki aient un préfixe, le wiki par défaut inclus. En l'absence de tel préfixe, chacune d'entre elles devra être renommée. Pour cela utiliser la requête SQL suivante :

RENAME TABLE `nom_ancienne_table` TO `nom_nouvelle_table`;

En se basant sur la version 1.12alpha de Mediawiki, il est conseillé de déparer le préfix par _-_ afin d'éviter des problème de reconnaissance de la table. Si vous désirez ajouter le préfix admin, je conseille donc d'opérer de la façon suivante :

RENAME TABLE `archive` TO `admin_-_archive`;

Répertoire accessible en écriture pour les fichiers de configuration des WikisEdit

Farmer écrit les configurations pour chaque wiki sur le disque. Le fichier permet l'accès au wiki grâces aux données écrite dans ces fichiers. Ceci signifie que le répertoire extensions/Farmer soit accessible en écriture. Ceci implique, notamment sous UNIX, ou LINUX, de lancer la commande chmod a+w extensions/Farmer -R.

Nettoyer LocalSettings.phpEdit

La configurration de LocalSettings.php doit être limitée au minimum. En effet, Farmer examine l'environnement globale de wiki par défaut, et ajuste les variables.

Ainsi, Farmer réduit LocalSettings.php au simple rôle de configuration globale de votre ensemble MediaWiki. Le code de ce fichier s'appliquera sur l'ensemble des wiki dépendant du site qui administrera tout l'ensemble. Vous pouvez continuer d'ajouter les extensions et les variables globales. En revanche, chaque variable propre à un sous projet ne devrait y figurer.

La liste des variables suivant ne devraient pas être définie dans votre LocalSettings.php.

En réalité, si quelques variables y sont définies, elles seront écrasées par Farmer. Cependant, une bonne pratique de la programmation est de ne pas définir des variables pour les sous-wikis dans ce fichier.

Choisir une stratégie d'hébergementEdit

La stratégie d'hébergement consiste à savoir comment les wikis seront accessibles par une URL. En voici quelques exemples.

Wildcard DNSEdit

La passerelle DNS se réfère à l'utilisation d'un hôte virtuel et d'une entrée DNS pour établir tous les sous-domaines d'un hôte vers un wiki unique.

Par exemple si votre wiki se trouve à http://farm.mondomaine, les wikis seraient disponibles sur http://wiki1.farm.mondomaine, http://wiki2.farm.mondomaine, etc.

Le préfixe de l'URLEdit

Le préfixe de l'URL se réfère à l'identification d'un wiki par une composante du lien. Si vous avez un site http://farm.mondomaine, les wikis seraient accessible par http://farm.mondomaine/wiki1/, http://farm.mondomaine/wiki2/

Si vous n'avez pas la possibilité de créer une entrée DNS, vous serez donc obligé d'utiliser cette méthode.

Autres possibilitésEdit

Parce que Farmer vous permet de définir votre propre fonction pour planifier une requête vers un wiki, il est possible de créer une telle planification qui ferait ce que vous voudriez. Ainsi, vous pourriez planifier différents niveaux de domaines pour les wikis qui seraient tous créés par une seule installation de Mediawiki. Vous pouvez même planifier vers un wiki différent sur votre navigateur, etc. Tout dépend de vous.

PatchesEdit

Farmer exisge que soient appliqués quelques patches pour qu'il fonctionne convenablement. Ils concernes quelques fichiers du répertoire includes/ de mediawiki.

Compte tenu des récentes modifications de mediawiki depuis la création de l'extensions, les patches ont été modifiés depuis.

Tables partagéesEdit

À l'origine, le rapport #2396 contenait un patch pour les tables partagées pour l'ensembles des wiki. Ce patche avait été publié sur my patch lequel est devenu obsolète.

Il est donc conseillé d'utiliser le patch suivant :

Index: Setup.php
===================================================================
--- Setup.php	(revision 28861)
+++ Setup.php	(working copy)
@@ -165,6 +165,13 @@
 
 $wgUseEnotif = $wgEnotifUserTalk || $wgEnotifWatchlist;
 
+#support old $wgSharedDB variable
+if ( $wgSharedDB && !array_key_exists( 'user', $wgSharedTables ) ) {
+	//in some later version, we may wish to throw an exception so people know $wgSharedDB is deprecated
+    $wgSharedTables['user'] = $wgSharedDB . '.' . $wgDBprefix . 'user';
+}
+
+
 if($wgMetaNamespace === FALSE) {
 	$wgMetaNamespace = str_replace( ' ', '_', $wgSitename );
 }
Index: DefaultSettings.php
===================================================================
--- DefaultSettings.php	(revision 28849)
+++ DefaultSettings.php	(working copy)
@@ -567,7 +567,8 @@
  * main database.
  * EXPERIMENTAL
  */
-$wgSharedDB = null;
+#$wgSharedDB = null;
+$wgSharedTables = array(); /*Patch for Farmer extension*/
 
 # Database load balancer
 # This is a two-dimensional array, an array of server info structures
Index: Database.php
===================================================================
--- Database.php	(revision 28849)
+++ Database.php	(working copy)
@@ -1611,22 +1611,29 @@
 	 * @param string $name database table name
 	 */
 	function tableName( $name ) {
-		global $wgSharedDB;
-		# Skip quoted literals
-		if ( $name{0} != '`' ) {
-			if ( $this->mTablePrefix !== '' &&  strpos( $name, '.' ) === false ) {
-				$name = "{$this->mTablePrefix}$name";
-			}
-			if ( isset( $wgSharedDB ) && "{$this->mTablePrefix}user" == $name ) {
-				$name = "`$wgSharedDB`.`$name`";
-			} else {
-				# Standard quoting
-				$name = "`$name`";
-			}
-		}
-		return $name;
+
+		global $wgSharedTables;
+        
+        # Skip quotes literals
+        if ( $name{0} != '`' ) {
+            #if we have a map for this table
+            if ( array_key_exists($name, $wgSharedTables ) ) {
+        		$name = '`' . $wgSharedTables[$name] . '`';
+        	} else {
+        		if (strpos( '.', $name ) === false ) {
+        			$name = $this->mTablePrefix . $name;
+        		}
+                
+                $name = "`$name`";
+        	}
+        	
+        }
+        
+        return $name;
 	}
 
+
+
 	/**
 	 * Fetch a number of table names into an array
 	 * This is handy when you need to construct SQL for joins

Une fois votre patch installé, indiquer les paramètres suivants dans LocalSettings.php :

$wgSharedTables = array(
    'user'          => $sharedPrefix . 'user',
    'user_groups'   => $sharedPrefix . 'user_groups',
    'interwiki'     => $sharedPrefix . 'interwiki',
    'math'          => $sharedPrefix . 'math',
);

Il serait encore mieux d'y écrire directement le nom complet de la table partagée. Plusieurs problèmes ont été relevés avec cette configuration. Si vous avez le préfix admin, à titre d'exemple, j'écrirai directement :

$wgSharedTables = array(
    'user'          => 'admin_-_user',
    'user_groups'   => 'admin_-_user_groups',
    'interwiki'     => 'admin_-_interwiki',
    'math'          => 'admin_-_math',
);

Ceci partagera les tables 'user', 'user_groups', 'interwiki', and 'math' sur l'ensemble des wikis de Farmer.

Il est possible que Farmer puisse supporter, un jour, des bases de données non partagées `user` et `user_group`. Il semble qu'il serait plus logique pour eux qu'ils demeurent partagés car ce serait désavantageux d'administrer plusieurs comptes sur le même site.

mysql_errno() fixEdit

Si vous tournez avec MediaWiki trunk, passez à l'étape suivante. En revanche, pour les versions 1.7.1 et précédentes, vous devrez modifier dans Database.php, les fonctions fetchObject, fetchRow, et numRows qui appellent mysql_errno() directement.

Vous devez changer ceci pour la lecture :

if ( $this->lastErrno() ) {

Obtenir le code sourceEdit

Le code source est disponible sur le site officiel Subversion sous extensions/Farmer

Copier les sources vers le répertoirs extensions/Edit

Copiez le code source ainsi téléchargé vers extensions/Farmer.

Installation dans LocalSettings.phpEdit

À la fin du fichier LocalSettings.php, ajoutez :

require_once('farmer/Farmer.php');
#entre ces deux lignes, nous entrerons plus tard la configuration du tableau de la variable $wfFarmerSettings
$wgFarmer = new MediaWikiFarmer($wgFarmerSettings);
$wgFarmer->run();

Configurer FarmerEdit

Farmer doit être configuré avant son lancement. Tant que Farmer ne sera pas configuré, votre wiki sera bloqué.

Le fonctionnement de Farmer est affecté par les paramètres dans la variable globale wgFarmerSettings laquelle est créée quand Farmer.php est incluse.

Comme il a été dit plus haut, cette variable doit être paramétrée entre la ligne require_once("$IP/extensions/Farmer/Farmer.php") et celle comportant $wgFarmer = new MediaWikiFarmer($wgFarmerSettings);

Ceci vous donnera quelque chose comme :

require_once ("$IP/extensions/Farmer/Farmer.php");

/*nous utilisons la fonction interne _matchByURLHostname pour chercher le nom du wiki */
$wgFarmerSettings['wikiIdentifierFunction'] = array('MediaWikiFarmer', '_matchByServerName');
$wgFarmerSettings['dbAdminUser'] = 'Zagnut';
$wgFarmerSettings['dbAdminPassword'] = 'Beetlejuice';
$wgFarmerSettings['dbTablePrefixSeparator'] = '_-_';
$wgFarmerSettings['newDbSourceFile'] = realpath(dirname(__FILE__)) . '/extensions/Farmer/daughterwiki.sql';
$wgFarmerSettings['configDirectory'] = "$IP/extensions/Farmer/configs/";
$wgFarmerSettings['defaultWiki']= 'admin';

$wgFarmer = new MediaWikiFarmer($wgFarmerSettings);

$wgFarmer->run();

Variables et définitions de $wgFarmerSettingsEdit

Ce qui suit sont les paramètres disponibles qui peuvent modifier le comportement de Farmer.

defaultWiki
Le nom du Wiki par défaut lequel correspond au préfixe de la table MySql du Wiki qui servira de site d'administration générale. Ce sera le seul site qui pourra créer d'autres sous-wikis. Ce wiki maître contient aussi des messages dans l'espace Mediawiki qui sont utilisés pour les autres projets. Quand un wiki ne peut être idenfifié par wikiIdentifierFunction (voir infra, le wiki accédé sera la valeur de cette variable. Cette-ci devra être rédigée en caractères minuscules. Cette variable doit être paramétrée.
configDirectory
Le répertoire où Farmer placera et lira les fichiers de configuration de chaque wiki. Ce répertoire doit être impérativement accessible en écriture par le serveur web. Il sera indiqué par défaut par le sous-répertoire configs où réside l'extension Farmer. Pour des raisons de sécurité, celui-ci ne devrait pas être accessible depuis Internet. C'est une bonne option pour que ce répertoire soit mis en dehors du répertoire racine de votre document.
wikiIdentifierFunction
Quand Farmer tourne, il appelle une fonction qui essaiera de trouver, en dehors du wiki accédé, à partir des variables d'environnement. Ce paramètre définit quelle fonction est appelée pour faire ceci. La valeur de cette option est en réalité le premier paramètre pour la fonction call_user_func de PHP. La classe MediaWikiFarmer à plusieurs méthodes de construction que vous pouvez utiliser : _matchByServerName, _matchByURLRegExp. Si vous avez besoin d'un comportement plus compliqué que les fonctions fournies pour déterminer le nom du wiki qui a été accédé, vous avez la possiblité d'écrire votre propre fonction pour effectuer la configuration et établir ce paramètre qui sera le nom de cette fonction. La valeur par défaut est array('MediaWikiFarmer', '_matchByURLHostname')
matchServerNameSuffix
En utilisant _matchByServerName comme wikiIdentifierFunction, ce paramètre établira le suffixe de chaque nom d'hôte qui représente un wiki. À titre d'exemple, si vous être en train d'utiliser un DNS pour identifier chaque wiki (wiki1.mondomaine.com, wiki2.mondomaine, etc), alors le suffixe sera mondomaine.com. Dans d'autre mots, _matchByServerName retournera chaque caractère jusqu'à la séquence précédant matchServerNameSuffix.
onUnknownWiki
Fonction à appeler quand un wiki inconnu a été accédé. La valeur de cette option est le premier paramètre de la fonction PHP call_user_func. La fonction identifiée par cette variable est appelée quand wikiIdentifierFunction a identifié un wiki depuis l'environnement. Mais Farmer ne peut vérifier si ce wiki existe bel et bien. La valeur par défaut est array('MediaWikiFarmer', '_redirectTo'). Quand cette fonction est appelée, le premier paramètre sera le nom du wiki, tel qu'il est identifié par wikiIdentifierFunction.
redirectToURL
Quand un onUnknownWiki est paramétré dans array('MediaWikiFarmer', '_redirectTo'), cette option établisse l'adresse qui sera envoyée dans l'en-tête de la Location. $1 dans cette adresse sera positionnée avec le nom du wiki, telle qu'elle a été passé dans la fonction établie par onUnknownWiki. C'est une bonne idée pour cette adresse de pointer vers la page Special:Farmer de votre wiki principl ou bien de donner des instructions pour comment créer un wiki dans le cas d'utilisateur qui ne disposent pas des droits requis pour créer des wikis.
dbAdminUser
Nom de l'utilisateur ayant accès à la base de données pour créer des tables dans $wgDBname.
dbAdminPassword
Mot de passe pour dbAdminUser.
newDbSourceFile
Source du fichier SQL qui sera utilisé pour créer les tables de la base de donnée du wiki. Ce fichier doit être impérativement formaté comme maintenance/tables.sql. La variable par défaut pointe vers daughterwiki.sql lequel est distribué avec l'extension farmer mais qui est maintenant désuet. Il sera donc judicieux de recréer ce fichier en vous basant sur /maintenance/mysql5/tables.sql dont vous aurez bien soin d'enlever les tables `user`, `user_group`, `math` ou `interwiki`. Si vous avez installé des extensions requérant leurs propres tables, il conviendra de les ajouter dans votre fichier.
dbTablePrefix
Préfixe pour toutes les table de votre base de donnée. Ceci n'est donc pas nécessaire en principe. Il est utilisé si vous n'avez la permission de créer des tables avec un préfixe spécifique.
dbTablePrefixSeparator
Chaîne de caractères à insérer entre le nom de votre wiki et le nom de la table Mediawiki. Ceci permet une lecture plus facile pour toutes manipulations ultérieurs. Si rien n'est indiqué, la table ne comportera que le nom du wiki plus le nom de la table.
defaultMessagesFunction
Fonction à appeler qui retourne un tableau de messages à insérer dans l'espace MediaWiki des wikis nouvellement créés. La valeur de ce paramètre est le premier argument vers la fonction call_user_func. Le tableau retourné devrait disposer du nom du message comme clef et le message proprement dit comme valeur de cette clef. S'il n'est pas défini, il utilisera $wgAllMessagesEn pour remplir les messages des espaces de nommage.
perWikiStorageRoot
répertoire supérieur où chaque document par wiki (images, téléchargements, etc) seront stockés. Ce répertoire trouve son chemin indiqué dans la variable globale $wgUploadDirectory. Ce répertoire doit être accessible en écriture sur votre serveur web.
defaultSkin
L'apparence à utiliser pour les nouveaux wikis ainsi créé. Il prend la même valeur que $wgDefaultSkin dont la valeur par défaut est monobook.

Lancer Farmer pour la première foisEdit

Après l'installation de Farmer dans LocalSettings.php, celui-ci sera utilisable. La première requête à effectuer consister à procéder à plusieurs choses. Si vous accédez à votre Wiki principal, Farmer créera automatiquement son propre fichier de ocnfiguration et les autres fichiers nécessaires pour qu'il puisse tourner. Si le répertoire configDirectory n'est pas accessible en écriture, Farmer lancera un message critique et votre wiki ne sera pas utilisable. En l'absence de tout message d'erreur tandis que vous pouvez accéder à votre wiki, tout laissera à penser que tout a été convenablement configuré.

Personnaliser les Messages de FarmerEdit

Avant de faire quoi que ce soit avec Farmer, vous aurez peut-être besoin de personnaliser les messages systèmes par défaut. Toutefois, une version multilangue est en cours de développement et devrait normalement voir le jour prochainement. Dans l'espace Mediawiki, tous les messages ont pour préfixe farmer. Cette espace Mediawiki devrait dont être protégé en écriture pour éviter tout vandalisme, comme cela est le cas dans toutes les interfaces Mediawiki par défaut.

Toutefois, deux messages systèmes doivent être personnalisés : farmerinterwikiurl et farmerwikiurl

farmerwikiurlEdit

farmerwikiurl est le modèle pour le liens pointant vers un wiki de votre ensembles de projet. $1 represente no nom du wiki. Cette adresse doit être paramètrée en fonction de la configuration de votre projet principal.

farmerinterwikiurlEdit

farmerinterwikiurl est le modèle pour l'adresse utilisée dans les liens interwikis. $1 indique le nom du wiki. $2 indique le titre de l'article. Il existe des chances pour que cette variable ressemble à farmerwikiurl.

Options de configuration pour le Wiki principalEdit

Depuis que le fichier de configuration par défaut du wiki a été créé automatiquement quand Farmer a été lancé pour la première fois, plusieurs paramètres doivent être renseignés. Vous devrez donc aller sur Special:Farmer de votre site pour les préciser. De vilaines choses risquent de vous arriver si vous négligez ce détail. Vous devrez vous y connecter avec un nom d'utilisateur disposant des privilèges farmeradmin lesquels sont attribués d'office aux administrateur. Dans la page de cette fonction, vous verrez un lien vers Administrer ce Wiki. Cliquez dessus.

Configuration du titreEdit

Dans Special:Farmer/admin, votre wiki doit disposer impérativement d'un titre. Ce titre est créé une fois pour toutes. Aussi, assurez-vous qu'il soit correct. Le titre en question est en réalité un alias de $wgSitename.Il est donc aussi le nom de l'espace de noms du projet.

DescriptionEdit

Description consiste en un texte décrivant le wiki. Il peut être modifié à tout moment. Il est utilisé dans le répertoire de Farm.

PermissionsEdit

Il établit les permissions de votre wiki principal. Toutes les habilitations dont désactivées par défaut. Vous devrez probablement les activer pour les personnes pour lesquels vous désirez leur donner accès. Set the permissions for your default wiki. All permissions default to closed. You will probably want to open up your wiki so people can actually edit it.

Utilisation de FarmerEdit

Une des interfaces avec Farmer depuis Special:Farmer. Depuis là, on peut lancer plusieurs tâches.

 
Page principale de l'extension Farmer


Créer un wikiEdit

Des wikis peuvent être créés depuis le lien de la page Special:Farmer. Ce lien n'est disponible que si les conditions suivantes sont réunies :

  1. Vous êtes actuellement sur le wiki principal.
  2. L'utilisateur doit disposer des privilèges createwiki privilege (droit donné par défaut aux administrateurs)

Quand vous cliquez sur le lien vous verrer un formulaire Web disposant de trois éléments.

Nom du Wiki
Le nom de votre wiki. Il sera utilisé comme une composante du lien internet. Il sera, en outre, converti en caractères minuscules et les caractères non alphanumériques seront ôtés. Ceci inclut les accents.
Titre du Wiki
Le titre de votre wiki. Il correspond effectivement à $wgSitename. Les espaces et les accents sont supprimés pour cause de compatibilité des préfixes interwikis.
Description
La description de votre wiki apparaîtra dans le répertoire de votre ensemble.

Une fois les renseignements donnés, cliquez sur le bouton aux fins de vérifications. La page suivante vous montrera quelle seront les valeurs qui seront modifiées, le cas échéant. Ceci donnera aussi quelques informations de base sur la manière dont votre wiki travaillaira : l'adresse, les liens du projets, etc)

Pour confirmer que ces informations sont correctes, cliquez sur le bouton Confirmer.

Une fois la validation lancée, les opéarations suivantes seront effectuées :

  1. Le fichier de configuration de base de votre wiki sera créé avec les informations que vous avez fournies ;
  2. Le fichier SQLdans le fichier indiqué dans newDbSourceFile est exécuté, créant ainsi les tables requises.
  3. La page d'accueil est créée avec les données définis dans le message système farmernewwikimainpage ;
  4. Les messages systèmes sont incorporés ;
  5. La table interwiki est mise à jour avec la référence vers ce wiki ;
  6. La personne qui a créé le wiki est ajouté au groupe des noms [farmer][wikiname][admin] où wikiname est le nom du wiki.

Si tout ceci fonctionne, vous devriez voir un message vous informant que votre wiki est créé. Ce message contiendra un lien vers celui-ci.

Organiser les WikisEdit

Farmet autorise les administrateurs du projet principal ainsi que ceux des sous-wikis de contrôler la configuration des wikis individuels. Ces contrôles sont disponibles sur Special:Farmer/admin. Actuellement, ces contrôles vous autorise juste d'établir la description du wiki ainsi que de définir les permissions. Plus tard, on espère fournir d'autres interfaces pour d'autres variables.

Organiser les extensionsEdit

Farmer permets à ses administrateur de définir les extensions qui pourront être sélectionnées pour les autres wiki membres.

Définir les extensions disponiblesEdit

Les utilisateurs disposant des pouvoirs farmeadmin peut accéder à la fonctionnalité Special:Farmer/manageExtensions afin de définir quelles sont les extensions qui pourront être utilisés par les wikis de l'ensemble.

Sur cette page, vous verrez une liste d'extensions qui sont actuellement chargés, une liste des chemins includes PHP, et un formulaire définissant une nouvelle extension.

Malheureusement, Mediawiki ne dispose pas d'une bonne interface pour résumer les extensions. Aussi, vous devez donner le nom des fichiers des extensions que vous désirez chargher. Si le nom est incorrect, ne vous inquiétez pas. Farmer vérifie si le fichier existe s'il est incorporable avant d'ajouter l'extension dans sa liste. Farmer indiquera aussi s'il détecte un problème lors de l'ajout de cette extension.

Organisation des extensions dans les Sous-WikisEdit

L'administrateur d'un sous-wiki peut aller dans Special:Farmer/admin pour sélectionner les extensions disponibles à activer sur un wiki déterminé.

Voir aussiEdit