? .DS_Store
? randomize_answers.patch
Index: decisions.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/decisions/decisions.install,v
retrieving revision 1.28
diff -u -p -r1.28 decisions.install
--- decisions.install	5 Dec 2008 03:48:02 -0000	1.28
+++ decisions.install	10 Sep 2009 21:28:12 -0000
@@ -25,6 +25,7 @@ function decisions_schema() {
          'algorithm' => array('type' => 'varchar', 'length' => '100', 'not null' => FALSE),
          'showvotes' => array('type' => 'int', 'size' => 'tiny', 'not null' => FALSE, 'disp-width' => '4'),
          'startdate' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => FALSE, 'disp-width' => '10')),
+         'randomize' => array('type' => 'int', 'size' => 'tiny', 'not null' => FALSE, 'default' => 1, 'disp-width' => '4'),
     'primary key' => array('nid'),
   );
 
@@ -113,6 +114,16 @@ function decisions_update_5() {
   return $items;
 }
 
+function decisions_update_6() {
+  switch ($GLOBALS['db_type']) {
+  case 'mysql':
+  case 'mysqli':
+    $items[] = update_sql("ALTER TABLE {decisions} ADD COLUMN `randomize` tinyint default '0'");
+    break;
+  }
+  return $items;
+}
+
 /**
  * Implementation of hook_uninstall().
  */
Index: decisions.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/decisions/decisions.module,v
retrieving revision 1.221
diff -u -p -r1.221 decisions.module
--- decisions.module	19 Aug 2009 22:34:36 -0000	1.221
+++ decisions.module	10 Sep 2009 21:28:12 -0000
@@ -1086,7 +1086,6 @@ function decisions_load($node) {
   while ($choice = db_fetch_array($result)) {
     $decision->choice[$choice['vote_offset']] = $choice;
   }
-  $decision->choices = count($decision->choice);
 
   // See if user has voted
   $criteria = votingapi_current_user_identifier();
@@ -1133,7 +1132,7 @@ function decisions_insert($node) {
   // just create an empty entry for now
   $mode = _decisions_get_mode($node);
 
-  db_query("INSERT INTO {decisions} (nid, mode, quorum_abs, quorum_percent, uselist, active, runtime, maxchoices, algorithm, startdate) VALUES (%d, '%s', %d, %f, %d, %d, %d, %d, '%s', %d)", $node->nid, $mode, $node->settings['quorum']['quorum_abs'], $node->settings['quorum']['quorum_percent'], $node->settings['uselist'], $node->settings['active'], $node->settings['runtime'], $node->settings['maxchoices'], $node->settings['algorithm'], $startdate);
+  db_query("INSERT INTO {decisions} (nid, mode, quorum_abs, quorum_percent, uselist, active, runtime, maxchoices, algorithm, startdate, randomization) VALUES (%d, '%s', %d, %f, %d, %d, %d, %d, '%s', %d)", $node->nid, $mode, $node->settings['quorum']['quorum_abs'], $node->settings['quorum']['quorum_percent'], $node->settings['uselist'], $node->settings['active'], $node->settings['runtime'], $node->settings['maxchoices'], $node->settings['algorithm'], $startdate);
 
   // create the electoral list if desired
 
@@ -1210,7 +1209,7 @@ function decisions_update($node) {
     }
   } 
 
-  db_query("UPDATE {decisions} SET quorum_abs=%d, quorum_percent=%f, active=%d, runtime=%d, maxchoices=%d, algorithm='%s', uselist=%d, showvotes=%d, startdate=%d WHERE nid = %d", $node->settings['quorum']['quorum_abs'], $node->settings['quorum']['quorum_percent'], $node->settings['active'], $runtime, $node->settings['maxchoices'], $node->settings['algorithm'], $node->settings['uselist'], $node->settings['showvotes'], $startdate, $node->nid);
+  db_query("UPDATE {decisions} SET quorum_abs=%d, quorum_percent=%f, active=%d, runtime=%d, maxchoices=%d, algorithm='%s', uselist=%d, showvotes=%d, startdate=%d, randomize=%d WHERE nid = %d", $node->settings['quorum']['quorum_abs'], $node->settings['quorum']['quorum_percent'], $node->settings['active'], $runtime, $node->settings['maxchoices'], $node->settings['algorithm'], $node->settings['uselist'], $node->settings['showvotes'], $startdate, $node->settings['randomize'],$node->nid);
   // XXX: should update decisions here, when it has some parameters
   // XXX: ... but before doing so, the code below must be factored out in a seperate function for usage in decisions_insert()
   db_query('DELETE FROM {decisions_choices} WHERE nid = %d', $node->nid);
@@ -1502,6 +1501,13 @@ function decisions_form(&$node, &$form_s
                                          '#default_value' => isset($node->showvotes)? $node->showvotes : 1,
                                          '#options' => $enabled,
                                          );
+  
+  $form['settings']['randomize'] = array(
+                                         '#type' => 'checkbox',
+                                         '#title' => t('Randomize answers order'),
+                                         '#default_value' => $node->randomize,
+                                         '#description' => t('Display answers in a random order each time the poll is displayed.'),
+                                        );
 
   $form['settings']['date'] = array(
     '#type' => 'fieldset',
@@ -1657,3 +1663,20 @@ function _decisions_date($format, $times
   $result = gmdate($format, $timestamp);
   return  $result;
 }
+
+/*
+ * Function to put choices in random order if option to
+ * list poll options in random order
+ */
+function _decisions_randomize_options($choices) {
+  //dsm($variables);
+  $randomized_choices = array();
+  $temp_choices = $choices;
+  $rand_keys = array_rand($choices,5);
+  
+  foreach($rand_keys as $key => $value) {
+    $randomized_choices[$key+1]['vote_offset'] = $temp_choices[$value]['vote_offset'];
+    $randomized_choices[$key+1]['label'] = $temp_choices[$value]['label'];    
+  }  
+  return $randomized_choices;  
+}
Index: modes/ranking.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/decisions/modes/ranking.module,v
retrieving revision 1.22
diff -u -p -r1.22 ranking.module
--- modes/ranking.module	19 Aug 2009 22:30:20 -0000	1.22
+++ modes/ranking.module	10 Sep 2009 21:28:12 -0000
@@ -64,6 +64,12 @@ function ranking_decisions_voting_form(&
 
   if ($node->choice) {
     $list = array();
+    
+  // Put options in random order if randomize option
+  // selected on node create/edit form.
+  if($node->randomize) {
+    $node->choice = _decisions_randomize_options($node->choice); 
+  }    
 
     $num_choices = count($node->choice);
 
