2013-02-15 76 views
2

如何使用Drush删除所有阻止的用户?我有数百名来自垃圾邮件发送者的阻止用户。我想删除所有这些用户。我尝试过通过网络界面进行操作,但这只适用于大约20位用户。我有60页要删除,这需要太长时间,并且是不可持续的。另外,我希望所有相关的回调在被阻止的用户被删除时运行,并且我希望删除其所有内容。我注意到http://drush.ws/#user-cancel,但这似乎只适用于单个用户。有没有办法使这个命令适用于所有被阻止的用户?如何使用Drush删除所有阻止的用户?

+0

这是你的回应:)。自定义模块用于drupal 7.在admin/people区域中有一个用于完成此操作的新表单。太溺水了。 http://drupal.stackexchange.com/questions/38942/how-to-delete-blocked-users-in-bulk/85300#85300 – lgrtm 2013-09-11 07:26:03

回答

2

Drush没有一个简单的命令来删除所有被阻止的帐户。在您的管理界面中设置vbo视图可能会更容易,该视图允许您筛选被阻止的用户,然后您可以选择全部并取消。

你也可以运行一个php脚本drush php-script script.php

因此,您可以设置一个php脚本,为被阻止的用户查询,然后通过用户循环并调用用户取消功能。

3

使用Drupal的7和Drush 5.9,我做的方式是:

1-创建一个别名 “@例如本地” 到本地Drupal安装,如图所示here

2-创建称为脚本文件 “删除封闭-users.script”,在,比方说, “/用户/用户名/脚本/ drush”,用以下代码:

#!/usr/bin/env drush 

$users = db_query("SELECT * FROM {users} WHERE (status = 0)"); 
foreach ($users as $user) { 
    exec("drush @example-local user-cancel $user->name -y"); 
} 

3-制作与脚本文件可执行:

chmod +x ~/scripts/drush/delete-blocked-users.script 

4-最后,使用运行脚本:

drush @example-local scr ~/scripts/drush/delete-blocked-users.script 

这将删除所有阻止用户(状态= 0的用户),而不要求确认(由-y标志定义)。

-2

此外drush,是使用用户名,密码和数据库名称MySQL数据,你可以在文件drupalhomedir /网站/默认/ setting.php找到命令只是更容易访问:

mysql -u username-at-setting -ppassword-at-setting database-at-setting 

然后删除所有记录在drupal的'用户'表上:

DELETE FROM user WHERE status=0; 
+1

虽然技术上是正确的,但这会从用户表中删除记录,但会孤儿很多在Drupal中附加到用户的数据。自定义字段和贡献内容都将被留下。 – zkent 2014-07-29 09:19:40