【问题标题】:How can I delete all blocked users with Drush?如何使用 Drush 删除所有被阻止的用户?
【发布时间】:2013-01-31 03:47:41
【问题描述】:

如何使用 Drush 删除所有被阻止的用户?我有数百个被垃圾邮件发送者阻止的用户。我想删除所有这些用户。我尝试通过 Web 界面执行此操作,但这一次仅适用于大约 20 个用户。我有 60 页要删除,这需要太长时间且不可持续。另外,我希望在删除被阻止的用户时运行所有相关的回调,并且我希望删除其所有内容。我注意到user-cancel,但这似乎只适用于单个用户。有没有办法让这个命令对所有被屏蔽的用户都有效?

【问题讨论】:

标签: drupal drush


【解决方案1】:

除了 drush,使用用户、密码和数据库名称更容易访问 mysql 数据,您可以使用命令在文件 drupalhomedir/sites/default/setting.php 中找到:

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

然后删除drupal“用户”表上的所有记录:

DELETE FROM user WHERE status=0;

【讨论】:

  • 虽然技术上是正确的,但这会从用户表中删除记录,但会孤立在 Drupal 中附加到用户的大量数据。自定义字段和贡献的内容都将被抛在后面。
【解决方案2】:

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

1- 为本地 Drupal 安装创建一个别名“@example-local”,如 here 所示。

2- 创建一个名为“delete-blocked-users.script”的脚本文件,例如,“/Users/username/scripts/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 标志定义)。

【讨论】:

    【解决方案3】:

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

    您还可以使用drush php-script script.php 运行 php 脚本。

    因此,您可以设置一个 php 脚本来查询被阻止的用户,然后遍历用户并调用用户取消函数。

    【讨论】:

      猜你喜欢
      • 2019-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 1970-01-01
      相关资源
      最近更新 更多