web-dev-qa-db-ja.com

ユーザーポイントを使用してクイズのスコアを保存する方法

ポイントを ser Points データベースに直接追加するにはどうすればよいですか?私はクイズのサイトを持っていますが、最初から何かを作成するのではなく、 ユーザーポイント モジュールを使用してクイズのスコアを保存したいと考えています。このような点について分類「クイズ」を作成しました。

すべてのクイズは、作成されたスコアを表示することで終了します(正解数に応じて0から100の間)。これを続けて、userpointデータベースに保存したいと思います。

次のコードを使用していますが、2つのエラーメッセージが表示されます。

通知:未定義の変数:ユーザー...
通知:非オブジェクトのプロパティを取得しようとしています...

私が使用しているコードは次のコードです。

$params = array (
  'uid' => $user->uid,
  'description' => 'Totals points from quizes',
  'points' => $percentage,
  'tid' =>127,
);

userpoints_userpointsapi($params);
2
Albert

serpoints には [〜#〜] api [〜#〜] があります。

特にuserpoints_userpointsapi()を参照してください。このようなもの:userpoints_userpointsapi(array('uid'=>$some_user, 'points'=>9000));

Userpointsをサポートする Quiz モジュールにも興味があるかもしれません。

3
paul-m

Quiz モジュールの 7.x-5.xバージョン を使用している場合、 Rules との統合を利用できます。この新しい Quiz リリースに付属するモジュール(これは7.x-4.xバージョンバージョンにはありませんでした)で、カスタムコードをまったく必要としません。

そのためには、次のような 配信されたルール を確認します。

{ "rules_send_results_at_the_end_of_a_quiz" : {
    "LABEL" : "Send quiz results at the end of a quiz",
    "PLUGIN" : "reaction rule",
    "ACTIVE" : false,
    "OWNER" : "rules",
    "TAGS" : [ "quiz" ],
    "REQUIRES" : [ "rules", "entity" ],
    "ON" : { "quiz_result_update" : [] },
    "IF" : [
      { "data_is" : { "data" : [ "quiz-result-unchanged:is-evaluated" ], "value" : "0" } },
      { "data_is" : { "data" : [ "quiz-result:is-evaluated" ], "value" : "1" } }
    ],
    "DO" : [
      { "mail" : {
          "to" : [ "quiz-result:uid:mail" ],
          "subject" : "[site:name]: Your results for [quiz-result:nid:title]",
          "message" : "[quiz-result:uid:name],\r\n\r\nYou finished the quiz [quiz-result:nid:title] on [quiz-result:time-start]\r\n\r\nYour score: [quiz-result:score]%\r\n\r\nYou can access the result here: [site:url]node\/[quiz-result:nid:nid]\/quiz-results\/[quiz-result:result-id]",
          "language" : [ "" ]
        }
      },
      { "mail" : {
          "to" : [ "quiz-result:nid:author:mail" ],
          "subject" : "[site:name]: [quiz-result:uid:name]\u0027s results for [quiz-result:nid:title]",
          "message" : "[quiz-result:nid:author:name],\r\n\r\n[quiz-result:uid:name] finished the quiz [quiz-result:nid:title] on [quiz-result:time-start]\r\n\r\nTheir score: [quiz-result:score]%\r\n\r\nYou can access the result here: [site:url]node\/[quiz-result:nid:nid]\/quiz\/results\/[quiz-result:result-id]\/view",
          "language" : [ "" ]
        }
      }
    ]
  }
}

Rules (およびそのサブモジュールであるルールUI)を有効にした後、上記のルールを複製し(ルールUIを使用)、両方のルールアクションをルールアクションに置き換えて、一定量のユーザーポイントを付与します。は[quiz-result:score]に等しい(このトークンは上記のルールの例(ルールアクション内)にも示されていることに注意してください)。

Rules を使用してユーザーポイントを付与する方法に慣れていない場合は、「 最後に変更されたノードを変更するためにのみユーザーポイントを付与する方法は、少なくとも20日間許可する方法」を参照してください。前? "(これを実現するルールの例も含まれています)。

0
Pierre.Vriens