Manuel:DeleteBatch.php

From mediawiki.org
This page is a translated version of the page Manual:DeleteBatch.php and the translation is 100% complete.
Version de MediaWiki :
1.7

Détails

deleteBatch.php est un script de maintenance situé dans le maintenance répertoire qui peut être utilisé pour supprimer plusieurs pages en même temps.

Avertissement Avertissement : Des utilisateurs suivant une ou des page(s) ainsi supprimée(s) seront notifiés par mail de cette suppression.

Options et arguments

Option/argument Description Nécessaire ? Défaut
listfile Un fichier où chaque ligne contient le titre d'une page à supprimer. obligatoire
--u Nom d'utilisateur qui sera montré dans les entrées de journal. Si laissé vide, les suppressions seront attribuées à un utilisateur appelé Script de suppression de pages. optionnel Delete page script
--r Motif des suppressions. Si vide, aucun motif n'est affiché dans les journaux. optionnel
--i Nombre de secondes à laisser passer après chaque suppression. optionnel 0

Utilisation

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

(Ceci supprimera les pages contenues dans le fichier texte "somepages.txt")

Terminal

Sur un wiki avec des dossiers reliés, passer au dossier contenant LocalSettings.php et utiliser:

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

Trucs et astuces

Si les titres des pages contiennent des caractères spéciaux (comme ä, ö, ü, etc.), veillez à enregistrer le fichier en encodage UTF-8. Sinon, le script risque de ne pas pouvoir trouver les noms de page correspondants dans la base de données !

Vous pouvez créer une liste de pages avec SQL ainsi :

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

Ceci créerait une liste avec tous les titres de page touchés entre 2015-04-31 et 2015-05-19. Ceci pourrait être utile si votre wiki s'est fait attaquer par des spambots, et d'autres modifications ont été réalisées pendant cette période.

Autres espaces de noms

La commande ci-dessus ne couvre que l'Espace de noms principal. La base de données mysql pourrait ne pas connaitre le préfixe d'autres espaces de noms, donc il faut les faire un à un.

Par exemple, pour supprimer toutes les pages dans l'espace de noms Utilisateurs, avec la catégorie deleteme et pas d'autre texte:

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'"

Voir aussi