2013-02-15 78 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