web-dev-qa-db-ja.com

ルールモジュールの後にフラグモジュールを実行する方法

この質問 のシーケンスとして、記事に対するユーザーのfirst反応が次の場合に、2ユーザーポイントを差し引きます。削除されました(私は flag 「最初の反応」について言及しました)。次の設定で Rule 'Reaction deleted'を作成しました。

EVENTS:コメントを削除した後

条件:

  • コメントにはフラグが付けられていますパラメータ:フラグ:最初の反応、コメント:[comment]、確認するユーザー:[comment:author]

アクション:

  • ユーザーにポイントを付与するパラメーター:ユーザー:[comment:author]、ポイント:-2、ポイントカテゴリ:反応、操作:削除、中程度:自動的に承認
  • ノードのフラグを解除:パラメータ:フラグ:ノードでコメント、ノード:[comment:node]、フラグを立てるユーザー:[comment:author]、権限チェックをスキップ:false

「最初のコメント」のフラグが付けられた状態でデータベースに保存されている場合でも、コメントは常にフラグが付けられていないかのように処理されるため、問題はないようです。

これはルール評価ログです:

0 ms Reacting on event After deleting a comment.
11.674 ms Evaluating conditions of rule Reaction removed. [edit]
15.543 ms The condition user_has_role evaluated to FALSE [edit]
28.531 ms The condition flag_flagged_comment evaluated to FALSE [edit]  <--- going wrong here
28.547 ms AND evaluated to FALSE.
28.575 ms Finished reacting on event After deleting a comment

何が問題で、どうすれば解決できますか?

3
Jeroen

この問題は、フラグモジュールがルールの前に実行され、ルールがテストを実行する前にフラグが既に削除されているために発生します。これに対処する1つの方法は、モジュールの相対的な優先度を調整してフラグがルールの後に実行されるようにする モジュールの重み をインストールすることです。

2