.
*/
require_once(FILESYSTEMROOTPATH."include/classes/IDao.php");
require_once(FILESYSTEMROOTPATH."jc/include/model/Polls.php");
class PollsDao implements IDao {
/** MySQL object */
private $mysql;
/**
* Default constructor
*/
public function __construct(MySQL $mysql) {
$this->mysql = $mysql;
}
/**
* Load Polls by id
*
* @param id
* @return
*/
public function load($id) {
$query = "SELECT * FROM `polls` WHERE `id`='".$id."'";
if( $this->mysql->query($query) ) {
return new Polls($this->mysql->fetchArray());
}else {
return array();
}
}
public function loadByAgora($agora_id) {
$query = 'SELECT * FROM `polls` WHERE `agora_id`="'.$agora_id.'"';
if( $this->mysql->query($query) ) {
$ret = array();
while( $row = $this->mysql->fetchArray() ) {
$row['edit'] = 'Edit';
if (date("Y-m-d H:i:s") > $row['close']){
$row['results'] = 'Results';;
}
else{
$row['results'] = '-';
}
$row['percentage'] = 0;
$row['pollOptions'] = 'Options';
$ret[$row['id']] = $row;
}
foreach ($ret as $id => $row){
$already_cast = $this->pballots_cast($id);
$votes_available = $this->pballots_to_be_cast();
$percentage = sprintf("%.2f",100*$already_cast/$votes_available);
$ret[$id]['percentage']=$percentage;
}
return $ret;
}else {
return array();
}
}
public function pballots_to_be_cast(){
$aid = $_SESSION['JC_MODULE']['AgoraId'];
$query = 'SELECT SUM(numberOfVotes) AS to_be_cast FROM `voting_numberofvotes` WHERE agora_id='.$aid.' AND BodyCode IN
(SELECT DISTINCT bodyCode FROM `voting_delegates` WHERE `registered`=1 AND `departed`=0 AND `status`="delegate" AND `agora_id`='.$aid.')';
if( $this->mysql->query($query) ) {
$result = $this->mysql->fetchArray();
}else { return '';
}
return $result['to_be_cast'];
}
public function pballots_cast($id){
$aid = $_SESSION['JC_MODULE']['AgoraId'];
$query = 'SELECT COUNT(DISTINCT `ticket`) as total_tickets FROM `pollBallots` WHERE poll_id='.$id;
if( $this->mysql->query($query) ) {
$result = $this->mysql->fetchArray();
}else { return '';
}
return $result['total_tickets'];
}
public function loadOpen($agora_id){
$query = 'SELECT *,closemysql->query($query) ) {
$ret = array();
while( $row = $this->mysql->fetchArray() ) {
$row['pollOptions'] = 'Options';
$row['vote'] = 'Vote';
$row['check'] = 'Check';
if($row['hasClosed']==0){
$row['vote']=''.$row['vote'].'';
$row['title'] = ''.$row['title'].'';
}
$ret[$row['id']] = $row;
}
return $ret;
}else {
return array();
}
}
public function countVotes($id)
{
$query = "SELECT `pollOption_id`, count(*) AS `votes` FROM `pollBallots` WHERE `poll_id`=".$id." GROUP BY `pollOption_id` HAVING `pollOption_id`>0";
if( $this->mysql->query($query) ) {
$res = array();
while( $row = $this->mysql->fetchArray() ) {
$res[] = $row;
}
foreach($res as $pollOption){
$q = "UPDATE `pollOptions` SET `votes`=".$pollOption['votes'].' WHERE `id`='.$pollOption['pollOption_id'];
$this->mysql->query($q);
}
}
}
public function loadClosed($agora_id){
$query = 'SELECT * FROM `polls` WHERE `agora_id`="'.$agora_id.'" AND `close` < NOW() AND `published`=1';
if( $this->mysql->query($query) ) {
$ret = array();
while( $row = $this->mysql->fetchArray() ) {
$row['pollOptions'] = 'Options';
$row['view'] = 'View';
$ret[$row['id']] = $row;
}
return $ret;
}else {
return array();
}
}
public function getMyLocal($uid){
$query = 'SELECT * FROM `voting_delegates` WHERE `uid`="'.$uid.'" AND agora_id='.$_SESSION['JC_MODULE']['AgoraId'];
if( $this->mysql->query($query) ) {
$result = $this->mysql->fetchArray();
return $result['bodyCode'];
}else {
return '';
}
}
/**
* Save or update Polls:
* @param object with the data
* @return boolean true in case of success, false otherwise
*/
public function saveOrUpdate(IModel $poll) {
$query="";
$recordID=$poll->getId();
if($recordID==NULL)
{
$query.="INSERT INTO `polls` SET ";
}
else
{
$query.="UPDATE `polls` SET ";
}
$query .="`agora_id` = '".$this->mysql->escape($poll->getAgora_id())."', ";
$query .="`title` = '".$this->mysql->escape($poll->getTitle())."', ";
$query .="`maxVotes` = '".$this->mysql->escape($poll->getMaxVotes())."', ";
$query .="`published` = '".$this->mysql->escape($poll->getPublished())."', ";
$query .="`open` = '".$this->mysql->escape($poll->getOpen())."', ";
$query .="`close` = '".$this->mysql->escape($poll->getClose())."'";
if($recordID!=NULL)
{
$query.=" where `id` = ".$recordID;
}
return $this->mysql->query($query);
}
public function get_last_id(){
return $this->mysql->getInsertId();
}
}
?>