web-dev-qa-db-ja.com

ポイントが等しい値の場合:ゼロにリセット

ユーザーポイント モジュールを使用します。表示されるコンテンツごとに10ポイントを追加するルールを設定しました。これは簡単でした。次に、ユーザーポイントが100を超えているかどうかを確認し、100を超えている場合は、管理者にメールを送信し、そのユーザーのポイントをゼロに戻します。

2
user26910

Rules モジュールをダウンロードし、次のルールをインポートします。

{ "rules_reset_points" : {
    "LABEL" : "Reset points",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "TAGS" : [ "Points" ],
    "REQUIRES" : [ "php", "rules", "userpoints_rules" ],
    "ON" : { "userpoints_event_points_awarded_after" : [] },
    "IF" : [
      { "php_eval" : { "code" : "global $user;\r\n$num_pts = userpoints_get_current_points($user-\u003Euid, \u0027all\u0027);\r\nif ($num_pts \u003E 100) {return TRUE;}" } }
    ],
    "DO" : [
      { "userpoints_rules_get_current_points" : {
          "USING" : { "user" : [ "userpoints-transaction:user" ], "tid" : "all" },
          "PROVIDE" : { "loaded_points" : { "loaded_points" : "Number of points in the specified category." } }
        }
      },
      { "data_calc" : {
          "USING" : { "input_1" : [ "loaded-points" ], "op" : "*", "input_2" : "-1" },
          "PROVIDE" : { "result" : { "result" : "Calculation result" } }
        }
      },
      { "userpoints_action_grant_points" : {
          "user" : [ "userpoints-transaction:user" ],
          "points" : [ "result" ],
          "tid" : "0",
          "entity" : [ "" ],
          "description" : "Prevent more than 100 points.",
          "operation" : "Add",
          "display" : 0,
          "moderate" : "approved"
        }
      }
    ]
  }
}

アクションをニーズに適応させ、インストール後に別のアクション「メールを送信」を追加します Mime mail モジュール( この記事 がそれを行うのに役立つ場合があります)これで完了です!

2
Jeroen
  • ユーザーhook_userpoints($ op、$ params = array())

    このフックを使用して、特定の操作を実行します。他のモジュールがユーザーを指名すると、とりわけフックが呼び出されます。

  • $ op = "後のポイント"

  • ユーザーポイントを読み取り、100を超える状態を確認する

  • Userpoints_userpointsapi()を使用してポイントをリセットする

  • 100ポイントを差し引く

    $ params = array( 'uid' => $ user-> uid、 'points' => -100、); userpoints_userpointsapi($ params);

  • hook_mail を使用して管理者にメールを送信

  • 上記の機能は、モジュールフォルダー内のReadme.txtファイルで明確に説明されています。

1
Anil Sagar