.
*/
error_reporting(E_ALL);
include("./include/include.php");
require_once(FILESYSTEMROOTPATH."jc/include/classes/DefaultLayout.php");
require_once(FILESYSTEMROOTPATH."jc/include/classes/MyCheckboxField.php");
require_once(FILESYSTEMROOTPATH."jc/include/classes/AbstractForm3.php");
//require_once(FILESYSTEMROOTPATH."include/form/AbstractForm.php");
/**
* Helper classes
*/
class RankedVoteBallotForm extends AbstractForm3 {
private $Options;
public function __construct(Layout $layout, IModel $model, $Options) {
parent::__construct($layout, $model, 'form', array('Vote'), 'true');
$this->Options = $Options;
}
public function save(IModel $model) {
$poll_id = $_POST['poll_id'];
//delegate has votes?
$rvbService = $GLOBALS['ClassFactory']->getRankedVoteBallotsService();
$result = $rvbService->getMyVotes($_SESSION['sess_uid'], $model->getRankedVote_id());
if ($result['my_votes'] <= 0){
$this->layout->echoln('
You have no more votes left!
');
return;
}
//save an empty vote to take the ticket.
$ticket = $rvbService->getTicket($poll_id, $_POST['bodyCode'], $_POST['delegate']);
$ranking = $_POST["ranking"];
$all_ballots = array();
foreach($this->Options as $option){
//create new ballot.
$option_id = $option['id'];
$rvballot = new RankedVoteBallots('');
$rvballot->setRankedVoteOption_id($option['id']);
$rvballot->setRankedVote_id($poll_id);
$rvballot->setRanking($ranking[$option_id]); //if not selected, then ranking = N + 1
$rvballot->setTicket($ticket);
$rvballot->setBodyCode($_POST['bodyCode']);
$rvballot->setDelegate($_POST['delegate']);
$all_ballots[] = $rvballot;
}
$rvbService->saveMultiple($all_ballots);
$this->layout->redirect('ranked_vote2.php?pid='.$poll_id);
}
}
/**
* End of helper classes
*/
$layout = new DefaultLayout(Access::BOARD, "./jc/");
$layout->init();
$layout->addJavascript('js/votes_check.js');
$ns = $GLOBALS['ClassFactory']->getNotificationsService();
//get id if set
if (isset($_GET['pid'])){
$poll_id = $_GET['pid'];
$poll = $GLOBALS['ClassFactory']->getRankedVoteService()->load($poll_id);
$ns->seen($poll_id,'RankedVote');
unset($_SESSION['JC_MODULE']['Notifications']);
}
else{
$layout->redirect('ranked_vote1.php');
}
if (date("Y-m-d H:i:s") > $poll->getClose()){
$layout->echoln('Ranked Voting has closed!');
$layout->echoln('
Back');
$layout->page_footer();
exit();
}elseif (date("Y-m-d H:i:s") < $poll->getOpen()){
$layout->echoln('Ranked Voting has not opened yet!');
$layout->echoln('
Back');
$layout->page_footer();
exit();
}
$rvbService = $GLOBALS['ClassFactory']->getRankedVoteBallotsService();
$registered = $rvbService->isRegistered($_SESSION['sess_uid']);
if($registered == false){
$layout->echoln('You have not been registered!');
$layout->page_footer();
exit(0);
}
$result = $rvbService->getMyVotes($_SESSION['sess_uid'], $poll_id);
if (isset($result["error"])){
$layout->echoln($result["error"]);
$layout->page_footer();
exit(0);
}
$votesLeft = $result['my_votes'];
$cast = $result['votes_cast'];
$local_delegates = $result['local_delegates'];
$local_votes = $result['local_votes'];
$local_votes_cast = $result['local_votes_cast'];
$myBodyCode = $_SESSION['JC_MODULE']['BodyCode'];
$myBodyName = $_SESSION['JC_MODULE']['BodyName'];
if (empty($_POST)){
$layout->echoln('
'.$myBodyName.' has '.$local_votes.' votes and '.$local_delegates.' delegate(s).
');
if( $local_votes%$local_delegates==0 ) $layout->echoln('Each delegate can cast '.$local_votes/$local_delegates.' vote(s)
'.$myBodyName.' has already cast: '.$local_votes_cast.' vote(s). You have already cast: '.$cast.' vote(s).
');
$layout->echoln('Maximum amount of votes you can still cast: '.$votesLeft.' vote(s)