You are here

function advpoll_voting_ranking_form_submit in Advanced Poll 6.3

Same name and namespace in other branches
  1. 5 modes/ranking.inc \advpoll_voting_ranking_form_submit()
  2. 6 modes/ranking.inc \advpoll_voting_ranking_form_submit()
  3. 6.2 modes/ranking.inc \advpoll_voting_ranking_form_submit()

Implementation of the vote hook for the runoff module.

This takes care of registering the vote in runoff nodes.

File

modes/ranking.inc, line 693
Handle ranking votes, e.g. choice A is preferred over choice B, which in turn is preferred over choice C.

Code

function advpoll_voting_ranking_form_submit($form, &$form_state) {
  $votes = array();
  $node = $form['#node'];

  // Do submission specific to writeins.
  if (isset($form_state['values']['writein_key'])) {
    _advpoll_writeins_voting_form_submit($node, $form_state, $votes, $form_state['values']['choice'][$form_state['values']['writein_key']]);
  }
  if (!$votes) {
    foreach ($form_state['values']['choice'] as $choice => $rank) {
      $vote = array();

      // Ignore write-in choice that has already been taken care of.
      if (!$node->writeins || !isset($form_state['values']['writein_key']) || $choice != $form_state['values']['writein_key']) {
        $vote['value'] = $rank;

        // A zero value indicates they didn't rank that choice.
        if ($vote['value'] != 0) {
          $vote['value_type'] = 'option';
          $vote['tag'] = $choice;
          $vote['content_type'] = 'advpoll';
          $vote['content_id'] = $node->nid;
          $vote = _advpoll_votesettings($vote, $node->nid);
          $votes[] = $vote;
        }
      }
    }
  }
  votingapi_set_votes($votes, array());
  _advpoll_vote_response($node, $form_state);
}