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

This page is a translated version of the page Manual:DeleteBatch.php and the translation is 75% complete.
Outdated translations are marked like this.
Версия MediaWiki:
1.7

deleteBatch.phpскрипт обслуживания, расположенный в директории maintenance, который может быть использован для удаления множества страниц.

Внимание Внимание: Обо всех удалённых с помощью этого скрипта страницах, будет направлено уведомление на почту участникам, имевшим эти страницы в своём списке наблюдения.

Options/Arguments

Параметр Описание Required? Default
listfile Файл, в котором каждая строка содежит название страницы для удаления. Required
--u Имя участника, показываемое в записях журнала. Если оставлено пустым, удаления записываются на участника, называемого Delete page script. Optional Delete page script
--r Причина для удаления. Если пустая, причина не отображается в журналах. Optional
--i Количество секунд задержки после каждого удаления. Optional 0

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

php maintenance/deleteBatch.php somepages.txt [ --u| --r| --i ]

(Это удалит страницы содержащиеся в текстовом файле "somepages.txt")


Terminal
$ php maintenance/deleteBatch.php deleteBatch.txt

Page1 Deleted!
Page2 Deleted!
Page3 Deleted!

На вики фермы с связанные папки, изменить к папке, содержащей LocalSettings.php и использование:

php ./maintenance/deleteBatch.php  --conf ./LocalSettings.php --r "reason for deletion" ./deleteBatch.txt

Советы и тонкости

Если заголовки страниц содержат специальные символы (например, ä, ö, ü и т.д.), обязательно сохраните файл в кодировке UTF-8. В противном случае скрипт может не найти соответствующие названия страниц в базе данных!

Вы можете создать список страниц с помощью SQL следующим образом:

mysql -e "select page_title from page where page_touched between 20150431000000 and  20150519000000 and page_namespace = 0 into outfile '/tmp/pagelist.csv'"

Это позволит создать список, в котором будут затронуты все заголовки страниц в период между 2015-04-31 и 2015-05-19. Это может быть полезно, если ваша Вики подверглась атаке спам-ботов, а в это время совершались и другие правки.

Другие пространства имён

Вышеуказанная команда охватывает только основное пространство имён. База данных mysql может не знать префиксные имена других пространств имён, поэтому их нужно указывать одно за другим. К примеру, вот так можно удалить все страницы в пространстве имён «Участник», с категорией deleteme и без какого-либо другого текста:

mysql -e "select concat('User:',p.page_title) from page p INNER JOIN revision r ON p.page_latest = r.rev_id INNER JOIN text t ON r.rev_text_id = t.old_id where t.old_text = '{{deleteme}}' and p.page_namespace = 2 into outfile '/tmp/deleteme-user.csv'"

См. также