$ user1が作成者であるすべてのノードを変更し、$ user2を作成者として設定します。私はこれを使用しますPHPコードと動作しますが、それは正しい方法ですか?または、バッチプロセスを使用して各ノードをロードして作成者を変更する必要がありますか?
$num_updated = db_update('node')
->fields(array(
'uid' => $user2->uid,
))
->condition('uid', $user1->uid, '=')
->execute();
結局のところ、私の組織では重要な転職があり、全員が独自のノードを管理する必要があるため、モジュールを作成して適切に処理することにしました。私はそれを行うためにnode_load/node_save関数を使用しました。
必要に応じて、モジュールをサンドボックスに配置します。 https://drupal.org/sandbox/franperr/2109987 バグ/ヘルプ/新機能に関するメッセージを送信してください.
Bulk Author Update モジュールを使用することも、 views bulk operations module を使用することもできます
最初の解決策は
管理ビューはビューの一括操作を使用して、デフォルトのdrupal管理ビューをより便利なものでオーバーライドします。
サイトが最小のトラフィックを期待しているときにcron実行で更新タスクをスケジュールできます。特定の時間にudpateプロセスをスケジュールするには、 elysia cron モジュールを使用できます。このようにして、リビジョンの更新も一括して更新でき、スクリプトはスタンドアロンとして実行されます。
ステップ1:updatタスクをスケジュールします(elysiaモジュールを使用している場合)。
function mymodule_cron_cronapi($op, $job = NULL) {
$items['update_node_user_author'] = array(
'description' => 'Update node user author',
'rule' => '0 12 * * *',
'callback' => 'mymodule_update_node_author',
);
return $items;
}
//cron call back
function mymodule_update_node_author() {
// add logic to get $uid and $uid2
// $uid is the user id you want to change for.
// $uid2 is the user id you want to change with.
exec("/usr/bin/php update_author.php $uid $uid2> /dev/null 2>&1 &");
}
drupal rootにupdate_author.phpという名前のphpスクリプトを作成し、その中に以下のコードを追加します。
<?php
if (!isset($_SERVER['REMOTE_ADDR'])) {
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
}
$uid = $argv[1];
$uid2 = $argv[2];
define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node');
$query->propertyCondition('uid',$uid);
$result = $query->execute();
if (isset($result['node'])) {
$nids = array_keys($result['node']);
$nodes = node_load('node', $nids);
}
foreach($nodes as $node) {
$node = node_load($nid);
$node->uid = $uid2;
node_save($node);
}
最も快適でクリーンな解決策は、views_bulk_operationsモジュールに基づいてビューを準備することです(インストールすることを忘れないでください)。
これは私のエクスポートされたビューです (admin/structure/views/importにインポートできます).