web-dev-qa-db-ja.com

ユーザーポイントをあるユーザーから別のユーザーに移動するための利用可能なアプローチ

ユーザーポイント モジュールを使用して、このユースケースを設計します。

"ユーザーポイントをユーザーAからユーザーBに移動します"

ここで可能なアプローチは何ですか?

2
augusto

以下でさらに詳しく説明するように、選択できるアプローチは少なくとも2つあります...

ユーザーポイント寄付

serpoints Donation モジュールを使用します。これは、(D7バージョンの) serpoints Contrib モジュールに含まれているモジュールの1つです。

これを使用するには、それに関連する必要な権限も必ず付与してください(そして、「 serpoints寄付のモジュールはどのように機能することを意図していますか? "...)。

ルール

ユーザーポイント モジュールと ルール モジュールの統合を使用して、ユーザーポイントをあるアカウントから別のアカウントに転送するカスタムルールを記述して、「独自のCookieをロール」します。

サンプルとして、ノードの投票と組み合わせて使用​​されるこのルールを見てください。一方、著者は「-2」ポイントを失い、有権者は「-1」ポイントを失います。

{ "rules_votedown_question" : {
    "LABEL" : "votedown_question",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "TAGS" : [ "answers" ],
    "REQUIRES" : [ "rules", "voting_rules", "userpoints_rules" ],
    "ON" : { "voting_rules_insert_node" : [] },
    "IF" : [
      { "node_is_of_type" : {
          "node" : [ "node" ],
          "type" : { "value" : { "answers_question" : "answers_question" } }
        }
      },
      { "voting_rules_condition_check_vote_value" : { "vote" : [ "vote" ], "value" : "-1" } }
    ],
    "DO" : [
      { "userpoints_action_grant_points" : {
          "user" : [ "node:author" ],
          "points" : "-2",
          "tid" : "0",
          "entity" : [ "" ],
          "description" : "Receive downvote to [node:type-name] \u0022[node:title]\u0022",
          "operation" : "QuestionDownvoteReceived",
          "reference" : "By uid=[vote:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
          "display" : "1",
          "moderate" : "default"
        }
      },
      { "userpoints_action_grant_points" : {
          "user" : [ "vote:user" ],
          "points" : "-1",
          "tid" : "0",
          "entity" : [ "" ],
          "description" : "Issue downvote to [node:type-name] \u0022[node:title]\u0022",
          "operation" : "QuestionDownvoteIssued",
          "reference" : "From uid=[node:author:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
          "display" : "1",
          "moderate" : "default"
        }
      }
    ]
  }
}

ポイントの量(-2と-1)を(たとえば)+25や-25のようなものに単純に適合させる場合、プロトタイプは(25)ユーザーポイントをあるユーザーから別のユーザーに転送することになります。

ルールイベントを「何かにフラグが付けられている」( Flag モジュールで作成された)などのイベントに置き換えると、クリックするだけで「25ユーザーポイントをこれに転送したい」と示すことができます。ユーザー)これをさらに一歩進めることができます。フラグはフィールド化可能であるため、「移動」するポイントの量を示すフィールドを追加できます。

ただし、上記のルールの例では、さらに改良が必要な場合があります。ユーザーAからユーザーBにポイントを移動した後、ユーザーAの残りのポイントがマイナスにならないようにする場合。このような絞り込みを実装する方法の詳細については、「 現在のユーザーポイントがルールモジュールで否定的かどうかを確認する方法は? 」を参照してください。

1
Pierre.Vriens