Adding the BLT script
This file seems to produce a format for a special program to view the results. I'm adding it, as it's referenced from one of the voting pages.
This commit is contained in:
		
							parent
							
								
									78387ca5e5
								
							
						
					
					
						commit
						c99af90993
					
				
					 1 changed files with 134 additions and 0 deletions
				
			
		
							
								
								
									
										134
									
								
								foundation.gnome.org/vote/blt.wml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								foundation.gnome.org/vote/blt.wml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,134 @@ | ||||||
|  | <?php | ||||||
|  | require_once ("include/election-sql.php"); | ||||||
|  | 
 | ||||||
|  | /* .blt file format, used by the electoral reform society. | ||||||
|  |  * Format is as follows: | ||||||
|  |  * Line 1: N candidates, M seats | ||||||
|  | 4 2 | ||||||
|  |  * Following lines (one per ballot): Each vote has a weight of 1, followed by  | ||||||
|  |  * the candidates in order of preference, terminated by 0. Candidates are  | ||||||
|  |  * specified in order after the ballots, starting with candidate 1. | ||||||
|  | 1 p1 p2 p3 p4 ... 0 | ||||||
|  | ... | ||||||
|  |  * End of ballots marker: | ||||||
|  | 0 | ||||||
|  |  * List of candidates | ||||||
|  | "Dave Neary" | ||||||
|  | "Niels Breet" | ||||||
|  | "Henri Bergius" | ||||||
|  | "Andre Klapper" | ||||||
|  |  * Election title | ||||||
|  | "Favourite maemo.org staff member 2009" | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | // We'll be outputting a test file | ||||||
|  | header('Content-type: text/plain'); | ||||||
|  | 
 | ||||||
|  | // It will be called election.blt | ||||||
|  | header('Content-Disposition: attachment; filename="election.blt"'); | ||||||
|  | 
 | ||||||
|  | $display = TRUE; | ||||||
|  | $error = ""; | ||||||
|  | 
 | ||||||
|  | $handle = elec_sql_open (); | ||||||
|  | if ($handle === FALSE) { | ||||||
|  |   $error .= "Can not open the database.\n"; | ||||||
|  |   $display = FALSE; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | if ($display && isset ($_GET["election_id"]) && is_numeric ($_GET["election_id"])) | ||||||
|  |   $election_id = $_GET["election_id"]; | ||||||
|  | else { | ||||||
|  |   $election_id = -1; | ||||||
|  |   $error .= "No election specified.\n"; | ||||||
|  |   $display = FALSE; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | if ($display && $election_id >= 0) { | ||||||
|  |   $election = elec_get_election ($handle, $election_id); | ||||||
|  |   if ($election === FALSE) { | ||||||
|  |     $error .= "The specified election/referendum does not exist.\n"; | ||||||
|  |     $display = FALSE; | ||||||
|  |   } else if (!elec_election_has_ended ($election)) { | ||||||
|  |     $error .= "The voting period for the specified ".elec_election_get_type ($election)." starts on ".$election["voting_start"]." (UTC) and ends on ".$election["voting_end"]." (UTC). It is not possible to see the results now.\n"; | ||||||
|  |     $display = FALSE; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* Get election, choices, anon tokens & votes */ | ||||||
|  | if ($display) { | ||||||
|  |   $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 (isset ($election) && $election !== FALSE) { | ||||||
|  |   // Header: # candidates, # seats | ||||||
|  |   echo count($choices)." ".$election["choices_nb"]."\n"; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | if ($display) { | ||||||
|  |   $anon_tokens = elec_get_anon_tokens_for_election ($handle, $election_id); | ||||||
|  |   if ($anon_tokens === FALSE) { | ||||||
|  |     $error .= "Can not get the anonymous tokens for this ".elec_election_get_type ($election).".\n"; | ||||||
|  |     $display = FALSE; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | if ($display) { | ||||||
|  |   $choices_name = array (); | ||||||
|  |   $choices_pos = array (); | ||||||
|  |   $index=1; | ||||||
|  |   // Record names and positions of candidates | ||||||
|  |   foreach ($choices as $choice) { | ||||||
|  |     $choices_pos[$choice["id"]] = $index++; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   // One line per ballot: weight, preferences, 0 to end.  | ||||||
|  |   foreach ($anon_tokens as $anon_token) { | ||||||
|  |     $votes = elec_get_votes_for_anon_token ($handle, $anon_token["id"]); | ||||||
|  |     if ($votes === FALSE) { | ||||||
|  |       echo "1 999 0\n"; | ||||||
|  |       $error .= "Can not get votes for anonymous token ".$anon_token["anon_token"]."\n"; | ||||||
|  |     } else if (count ($votes) == 0) { | ||||||
|  |       echo "1 0\n"; | ||||||
|  |     } else { | ||||||
|  |       echo "1 "; | ||||||
|  |       foreach ($votes as $vote) { | ||||||
|  |         if (array_key_exists ($vote["choice_id"], $choices_pos)) | ||||||
|  |           echo $choices_pos[$vote["choice_id"]]." "; | ||||||
|  |         else { | ||||||
|  |           echo "999 "; | ||||||
|  |           $error .= "There was an unkown vote for anonymous token ".$anon_token["anon_token"].": ".$vote["choice_id"]."\n"; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |       echo "0\n"; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   // end of ballots marker  | ||||||
|  |   echo "0\n"; | ||||||
|  | 
 | ||||||
|  |   // Names of candidates | ||||||
|  |   foreach ($choices as $choice) { | ||||||
|  |     echo "\"".$choice["choice"]."\"\n"; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   // Title of election | ||||||
|  |   echo "\"".$election["name"]."\"\n"; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | if (isset ($error) && $error != "") { | ||||||
|  |   echo "".$error."\n"; | ||||||
|  |   echo "If you don't understand the error, you should probably contact the Maemo Community mailing list, which can be reached at maemo-community@maemo.org.\n"; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | if (isset ($handle)) | ||||||
|  |   elec_sql_close ($handle); | ||||||
|  | 
 | ||||||
|  | ?> | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Tobias Mueller
						Tobias Mueller