web-dev-qa-db-ja.com

ユーザーポイントカテゴリが特定の値に達したときに管理者にメールを送信するルール

ユーザーが特定の値(例:100)に達する特定のカテゴリのポイントを持っているときにメールを送信するルールを作成したいと思います。条件に問題があります。ユーザーポイントカテゴリ=コンテストがあります。

ルールイベント:ユーザーにポイントが付与されました

1番目の条件:データ比較比較するデータ:[userpoints-transaction:tid]、データ値:コンテスト

2番目の条件:i)試行、データ比較、userpoints-transaction:points、equals、100

ii)試行、データ比較、userpoints-トランザクション、ただし比較する値が整数を許可しないため、正しいオプションではありません

アクション:メールを送信します。メール、件名、メッセージがあります。

最初の条件だけで、ルールは機能します。誰かがコンテストカテゴリのポイントを獲得すると、他のカテゴリではなく、メールが届きます。

誰かが100コンテストユーザーポイントに達したときにメールを送信するように条件を把握できません。

誰かこれをしましたか?ありがとう

2
danielesus

おそらく、ここで提供されているパッチを使用できます: https://drupal.org/node/1109992

0
Jeroen

前の回答で述べたパッチを使用する代わりに、以下に詳述するように、別のアプローチを使用することもできます...

確かに、ルールはありません条件からユーザーの現在のユーザーポイントのバランスを確認してください。ただし、このルールの例(ルールのエクスポート形式)をご覧ください。

{ "rules_display_userpoints_after_updating_content" : {
    "LABEL" : "Display userpoints after updating content",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "userpoints_rules", "rules", "rules_conditional" ],
    "ON" : { "node_update" : [] },
    "DO" : [
      { "userpoints_rules_get_current_points" : {
          "USING" : { "user" : [ "site:current-user" ], "tid" : "all" },
          "PROVIDE" : { "loaded_points" : { "total_points" : "Number of points in all categories together" } }
        }
      },
      { "drupal_message" : { "message" : "You now have [total-points:value] points" } },
      { "CONDITIONAL" : [
          {
            "IF" : { "NOT data_is" : { "data" : [ "total-points" ], "op" : "\u003C", "value" : "100" } },
            "DO" : [
              { "drupal_message" : { "message" : "You have sufficient points (you have [total-points:value] ...)." } }
            ]
          },
          { "ELSE" : [
              { "drupal_message" : { "message" : "You DO NOT have sufficient points (you only have [total-points:value] ...)." } }
            ]
          }
        ]
      }
    ]
  }
}

最初のルールアクション(ルール条件ではありません!)として、ユーザーの現在のユーザーポイント数を取得します。金額が100以上の場合は、「ポイントが足りません...」で始まるメッセージが表示されます。それ以外の場合は、「ポイントが足りません...」で始まります。メッセージの表示を対応するルールアクションに適合させて電子メールを送信するのは簡単です。

この例は、「すべてのカテゴリ」に一緒に適用されます。単一のカテゴリのみに制限する場合は、目的のカテゴリのtidに変更します(01など)。

この例では、 条件付きルール モジュールを使用しています。このモジュールを使用する代わりに、対応するルールコンポーネントを作成して、同様のルールアクションを実行することもできますが、条件付きルールモジュールを使用して含めたいルール条件と同等の追加のルール条件を使用することもできます。次に、元のルールのルールアクション内でそのルールコンポーネントを実行します。詳細については、「 条件付きルールモジュールを使用する代わりの方法は何ですか? "」の回答を参照してください。

したがって、このルールを機能させるための手がかりは、最初のルールアクション「ユーザーのユーザーポイントをロードする」です。

PS:この質問はD7に関するものだと思います。

0
Pierre.Vriens