web-dev-qa-db-ja.com

投票ルールの統合

コアポーリングモジュールをルールと統合するにはどうすればよいですか?

advpoll モジュールを見つけましたが、まだ開発バージョンであり、どこでもエラーをスローします。

ユーザーが投票に投票した後、単にルールをトリガーしたいと思っています。

同じ機能を実現するための代替手段はありますか?

1
Aram Boyajyan

カスタムモジュールを使用すると、かなり簡単に実行できることがわかりました。

MYMODULE.module

/**
 * Implements hook_form_alter().
 */
function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  switch ($form_id) {
    case 'poll_view_voting':
      $form['vote']['#submit'][] = 'MYMODULE_poll_view_voting_submit';
      break;
  }
}

/**
 * Submit handler for poll_view_voting form.
 */
function MYMODULE_poll_view_voting_submit($form, &$form_state) {
  // Invoke our custom rule and pass the loaded node object as an argument.
  rules_invoke_event('MYMODULE_poll_vote', node_load($form['#node']->nid));
}

MYMODULE.rules.inc

/**
 * Implements hook_rules_event_info().
 */
function MYMODULE_rules_event_info() {
  return array(
    'MYMODULE_poll_vote' => array(
      'label' => t('User casts a poll vote'),
      'help' => t('Triggers when users are casting votes on polls.'),
      'group' => t('MYMODULE HUMAN NAME'),
      'variables' => array(
        'poll' => array(
          'type' => 'node',
          'label' => t('Poll node'),
          'description' => t('Voted poll node.'),
        ),
      ),
    ),
  );
}
2
Aram Boyajyan