u-vote.eu/uVote/api/votes/votes.php

58 lines
2.7 KiB
PHP

<?php
class votes {
public static function getAllVotesOfGroup($groupid){
$con = new \SYSTEM\DB\Connection(new \DBD\uVote());
$res = $con->prepare( 'selVoteByGrp',
'SELECT * FROM `uvote_votes` WHERE `group` = ?;',
array($groupid));
$result = array();
while($r = $res->next()){
$result[] = $r;}
return $result;
}
private static function getProgessbar($percentage){
$vars = array('percentage' => $percentage);
return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'default_page/closedvoteinfo.tpl'), $vars);
}
public static function get_openinfo($poll_ID){
$con = new \SYSTEM\DB\Connection(new \DBD\uVote());
$res = $con->prepare( 'selVoteByID',
'SELECT * FROM `uvote_votes` WHERE `ID` = ?;',
array($poll_ID));
$res = $res->next();
$result = array();
$parties = array('cdu', 'spd', 'fdp', 'b90', 'linke');
$pb = "";
$part = $con->prepare( 'selVoteByPoll_ID',
'SELECT * FROM `uvote_votes_per_party` WHERE `poll_ID` =' .$poll_ID.';',
array($party, $votes_pro, $votes_contra, $nr_attending));
foreach($parties as $party){
$vars = array('votes_pro' => $party['votes_pro'], 'votes_contra' => $party['votes_contra'], 'nr_attending' => $party['nr_attending'],);
$pb .= self::getProgessbar($votes_pro);
}
$result['graph_right'] = $pb;
$result = array_merge($result,$res, $part);
return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'default_page/openvoteinfo.tpl'),$result);
}
public static function write_vote($poll_ID, $vote){
if(!\SYSTEM\SECURITY\Security::isLoggedIn()){
throw new ERROR("You need to be logged in.");}
$con = new \SYSTEM\DB\Connection(new \DBD\uVote());
$res = $con->prepare( 'selVote',
'SELECT * FROM `uvote_data` WHERE `poll_ID` = ? AND user_ID = ?;',
array($poll_ID, \SYSTEM\SECURITY\Security::getUser()->id));
if ($res->next()){
throw new ERROR('You already voted!');}
$res = $con->prepare( 'insertVote',
'INSERT INTO uvote_data
VALUES (?, ?, ?);',
array($poll_ID, \SYSTEM\SECURITY\Security::getUser()->id, $vote));
return JsonResult::ok();
}
}