s/option/choice/, also rename the variable for the temporary token to

2005-10-24  Vincent Untz  <vuntz@gnome.org>

	* foundation.gnome.org/vote/*: s/option/choice/, also rename the
	variable for the temporary token to tmp_token
	* foundation.gnome.org/vote/include/election-sql.php: make it possible
	to use a local configuration for testing
This commit is contained in:
Vincent Untz 2005-10-24 18:25:43 +00:00 committed by Vincent Untz
parent d49c1a02f2
commit 6810d2ffbd
9 changed files with 137 additions and 110 deletions

View file

@ -1,3 +1,10 @@
2005-10-24 Vincent Untz <vuntz@gnome.org>
* foundation.gnome.org/vote/*: s/option/choice/, also rename the
variable for the temporary token to tmp_token
* foundation.gnome.org/vote/include/election-sql.php: make it possible
to use a local configuration for testing
2005-10-24 Vincent Untz <vuntz@gnome.org>
* configure.in:

View file

@ -1,13 +1,33 @@
<?php
require_once ("/home/admin/secret/anonvoting");
$has_config = FALSE;
$mysql_host = "";
$mysql_user = "";
$mysql_password = "";
$mysql_db = "";
$elections_table = "elections";
$options_table = "election_options";
$choices_table = "election_choices";
$anon_tokens_table = "election_anon_tokens";
$tokens_table = "election_tokens";
$tmp_tokens_table = "election_tmp_tokens";
$votes_table = "election_votes";
$members_table = "foundation_members";
$members_table = "foundationmembers";
if (is_readable ("include/localconfig.php")) {
/* You can use such a file to have a local config for testing purpose. */
include ("include/localconfig.php");
$has_config = TRUE;
}
if (is_readable ("/home/admin/secret/anonvoting")) {
include ("/home/admin/secret/anonvoting");
$has_config = TRUE;
}
if (!$has_config) {
trigger_error ("No configuration found.");
}
function elec_sql_open () {
global $mysql_host;
@ -15,18 +35,18 @@ function elec_sql_open () {
global $mysql_password;
global $mysql_db;
$handle = mysql_connect ("$mysql_host", "$mysql_user", "$mysql_password");
if (!$handle) {
return FALSE;
}
$handle = mysql_connect ("$mysql_host", "$mysql_user", "$mysql_password");
if (!$handle) {
return FALSE;
}
$select_base = mysql_select_db ($mysql_database, $handle);
if (!$select_base) {
elec_sql_close ($handle);
return FALSE;
}
$select_base = mysql_select_db ($mysql_database, $handle);
if (!$select_base) {
elec_sql_close ($handle);
return FALSE;
}
return $handle;
return $handle;
}
function elec_sql_close ($handle) {
@ -102,8 +122,8 @@ function elec_get_previous_by_date_desc ($handle) {
return elec_get_by_date_desc_with_where ($handle, $where);
}
function elec_verify_email_token ($handle, $election_id, $email, $token) {
global $tokens_table;
function elec_verify_email_tmp_token ($handle, $election_id, $email, $tmp_token) {
global $tmp_tokens_table;
global $members_table;
if ($handle === FALSE)
@ -111,11 +131,11 @@ function elec_verify_email_token ($handle, $election_id, $email, $token) {
$escaped_election_id = mysql_real_escape_string ($election_id, $handle);
$escaped_email = mysql_real_escape_string ($email, $handle);
$escaped_token = mysql_real_escape_string ($token, $handle);
$escaped_tmp_token = mysql_real_escape_string ($tmp_token, $handle);
$query = "SELECT COUNT(*) FROM " . $tokens_table . " AS tt, " . $members_table . " AS mt";
$query = "SELECT COUNT(*) FROM " . $tmp_tokens_table . " AS tt, " . $members_table . " AS mt";
$query .= " WHERE tt.election_id = '".$escaped_election_id."'";
$query .= " AND tt.token = '".$escaped_token."'";
$query .= " AND tt.tmp_token = '".$escaped_tmp_token."'";
$query .= " AND tt.member_id = mt.id";
$query .= " AND mt.email = '".$escaped_email."'";
@ -126,15 +146,15 @@ function elec_verify_email_token ($handle, $election_id, $email, $token) {
return (mysql_result ($result, 0, 0) == 1);
}
function elec_options_get ($handle, $election_id) {
global $options_table;
function elec_choices_get ($handle, $election_id) {
global $choices_table;
if ($handle === FALSE)
return FALSE;
$escaped_election_id = mysql_real_escape_string ($election_id, $handle);
$query = "SELECT * FROM " . $options_table;
$query = "SELECT * FROM " . $choices_table;
$query .= " WHERE election_id = '".$escaped_election_id."'";
$result = mysql_query ($query, $handle);
@ -152,14 +172,14 @@ function elec_options_get ($handle, $election_id) {
return $retval;
}
function elec_verify_elections ($options_nb, $options) {
if ($options_nb === FALSE || $options === FALSE)
function elec_verify_elections ($choices_nb, $choices) {
if ($choices_nb === FALSE || $choices === FALSE)
return FALSE;
if ($options_nb < 1)
if ($choices_nb < 1)
return FALSE;
if (count ($options) < $options_nb || count ($options) <= 1)
if (count ($choices) < $choices_nb || count ($choices) <= 1)
return FALSE;
return TRUE;
@ -201,25 +221,25 @@ function elec_election_get_type ($election) {
return "election";
}
function elec_vote_get_votes_from_post ($options) {
function elec_vote_get_votes_from_post ($choices) {
$votes_array = array ();
foreach ($options as $option) {
$name = "vote".$option["id"];
foreach ($choices as $choice) {
$name = "vote".$choice["id"];
if (isset ($_POST[$name]) && $_POST[$name] != "") {
array_push ($votes_array, $option["id"]);
array_push ($votes_array, $choice["id"]);
}
}
return $votes_array;
}
function elec_verify_vote_is_valid ($options_nb, $options, $vote, $votes_array) {
if ($options_nb == 1)
function elec_verify_vote_is_valid ($choices_nb, $choices, $vote, $votes_array) {
if ($choices_nb == 1)
return "";
if (count ($votes_array) > $options_nb) {
return "you chose ".count ($votes_array)." answers, while you can't choose more than ".$options_nb." answers.";
if (count ($votes_array) > $choices_nb) {
return "you chose ".count ($votes_array)." answers, while you can't choose more than ".$choices_nb." answers.";
}
return "";
@ -263,7 +283,7 @@ function elec_insert_new_vote ($handle, $anon_token_id, $vote) {
$escaped_vote = mysql_real_escape_string ($vote, $handle);
$escaped_anon_token_id = mysql_real_escape_string ($anon_token_id, $handle);
$query = "INSERT INTO " . $votes_table . " (option_id, anon_id)";
$query = "INSERT INTO " . $votes_table . " (choice_id, anon_id)";
$query .= " VALUES ('".$escaped_vote."', '".$escaped_anon_token_id."')";
$result = mysql_query ($query, $handle);
@ -273,21 +293,21 @@ function elec_insert_new_vote ($handle, $anon_token_id, $vote) {
return TRUE;
}
function elec_sql_remove_token ($handle, $election_id, $email, $token) {
function elec_sql_remove_tmp_token ($handle, $election_id, $email, $tmp_token) {
global $members_table;
global $tokens_table;
global $tmp_tokens_table;
if ($handle === FALSE)
return FALSE;
$escaped_election_id = mysql_real_escape_string ($election_id, $handle);
$escaped_email = mysql_real_escape_string ($email, $handle);
$escaped_token = mysql_real_escape_string ($token, $handle);
$escaped_tmp_token = mysql_real_escape_string ($tmp_token, $handle);
$query = "DELETE FROM " . $tokens_table;
$query .= " USING ". $tokens_table . " AS tt, " . $members_table . " AS mt";
$query = "DELETE FROM " . $tmp_tokens_table;
$query .= " USING ". $tmp_tokens_table . " AS tt, " . $members_table . " AS mt";
$query .= " WHERE tt.election_id = '".$escaped_election_id."'";
$query .= " AND tt.token = '".$escaped_token."'";
$query .= " AND tt.tmp_token = '".$escaped_tmp_token."'";
$query .= " AND tt.member_id = mt.id";
$query .= " AND mt.email = '".$escaped_email."'";
@ -334,11 +354,11 @@ function elec_get_results_election ($handle, $election_id) {
$escaped_election_id = mysql_real_escape_string ($election_id, $handle);
$query = "SELECT option_id, COUNT(option_id) AS total_option FROM " . $anon_tokens_table . " AS att, " . $votes_table . " AS vt";
$query = "SELECT choice_id, COUNT(choice_id) AS total_choice FROM " . $anon_tokens_table . " AS att, " . $votes_table . " AS vt";
$query .= " WHERE att.election_id = '".$escaped_election_id."'";
$query .= " AND att.id = vt.anon_id";
$query .= " GROUP BY option_id";
$query .= " ORDER BY total_option DESC";
$query .= " GROUP BY choice_id";
$query .= " ORDER BY total_choice DESC";
$result = mysql_query ($query, $handle);
@ -363,9 +383,9 @@ function elec_get_votes_for_anon_token ($handle, $anon_token_id) {
$escaped_anon_token_id = mysql_real_escape_string ($anon_token_id, $handle);
$query = "SELECT option_id FROM " . $votes_table;
$query = "SELECT choice_id FROM " . $votes_table;
$query .= " WHERE anon_id = '".$escaped_anon_token_id."'";
$query .= " ORDER BY option_id";
$query .= " ORDER BY choice_id";
$result = mysql_query ($query, $handle);
@ -374,7 +394,7 @@ function elec_get_votes_for_anon_token ($handle, $anon_token_id) {
} else {
$result_array = array ();
while ($buffer = mysql_fetch_assoc ($result)) {
$result_array[] = $buffer["option_id"];
$result_array[] = $buffer["choice_id"];
}
$retval = $result_array;
}

View file

@ -2,7 +2,7 @@
function step1_do () {
global $email;
global $token;
global $tmp_token;
$result = "<h2>Step 1/4 - Login</h2>\n";
@ -10,7 +10,7 @@ function step1_do () {
$result .= "<div class=\"votedata\">\n";
$result .= "<p><label for=\"email\">E-mail: </label><input type=\"text\" name=\"email\" value=\"".htmlspecialchars ($email)."\" /></p>\n";
$result .= "<p><label for=\"token\">Vote token: </label><input type=\"text\" name=\"token\" value=\"".htmlspecialchars ($token)."\" /></p>\n";
$result .= "<p><label for=\"tmp_token\">Vote token: </label><input type=\"text\" name=\"tmp_token\" value=\"".htmlspecialchars ($tmp_token)."\" /></p>\n";
$result .= "</div>\n";
return $result;

View file

@ -2,8 +2,8 @@
function step2_do () {
global $election;
global $options_nb;
global $options;
global $choices_nb;
global $choices;
global $vote;
global $votes_array;
@ -13,35 +13,35 @@ function step2_do () {
$result .= "<p>Possible answers:</p>\n";
$result .= "<div class=\"votedata\">\n";
if ($options_nb == 1) {
if ($choices_nb == 1) {
$result .= "<p>\n";
foreach ($options as $option) {
foreach ($choices as $choice) {
$checked = "";
if ($option["id"] == $vote) {
if ($choice["id"] == $vote) {
$checked = " checked=\"checked\"";
}
$result .= "<input type=\"radio\" name=\"vote\" value=\"".$option["id"]."\"".$checked."> ".$option["option"]."<br />\n";
$result .= "<input type=\"radio\" name=\"vote\" value=\"".$choice["id"]."\"".$checked."> ".$choice["choice"]."<br />\n";
}
$result .= "</p>\n";
} else {
$result .= "<p>\n";
foreach ($options as $option) {
foreach ($choices as $choice) {
$checked = "";
if (in_array ($option["id"], $votes_array)) {
if (in_array ($choice["id"], $votes_array)) {
$checked = " checked=\"checked\"";
}
$result .= "<input type=\"checkbox\" name=\"vote".$option["id"]."\"".$checked."> ".$option["option"]."<br />\n";
$result .= "<input type=\"checkbox\" name=\"vote".$choice["id"]."\"".$checked."> ".$choice["choice"]."<br />\n";
}
$result .= "</p>\n";
}
$result .= "</div>\n";
if ($options_nb > 1)
$result .= "<p><em>You can choose up to ".$options_nb." answers.</em></p>\n";
if ($choices_nb > 1)
$result .= "<p><em>You can choose up to ".$choices_nb." answers.</em></p>\n";
return $result;
}

View file

@ -2,30 +2,30 @@
function step3_do () {
global $election;
global $options_nb;
global $options;
global $choices_nb;
global $choices;
global $vote;
global $votes_array;
$result = "<h2>Step 3/4 - Confirm your vote</h2>\n";
$result .= "<p><strong>".$election["question"]."</strong></p>\n";
if (($options_nb == 1 && $vote < 0) ||
($options_nb > 1 && count ($votes_array) >= 1)) {
if (($choices_nb == 1 && $vote < 0) ||
($choices_nb > 1 && count ($votes_array) >= 1)) {
$result .= "<p>You choose to vote for:</p>\n";
$result .= "<div class=\"votedata\">\n";
if ($options_nb == 1) {
if ($choices_nb == 1) {
$option = null;
foreach ($options as $opt) {
$choice = null;
foreach ($choices as $opt) {
if ($opt["id"] == $vote) {
$option = $opt;
$choice = $opt;
break;
}
}
if ($option != null)
$result .= "<p>".$option["option"]."</p>\n";
if ($choice != null)
$result .= "<p>".$choice["choice"]."</p>\n";
else {
$result .= "<p>Unknown vote: ".$vote."</p>\n";
$error .= "There was an unkown vote: ".$vote."<br />\n";
@ -36,9 +36,9 @@ function step3_do () {
$result .= "<ul>\n";
foreach ($votes_array as $vote) {
$found = FALSE;
foreach ($options as $option) {
if ($option["id"] == $vote) {
$result .= "<li>".$option["option"]."</li>\n";
foreach ($choices as $choice) {
if ($choice["id"] == $vote) {
$result .= "<li>".$choice["choice"]."</li>\n";
$found = TRUE;
break;
}

View file

@ -37,11 +37,11 @@ function step4_do () {
global $error;
global $handle;
global $election_id;
global $options_nb;
global $choices_nb;
global $vote;
global $votes_array;
global $email;
global $token;
global $tmp_token;
$result = "";
@ -64,7 +64,7 @@ function step4_do () {
return $result;
}
if ($options_nb == 1) {
if ($choices_nb == 1) {
$res = elec_insert_new_vote ($handle, $anon_token_id, $vote);
@ -88,7 +88,7 @@ function step4_do () {
}
$res = elec_sql_remove_token ($handle, $election_id, $email, $token);
$res = elec_sql_remove_tmp_token ($handle, $election_id, $email, $tmp_token);
if (!$res) {
elec_sql_rollback ($handle);

View file

@ -61,8 +61,8 @@ if ($display) {
}
if ($display) {
$options = elec_options_get ($handle, $election_id);
if ($options === FALSE) {
$choices = elec_choices_get ($handle, $election_id);
if ($choices === FALSE) {
$error .= "The ".elec_election_get_type ($election)." is not properly set up.\n";
$display = FALSE;
}
@ -81,26 +81,26 @@ if ($display) {
echo "<div class=\"votedata\">\n";
foreach ($results as $result) {
$found = FALSE;
foreach ($options as $option) {
if ($option["id"] == $result["option_id"]) {
echo "<em>".$option["option"]."</em> (<strong>".$result["total_option"]."</strong> votes)<br />\n";
$automatic_results[] = $option["option"];
foreach ($choices as $choice) {
if ($choice["id"] == $result["choice_id"]) {
echo "<em>".$choice["choice"]."</em> (<strong>".$result["total_choice"]."</strong> votes)<br />\n";
$automatic_results[] = $choice["choice"];
$found = TRUE;
break;
}
}
if (!$found) {
echo "<em>Unknown value (".$result["option_id"].")</em> (<strong>".$result["total_option"]."</strong> votes)<br />\n";
$automatic_results[] = "Unknown value (".$result["option_id"].")";
$error .= "There was an unkown vote: ".$result["option_id"]."<br />\n";
echo "<em>Unknown value (".$result["choice_id"].")</em> (<strong>".$result["total_choice"]."</strong> votes)<br />\n";
$automatic_results[] = "Unknown value (".$result["choice_id"].")";
$error .= "There was an unkown vote: ".$result["choice_id"]."<br />\n";
}
}
echo "</div>\n";
echo "<p>The automatic result of this ".elec_election_get_type ($election)." is thus:</p>\n";
echo "<div class=\"votedata\">\n";
for ($i = 0; $i < $election["options_nb"]; $i++) {
for ($i = 0; $i < $election["choices_nb"]; $i++) {
echo "<em>".$automatic_results[$i]."</em><br />\n";
}
echo "</div>\n";

View file

@ -59,21 +59,21 @@ if ($election_id == -1) {
if ($step > 1) {
$email = "";
$token = "";
if (isset ($_POST["email"]) && isset ($_POST["token"])) {
$tmp_token = "";
if (isset ($_POST["email"]) && isset ($_POST["tmp_token"])) {
$email = $_POST["email"];
$token = $_POST["token"];
$tmp_token = $_POST["tmp_token"];
}
if (!elec_verify_email_token ($handle, $election_id, $email, $token)) {
if (!elec_verify_email_tmp_token ($handle, $election_id, $email, $tmp_token)) {
$step = 1;
$error .= "The e-mail address and token you gave do not match an existing voter.<br />\n";
} else {
$options_nb = $election["options_nb"];
$options = elec_options_get ($handle, $election_id);
$choices_nb = $election["choices_nb"];
$choices = elec_choices_get ($handle, $election_id);
if (!elec_verify_elections ($options_nb, $options)) {
if (!elec_verify_elections ($choices_nb, $choices)) {
$error .= "The ".elec_election_get_type ($election)." is not properly set up.\n";
$step = 0;
}
@ -86,7 +86,7 @@ if (isset ($election) && $election !== FALSE) {
}
if ($step >= 2) {
if ($options_nb == 1) {
if ($choices_nb == 1) {
$votes_array = array ();
if (isset ($_POST["vote"]))
@ -96,11 +96,11 @@ if ($step >= 2) {
} else {
$votes_array = elec_vote_get_votes_from_post ($options);
$votes_array = elec_vote_get_votes_from_post ($choices);
$vote = -1;
}
$res = elec_verify_vote_is_valid ($options_nb, $options, $vote, $votes_array);
$res = elec_verify_vote_is_valid ($choices_nb, $choices, $vote, $votes_array);
if ($res != "") {
$error .= "The vote you made is not valid: ".$res."<br />\n";
@ -150,15 +150,15 @@ echo $result;
if ($step != $max_step && $step >= 1) {
if ($step > 1) {
echo " <input type=\"hidden\" name=\"email\" value=\"".$email."\">\n";
echo " <input type=\"hidden\" name=\"token\" value=\"".$token."\">\n";
echo " <input type=\"hidden\" name=\"tmp_token\" value=\"".$tmp_token."\">\n";
}
if ($step > 2) {
if ($options_nb == 1)
if ($choices_nb == 1)
echo " <input type=\"hidden\" name=\"vote\" value=\"".$vote."\">\n";
else {
foreach ($options as $option) {
$name = "vote".$option["id"];
if (in_array ($option["id"], $votes_array))
foreach ($choices as $choice) {
$name = "vote".$choice["id"];
if (in_array ($choice["id"], $votes_array))
$value = "on";
else
$value = "";

View file

@ -53,17 +53,17 @@ if ($display) {
}
if ($display) {
$options = elec_options_get ($handle, $election_id);
if ($options === FALSE) {
$choices = elec_choices_get ($handle, $election_id);
if ($choices === FALSE) {
$error .= "The ".elec_election_get_type ($election)." is not properly set up.\n";
$display = FALSE;
}
}
if ($display) {
$options_name = array ();
foreach ($options as $option) {
$options_name[$option["id"]] = $option["option"];
$choices_name = array ();
foreach ($choices as $choice) {
$choices_name[$choice["id"]] = $choice["choice"];
}
echo "<p>Please look at the <a href=\"results.php?election_id=".$election_id."\">automatic results</a> to have a summary of the votes.</p>\n";
@ -90,11 +90,11 @@ if ($display) {
echo "Can not access votes<br />for this anonymous token.";
$error .= "Can not get votes for anonymous token ".$anon_token["anon_token"]."<br />\n";
} else if (count ($votes) == 0) {
echo "This member chose to vote for<br />none of the possible options.";
echo "This member chose to vote for<br />none of the possible choices.";
} else {
foreach ($votes as $vote) {
if (array_key_exists ($vote, $options_name))
echo "<em>".$options_name[$vote]."</em><br />\n";
if (array_key_exists ($vote, $choices_name))
echo "<em>".$choices_name[$vote]."</em><br />\n";
else {
echo "<em>Unknown value (".$vote.")</em><br />\n";
$error .= "There was an unkown vote for anonymous token ".$anon_token["anon_token"].": ".$vote."<br />\n";