Drushは初めてです。このスクリプトを実行して特定のユーザーのコメントを削除するにはどうすればよいですか?
$uid = xx // the spam users id;
$query = db_query("SELECT cid FROM {comments} WHERE uid = %d", $uid);
while($cid = db_result($query)) {
comment_delete($cid);
}
また、$ uidの代わりにユーザー名を使用するようにスクリプトを完了する方法を教えていただければすばらしいと思います。
ありがとう
スクリプトは Drush Shellスクリプト で変換できます。
ドラッシュシェルスクリプトは、「実行」ビットが(つまり
chmod +x myscript.drush
を介して)設定され、特定の行で始まる任意のUnixシェルスクリプトファイルです。#!/usr/bin/env drush
または
#!/full/path/to/drush
以下の理由により、DrushスクリプトはBashスクリプトよりも優れています。
以下は、 helloword.script にある例です。
#!/usr/bin/env drush
//
// This example demonstrates how to write a drush
// "Shebang" script. These scripts start with the
// line "#!/usr/bin/env drush" or "#!/full/path/to/drush".
//
// See `drush topic docs-scripts` for more information.
//
drush_print("Hello world!");
drush_print();
drush_print("The arguments to this command were:");
//
// If called with --everything, use drush_get_arguments
// to print the commandline arguments. Note that this
// call will include 'php-script' (the drush command)
// and the path to this script.
//
if (drush_get_option('everything')) {
drush_print(" " . implode("\n ", drush_get_arguments()));
}
//
// If --everything is not included, then use
// drush_shift to pull off the arguments one at
// a time. drush_shift only returns the user
// commandline arguments, and does not include
// the drush command or the path to this script.
//
else {
while ($arg = drush_shift()) {
drush_print(' ' . $arg);
}
}
drush_print();
スクリプトを実行可能にすることができるため、<script file> <parameters>
を使用してスクリプトを実行できます。ここで、<script name>
はスクリプト名、<parameters>
はスクリプトに渡されるパラメーターです。スクリプトが実行可能でない場合は、drush <script name> <parameters>
で呼び出します。
drush php-eval
を使用すると、スクリプトを実行できます最初にファイルに保存する必要はありません:
drush php-eval '
$uid = 1234;
$query = db_query("SELECT cid FROM {comments} WHERE uid = %d", $uid);
while($cid = db_result($query)) {
comment_delete($cid);
}
'
これはネストされた引用符を使用するため、混乱を防ぐために、PHPコード内では二重引用符"
のみを使用することをお勧めします。
drush -d scr --uri=example.org sample_script.php
は、sample_script.phpを実行します。
Drushでphpファイルを実行するには、drush php-script script_name
を使用できます。
Phpファイルを実行するためのDrushに関連するヘルプについては、タイプDrush php-script --help
にコマンドがリストされます
注:私はDrupalのルートフォルダーにphp scirptを配置しました
drush scr ~/sample.php
でphpスクリプトを実行するのは簡単です。
コマンドラインで、どこからでも、次のコマンドを実行します。
$ drush --root=/path/to/drupal-installation --uri=youdomain.com scr /path/to/your/script.php
すでに/ path/to/drupal-installationにいる場合は、以下を実行してください:
$ drush --uri=youdomain.com scr /path/to/your/script.php
/path/to/drupal-installation/sites/youdomain.comを実行するよりもさらに進んでいる場合:
$ drush scr /path/to/your/script.php
あなたのscript.phpファイル:
<?php
// Not always needed but sometimes you might have to first login as an administrator.
$admin_uid = 1;
$form_state = array('uid' => $admin_uid);
user_login_submit(array(), $form_state);
// Now the logged in user global $user object become available.
global $user;
print_r($user);
// Do whatever you want here.
db_result
はDrupal 7.で削除されました。上記のコードは次のように変更できます。
$result = db_query($query);
foreach($result as $cid) {
comment_delete($cid);
}
Uidの代わりにユーザー名を使用したい場合は、これを使用してユーザー名を取得できます。
$username = user_load($uid)->name;