web-dev-qa-db-ja.com

ルールモジュールのPHPコードでトークンを使用する方法

Ajax_commentsを使用して、保存時にページをリロードする必要なくノードにコメントを追加しています。これで、「ノード履歴」が更新されず、「新しいコメント」のカウントが破棄されます。

「コメント保存」でノード履歴を更新するルールを作成してみました。 PHPコードを実行することが私の唯一のオプションのようです。PHPコードをトークンと組み合わせて次のようなものを取得するにはどうすればよいですか。

if ([current-user:uid]) {
   db_merge('history')
     ->key(array(
       'uid' => [current-user:uid],
       'nid' => [comment:node:nid],
     ))
     ->fields(array('timestamp' => [site:current-date]))
     ->execute();
  }
6
uwe

Ajax Comments モジュールをオフにすると、上記のコードが機能することがわかります。そのモジュールを使用すると、内部サーバーエラーがスローされます。

issue と報告しました。

このフックは今仕事をします:

function hook_comment_insert($comment) {
  //dpm($comment);

  if ($comment->uid) {
   db_merge('history')
     ->key(array(
       'uid' => $comment->uid,
       'nid' => $comment->nid,
     ))
     ->fields(array('timestamp' => REQUEST_TIME))
     ->execute();
  }
}
3
uwe