Manuel:migrateUserGroup.php

This page is a translated version of the page Manual:MigrateUserGroup.php and the translation is 100% complete.

Détails

Le fichier 'migrateUserGroup.phpest un script de maintenance pour déplacer tous les utilisateurs appartenant à un groupe vers un autre. Ce script est par exemple utile si vous avez renommé un groupe d'utilisateurs dans LocalSettings.php et vous voulez que les utilisateurs de ce groupe restent dedans après le renommement. Un autre usage est quand vous voulez sortir tous les membres d'un groupe.

Si un membre de lancien groupe est aussi déjà un membre du nouveau groupe, ce script d'occupera juste de les enlever de l'ancien groupe.

Ne fonctionne qu'avec les groupes d'utilisateurs explicites, c'est-à-dire ceux qui sont stockés dans la base de donnée dans la tableau user_groups . Ne fonctionne pas avec les groupes implicites comme "*"ou "utilisateur", qui ne sont pas stockés dans le tableau. Ceci signifie que ce script ne peut (actuellement) pas, par ex., ajouter tous les utilisateurs du groupe "utilisateur" à un autre groupe.

Utilisation

Option/paramètre Description
--oldgroup Clé de l'ancien groupe d'utilisateurs. Ceci est le nom de l'ancien groupe comme utilisé dans $wgGroupPermissions.
--newgroup Clé du nouveau groupe d'utilisateurs. Le nom du nouveau groupe.

Exemple

Imaginons que vous aviez un groupe appelé "ninja" avec des permissions définies. $wgGroupPermissions['ninja']['block'] = true;. Maintenant, vous voulez déplacer tous les utilisateurs de ce groupe au groupe appelé "peaceful-ninja":

$  php ./maintenance/migrateUserGroup.php 'ninja' 'peaceful-ninja'

Doing users 1 to 200

Done! 2 users in group 'ninja' are now in 'peaceful-ninja' instead.

Obtenir les clés 'perdues'

Si vous n'avez pas les noms des anciens groupes qui empêchent les utilisateurs de rejoindre un groupe renommé, vous pouvez voir tous les groupes assignés dans le tableau user_groups dans votre base de données. La colonne ug_group contiendra les clés des groupes.

Un peu plus avancé serait d'utiliser DISTINCT dans la requête SQL comme ceci:

SELECT DISTINCT `ug_group` FROM `user_groups`;

Cela vous montrera une liste de toutes les valeurs différentes dans cette colonne, c'est à dire que chaque groupe n'apparaît qu'une seule fois, peu importe le nombre de ses membres.

Voir aussi