Руководство:MigrateUserGroup.php
Файл MediaWiki: migrateUserGroup.php | |
---|---|
Расположение: | maintenance/ |
Исходный код: | master • 1.42.3 • 1.41.4 • 1.39.10 |
Классы: | MigrateUserGroup |
Подробности
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`;
Это покажет вам список всех существующих значений в этом столбце. При этом каждая группа, в которой есть хотя бы один участник, будет перечислена только один раз, независимо от того, сколько участников в ней состоит на самом деле.