Index: custom_vote.admin.inc =================================================================== RCS file: custom_vote.admin.inc diff -N custom_vote.admin.inc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ custom_vote.admin.inc 2 May 2009 16:38:39 -0000 @@ -0,0 +1,33 @@ + $obj) { + $node_types[$key] = $obj->name; + } + $form['custom_vote_node_types'] = array( + '#type' => 'checkboxes', + '#title' => t('Allowed node types'), + '#options' => $node_types, + '#default' => array(), + ); + + $form['custom_vote_options'] = array( + '#type' => 'textarea', + '#title' => t('Voting options'), + '#description' => t('Enter a list of voting options. Each new options should be on a new line, along with the number of points its worth. For example:
Excellent
3
Good
1'), + '#default' => '', + ); + + foreach ($form as $key => $item) { + $form[$key]['#default_value'] = variable_get($key, $item['#default']); + unset($form[$key]['#default']); + } + + return system_settings_form($form); +} \ No newline at end of file Index: custom_vote.info =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/custom_vote/custom_vote.info,v retrieving revision 1.1 diff -u -p -r1.1 custom_vote.info --- custom_vote.info 1 Apr 2008 03:41:38 -0000 1.1 +++ custom_vote.info 2 May 2009 16:42:37 -0000 @@ -1,5 +1,6 @@ ; $Id: custom_vote.info,v 1.1 2008/04/01 03:41:38 cwgordon7 Exp $ name = Custom vote description = Allows administrators to define custom voting patterns for nodes. +core = 6.x package = Voting -dependencies = votingapi \ No newline at end of file +dependencies[] = votingapi \ No newline at end of file Index: custom_vote.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/custom_vote/custom_vote.module,v retrieving revision 1.1 diff -u -p -r1.1 custom_vote.module --- custom_vote.module 1 Apr 2008 03:41:38 -0000 1.1 +++ custom_vote.module 2 May 2009 17:57:01 -0000 @@ -2,59 +2,38 @@ // $Id: custom_vote.module,v 1.1 2008/04/01 03:41:38 cwgordon7 Exp $ /** - * Implementation of hook_perm + * Implementation of hook_perm(). */ function custom_vote_perm() { return array('administer custom vote', 'cast custom votes', 'view custom votes'); } /** - * Implementation of hook_menu(). + * Implementation of hook_theme(). */ -function custom_vote_menu($may_cache) { - $items = array(); - if ($may_cache) { - $items[] = array( - 'path' => 'admin/settings/custom_vote', - 'title' => 'Custom vote', - 'description' => 'Configure settings for the custom vote module.', - 'callback' => 'drupal_get_form', - 'callback arguments' => array('custom_vote_settings'), - 'access' => user_access('administer custom vote'), - ); - } - return $items; +function custom_vote_theme($existing, $type, $theme, $path) { + return array( + 'custom_vote_details' => array( + 'arguments' => array('results' => NULL, 'options' => NULL), + ), + ); } + /** - * Menu callback for the settings form. + * Implementation of hook_menu(). */ -function custom_vote_settings() { - $form = array(); - $node_types = node_get_types(); - foreach ($node_types as $key => $obj) { - $node_types[$key] = $obj->name; - } - $form['custom_vote_node_types'] = array( - '#type' => 'checkboxes', - '#title' => t('Allowed node types'), - '#options' => $node_types, - '#default' => array(), - ); - - $form['custom_vote_options'] = array( - '#type' => 'textarea', - '#title' => t('Voting options'), - '#description' => t('Enter a list of voting options. Each new options should be on a new line, along with the number of points its worth. For example:
Excellent
3
Good
1'), - '#default' => '', +function custom_vote_menu() { + $items = array(); + $items['admin/settings/custom_vote'] = array( + 'title' => 'Custom vote', + 'description' => 'Configure settings for the custom vote module.', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('custom_vote_settings'), + 'access arguments' => array('administer custom vote'), + 'file' => 'custom_vote.admin.inc', ); - - foreach ($form as $key => $item) { - $form[$key]['#default_value'] = variable_get($key, $item['#default']); - unset($form[$key]['#default']); - } - - return system_settings_form($form); + return $items; } /** @@ -68,24 +47,37 @@ function custom_vote_nodeapi(&$node, $op return; } $options = custom_vote_options(); - if (user_access('cast custom votes')) { - $user_vote = votingapi_get_user_votes('node', $node->nid); - if (is_array($user_vote)) { - $user_vote = array_pop($user_vote); + if (user_access('cast custom votes') && count($options)) { + global $user; + $votes = votingapi_select_votes(array('content_type' => 'node', 'content_id' => $node->nid, 'uid' => $user->uid)); + if (!empty($votes)) { + $user_vote = array_pop($votes); + $user_vote = $user_vote['value']; } - $user_vote = $user_vote->value; - if (count($options)) { - $node->content['custom_vote'] = array( - '#value' => drupal_get_form('custom_vote_form', $options, $node->nid, $user_vote), - '#weight' => 40, - ); + else { + $user_vote = NULL; } + $node->content['custom_vote'] = array( + '#value' => drupal_get_form('custom_vote_form', $options, $node->nid, $user_vote), + '#weight' => 40, + ); } if (user_access('view custom votes')) { - $current_count = votingapi_get_voting_result('node', $node->nid, 'points', 'vote', 'count'); - $count = $current_count->value; - $current_total = votingapi_get_voting_result('node', $node->nid, 'points', 'vote', 'sum'); - $total = $current_total->value; + $results = votingapi_select_results(array('content_type' => 'node', 'content_id' => $node->nid, 'tag' => 'vote', 'value_type' => 'points')); + if (empty($results)) { + $count = 0; + $sum = 0; + } + else { + foreach ($results as $result) { + if ($result['function'] == 'count') { + $count = $result['value']; + } + if ($result['function'] == 'sum') { + $total = $result['value']; + } + } + } $node->content['custom_vote']['votes'] = array( '#value' => t('Current status:
@total', array('@total' => $total, '@count' => $count)) . format_plural($count, ' (@count vote)', ' (@count votes)'), '#weight' => 50, @@ -94,7 +86,7 @@ function custom_vote_nodeapi(&$node, $op if ($count == 0) { return; } - $results = votingapi_get_content_votes('node', $node->nid); + $results = votingapi_select_votes(array('content_type' => 'node', 'content_id' => $node->nid, 'tag' => 'vote', 'value_type' => 'points')); $node->content['custom_vote']['details'] = array( '#value' => theme('custom_vote_details', $results, $options), '#weight' => 60, @@ -135,7 +127,7 @@ function custom_vote_options() { /** * FAPI callback. Returns the actual voting form. */ -function custom_vote_form($options, $nid, $user_vote) { +function custom_vote_form($form_state, $options, $nid, $user_vote) { $string = 'Choose one of the voting options below.'; $args = array(); if (isset($user_vote)) { @@ -164,7 +156,8 @@ function custom_vote_form($options, $nid /** * Handle vote submissions. */ -function custom_vote_form_submit($form_id, $form_values) { +function custom_vote_form_submit($form, &$form_state) { + $form_values = $form_state['values']; $op = $form_values['op']; $nid = $form_values['nid']; foreach (array('op', 'form_token', 'form_id', 'nid') as $unwanted) { @@ -172,18 +165,23 @@ function custom_vote_form_submit($form_i } foreach ($form_values as $value => $label) { if ($label == $op) { - $vote = array(); - $vote['value'] = (int)$value; - $vote['value_type'] = 'points'; - $vote['tag'] = VOTINGAPI_VALUE_DEFAULT_TAG; - $vote = (object)$vote; - if ($vote->value != 0) { - votingapi_set_vote('node', $nid, $vote); - drupal_set_message(t("Your vote for %label has been recorded", array('%label' => $label))); + if ((int)$value != 0) { + $vote = array(); + $vote['value'] = (int)$value; + $vote['value_type'] = 'points'; + $vote['content_type'] = 'node'; + $vote['content_id'] = $nid; + $votes = array($vote); + votingapi_set_votes($votes); + drupal_set_message(t('Your vote for %label has been recorded.', array('%label' => $label))); } else { - votingapi_unset_vote('node', $nid); - drupal_set_message(t('Your vote has been canceled')); + global $user; + $vote_id = db_result(db_query("SELECT vote_id FROM {votingapi_vote} WHERE uid = %d AND content_type = 'node' AND content_id = %d AND tag = 'vote' AND value_type = 'points'", $user->uid, $nid)); + $vote = array('vote_id' => $vote_id); + $votes = array($vote); + votingapi_delete_votes($votes); + drupal_set_message(t('Your vote has been canceled.')); } break; } @@ -198,16 +196,14 @@ function custom_vote_form_submit($form_i function theme_custom_vote_details($results, $options) { $headers = array(t('Users'), t('Votes')); $rows = array(); - foreach ($results as $result) { - foreach ($result as $vote) { - if ($vote->value_type == 'points' && $vote->tag == VOTINGAPI_VALUE_DEFAULT_TAG) { - $row = array(); - $user = user_load(array('uid' => $vote->uid)); - $row['username'] = theme('username', $user); - $row['vote_cast'] = $options[$vote->value]; - $rows[] = $row; - } + foreach ($results as $vote) { + if ($vote['value_type'] == 'points' && $vote['tag'] == 'vote') { + $row = array(); + $user = user_load(array('uid' => $vote['uid'])); + $row['username'] = theme('username', $user); + $row['vote_cast'] = check_plain($options[$vote['value']]); + $rows[] = $row; } } - return $pre . theme('table', $headers, $rows); + return theme('table', $headers, $rows); } \ No newline at end of file