Il y a quelques années, j'ai configuré un site avec Drupal 6.9, puis je l'ai oublié. J'ai 160 pages d'utilisateurs qui sont tous des spammeurs et je dois supprimer tout sauf 3. Faire celui-ci la page à la fois est douloureusement lente à cause des appels MySQL (je suppose) .J'ai aussi environ 2500 messages sur le forum à supprimer.
J'ai un peu peur de supprimer directement les enregistrements de la base de données.
J'ai vu un module appelé "mass delete", mais il est pour Drupal version 5 et non disponible pour la version 6.
Vous pouvez utiliser Views Bulk Operations , un module qui permet d'exécuter des opérations en bloc sur les nœuds, les utilisateurs, les commentaires; il permet également d'appliquer l'opération sélectionnée à tous les nœuds, utilisateurs ou commentaires à l'aide de Batch API . L'API par lots permet d'étaler le traitement des formulaires sur plusieurs demandes de page, garantissant ainsi que le traitement ne soit pas interrompu en raison d'un délai d'attente PHP, tout en permettant à l'utilisateur de recevoir des commentaires sur la progression de les opérations en cours.
Cette façon de tuer les nœuds est très lente, mais plus sûre
function MYMODULE_menu(){
$items['admin/mymodule/killnodes/%'] = array(
'title' => 'Kill nodes',
'page callback' => 'kill_nodes',
'page arguments' => array(3),
'type' => MENU_CALLBACK,
'access arguments' => array('administer site configuration'),
);
return $items;
}
function kill_nodes($type){
$query = "SELECT node.nid AS nid FROM {node} node WHERE node.type IN ('%s')";
$result = db_query($query, $type);
$count = 0;
while($row = db_fetch_object($result)){
node_delete($row->nid);
$count++;
}
$message = t('!count nodes has been killed. Pif-Paf!', array('!count' => $count));
drupal_set_message($message);
return t("That's all folks");
}
Pour les utilisateurs, pouvez-vous déterminer par programme l'utilisateur que vous souhaitez supprimer? Si possible, vous pouvez utiliser la fonction précédente comme exemple pour supprimer les utilisateurs indésirables.
Au lieu de créer un module personnalisé pour cette tâche, vous pouvez utiliser un script simple et l'exécuter avec Drush . Étant donné que vous devez traiter un grand nombre d'utilisateurs et de nœuds, l'utilisation de l'API Batch est recommandée (et elle peut être utilisée avec Drush ).
Si, comme moi, vous préférez une approche Python (rare ici probablement, mais quand même), c'est un moyen transparent et efficace de résoudre ce problème:
import os
# Build up a variable containing the usernames
# This list was built using drush sql-cli, then
# SELECT name FROM users
# where $your-where-condition
# order by uid asc
# INTO
# OUTFILE '/tmp/users.csv'
# FIELDS TERMINATED BY ','
# ENCLOSED BY '"'
# lines terminated by ', ' ;
users = [result from SQL goes here]
for user in users:
print("Deleting spam user: %s..." % user),
os.system('drush --yes -r $your-path-to-drupal -l $your-site-url user-cancel --delete-content %s > /dev/null' % user)
print 'Done'
Les étapes sont essentiellement:
drush sql-cli -r $your-path-to-drupal -l $your-site-url
python delete-users.py
Je suis sûr qu'il existe une meilleure façon de le faire, mais c'est ma solution piratée qui fonctionne bien.
Utilisez le module tilisateur avancé . Ce module ajoute un onglet "avancé" à la page de gestion des utilisateurs. Dans cet onglet, vous pouvez filtrer les utilisateurs par n'importe quel attribut (rôle, statut, etc.) et tout sélectionner. Si vous sélectionnez la méthode de suppression des utilisateurs comme supprimer l'utilisateur et supprimer tout le contenu, vous pouvez également supprimer tout le contenu créé par eux.
J'ai implémenté un module personnalisé pour supprimer tous les utilisateurs indrupal 7. Dans la zone admin/people il y a un nouveau formulaire pour terminer cette opération.
Trop de drush.
Est un projet sandbox. Thk.
Essayez ces 2 modules pour D6:
User Prune https://drupal.org/project/user_Prune et User Delete https://drupal.org/project/user_delete
User Prune vous permet de supprimer en masse les utilisateurs inactifs en fonction des critères que vous spécifiez.
La suppression d'utilisateur vous permet de supprimer un utilisateur et de supprimer tout le contenu soumis, y compris les nœuds et les commentaires
Le module Supprimer tout pourrait être utile.
Une fois installé, vous pouvez par exemple:
drush delete-all articles
ou
drush delete-all users
Version Drupal 6 en dev mais d'après les notes:
Tout devrait fonctionner, sauf pour la suppression rapide.