web-dev-qa-db-ja.com

PHPのルールでノードにフラグを立てるためのUserPointの課金

PHPのルールでノードにフラグを立てるためにポイントを請求しようとしています。次のコードを使用しています。

 //Get variables and load user.
$uid = [userpoints-transaction:user:uid];
$account = user_load($uid);

// Check the user has enough points.
if ($loaded_points > 10) {

  // DON'T KNOW HOW TO TAKE 10 POINTS.

  // Flag a node.
  $flag = flag_get_flag('purchase') or die('no "purchase" flag defined');
  $flag->flag('flag', $node->nid);
  // Search for the newly created flagging entity.
  $flag = flag_get_user_flags('node', $node->nid);

  foreach ($flag as $flagging_object) {
    $flagging_id = $flagging_object->flagging_id;
  }

  // Load the entity found and create or update a field value.
  $flagging = entity_load_single('flagging', $flagging_id);
  $flagging->purchase['und'][0]['value'] = 'DONT KNOW DEFAULT VALUE OF FLAGGING';

  // Save the updated flagging entity object.
  entity_save('flagging', $flagging);
}

drupal_set_message($msg);

それらに10ポイントを請求する方法と、ノードにフラグを立てるときのデフォルト値がわかりません。

1
Michael D

ノードにフラグを付けた後、ユーザーに10個のユーザーポイントを付与したいだけの場合は、事態が複雑になります。これは、カスタムコーディングなしで実行できます。これがあなたがしなければならないことです:

  1. 新しいルールを作成します。
  2. 「YOUR_FLAGの下でノードにフラグが立てられました」というイベントを追加します。
  3. アクション「Grantpointsto a user」を追加し、それに10の量を与えます。
  4. 完了しました。
1
Jeroen