.
*/
/**
* 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
'.nl2br($row['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();
}
}
?>