. */ /** * Agorae Database Access Object. This class provides functionality to * load and save Agorae title. */ require_once(FILESYSTEMROOTPATH."include/classes/IDao.php"); require_once(FILESYSTEMROOTPATH."jc/include/model/Rollcalls.php"); class RollcallsDao implements IDao { /** MySQL object */ private $mysql; /** * Default constructor */ public function __construct(MySQL $mysql) { $this->mysql = $mysql; } /** * Load Rollcalls by id * * @param id * @return */ public function load($id) { $query = "SELECT * FROM `rollcalls` WHERE `id`='".$id."'"; if( $this->mysql->query($query) ) { return new Rollcalls($this->mysql->fetchArray()); }else { return array(); } } public function loadByAgora($agora_id, $hide) { $query = 'SELECT * FROM `rollcalls` WHERE `agora_id`="'.$agora_id.'"'; if( $this->mysql->query($query) ) { $ret = array(); while( $row = $this->mysql->fetchArray() ) { if ($hide){ if($row['result']== 'Withdrawn'){ continue; } } $row['edit']='Edit'; $row['results']='Results'; $row['percentage'] = 0; if(trim($row['description'])) $row['description'] = 'Show/Hide Description
'; else $row['description'] = "No description available."; $ret[ $row['id'] ] = $row; } $vService = $GLOBALS['ClassFactory']->getVotesService(); foreach ($ret as $id => $row){ $already_cast = $vService->votes_cast($id,'rollcall'); $votes_available = $vService->votes_to_be_cast(); if ($votes_available != 0){ $percentage = sprintf("%.2f",100*$already_cast/$votes_available); }else{ $percentage = '0.00'; } $ret[$id]['percentage']=$percentage; } return $ret; }else { return array(); } } public function loadOpen(){ $aid = $_SESSION['JC_MODULE']['AgoraId'] ; $query = "SELECT *,closemysql->query($query) ) { $ret = array(); while( $row = $this->mysql->fetchArray() ) { $row['view']='View'; $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 getResults($agora_id, $hide){ $rows = $this->loadByAgora($agora_id, $hide); $results = array(); foreach($rows as $row){ if ($hide){ if ($row['result'] == ''){ continue; } if($row['result']== 'Withdrawn'){ continue; } if($row['published']==0){ continue; } } $row['view'] = 'view'; $row['votes_cast'] = $row['votes_in_favour'] + $row['votes_against'] + $row['votes_abstention']; if ($row['votes_cast'] == 0){ $row['p1'] = 0; $row['p2'] = 0; $row['p3'] = 0; }else{ $row['p1'] = sprintf("%.2f",100*$row['votes_in_favour'] / $row['votes_cast']); $row['p2'] = sprintf("%.2f",100*$row['votes_against'] / $row['votes_cast']); $row['p3'] = sprintf("%.2f",100*$row['votes_abstention'] / $row['votes_cast']); } if ($row['votes_available'] == 0){ $row['p4'] = 0; }else{ $row['p4'] = sprintf("%.2f",100*$row['votes_cast'] / $row['votes_available']); } if($row['bodies_available']==0){ $row['p5'] = 0; }else{ $row['p5'] = sprintf("%.2f",100*$row['bodies_present'] / $row['bodies_available']); } $row['detail'] = 'Votes'; if ($row['result'] == 'Acclamation'){ $row['result'] = 'Accepted By Acclamation'; $row['detail'] = '-'; } $results[$row['id']] = $row; } return $results; } /** * Save or update Rollcalls: */ public function saveOrUpdate(IModel $rollcall) { $query=""; $recordID=$rollcall->getId(); if($recordID==NULL) { $query.="INSERT INTO `rollcalls` SET "; } else { $query.="UPDATE `rollcalls` SET "; } $query .="`creator_uid` = '".$this->mysql->escape($rollcall->getCreator_uid())."', "; $query .="`agora_id` = '".$this->mysql->escape($rollcall->getAgora_id())."', "; $query .="`title` = '".$this->mysql->escape($rollcall->getTitle())."', "; $query .="`description` = '".$this->mysql->escape($rollcall->getDescription())."', "; $query .="`submit_date` = '".$this->mysql->escape($rollcall->getSubmit_date())."', "; $query .="`result` = '".$this->mysql->escape($rollcall->getResult())."', "; $query .="`bodies_available` = '".$this->mysql->escape($rollcall->getBodies_available())."', "; $query .="`bodies_present` = '".$this->mysql->escape($rollcall->getBodies_present())."', "; $query .="`votes_available` = '".$this->mysql->escape($rollcall->getVotes_available())."', "; $query .="`votes_in_favour` = '".$this->mysql->escape($rollcall->getVotes_in_favour())."', "; $query .="`votes_against` = '".$this->mysql->escape($rollcall->getVotes_against())."', "; $query .="`votes_abstention` = '".$this->mysql->escape($rollcall->getVotes_abstention())."', "; $query .="`open` = '".$this->mysql->escape($rollcall->getOpen())."', "; $query .="`close` = '".$this->mysql->escape($rollcall->getClose())."', "; $query .="`majority` = '".$this->mysql->escape($rollcall->getMajority())."', "; $query .="`published` = '".$this->mysql->escape($rollcall->getPublished())."'"; if($recordID!=NULL) { $query.=" where `id` = ".$recordID; } //echo $query; return $this->mysql->query($query); } public function get_last_id(){ return $this->mysql->getInsertId(); } } ?>