Руководство:MigrateUserGroup.php

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

Подробности

migrateUserGroup.php это скрипт технического обслуживания, предназначенный для переноса участников из старой группы в новую. Он пригодится, к примеру, если вы переименовали какую-то группу участников в LocalSettings.php, и хотите, чтобы участники, бывшие членами этой группы, остались в ней и после переименования. Также скрипт может быть полезен, если вы просто хотите убрать всех участников из некой группы.

Если член старой группы уже является и членом новой, то скрипт удалит старую группу с его учётной записи.

Скрипт обрабатывает только явные группы участников, то есть только те, которые хранятся в таблице user_groups table внутри базы данных. Он не работает с неявными группами вроде "*" или "user", которые не хранятся в таблице. Это означает, что скрипт в настоящее время не может быть использован, например, для добавления всех участников из группы "user" в некую другую группу.

Использование

Опция/Параметр Описание
--oldgroup Старое название группы, как оно было задано в $wgGroupPermissions.
--newgroup Новое название группы.

Пример

К примеру, у вас была группа под названием "ninja" с некоторыми установленными для неё правами. $wgGroupPermissions['ninja']['block'] = true;. А теперь вы хотите переместить всех участников этой группы в группу под названием "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.

Получение утраченных имён групп

Если вы не знаете названия старой группы, что мешает присоединить её участников к переименованной группе, то вы можете посмотреть его, заглянув в таблицу user_groups в базе данных вашей вики. В колонке ug_group будет указано имя группы, в которую входит участник.

В качестве более продвинутого способа можно использовать DISTINCT в SQL-запросе:

SELECT DISTINCT `ug_group` FROM `user_groups`;

Это покажет вам список всех существующих значений в этом столбце. При этом каждая группа, в которой есть хотя бы один участник, будет перечислена только один раз, независимо от того, сколько участников в ней состоит на самом деле.

См. также