. */ 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(); } } ?>