. */ /** * CIA Database Access Object. This class provides functionality to * load and save CIA sentences. */ require_once(FILESYSTEMROOTPATH."include/classes/IDao.php"); require_once(FILESYSTEMROOTPATH."jc/include/model/Proposals_management.php"); class Proposals_managementDao implements IDao { /** MySQL object */ private $mysql; /*TODO*/ /*load by latest agora!*/ /** * Default constructor */ public function __construct(MySQL $mysql) { $this->mysql = $mysql; } /** * Load CIA sentence by id * * @param id * @return */ public function load($id) { $query = "SELECT * FROM proposals_management WHERE `id`='".$id."'"; if( $this->mysql->query($query) ) { return new Proposals_management ($this->mysql->fetchArray()); }else { return array(); } } public function loadByPID($pid, $session) { $query = "SELECT * FROM proposals_management WHERE `proposal_id`='".$pid."' AND `session_type`='".$session."'"; if( $this->mysql->query($query) ) { if ($data = $this->mysql->fetchArray()){ return new Proposals_management($data); } } return NULL; } /** * Load all Proposals_management * * @return array of sentences */ public function loadAll() { $query = "SELECT * FROM proposals_management"; if( $this->mysql->query($query) ) { $ret = array(); while( $row = $this->mysql->fetchArray() ) { $ret[ $row['id'] ] = new Proposals_management($row); } return $ret; }else { return array(); } } public function loadVote($agora_id){ $query = 'SELECT pm.* , p.title FROM `proposals_management` AS `pm` , proposals AS `p` WHERE p.id = pm.proposal_id AND p.status >= 8 AND pm.session_type = "Plenary" AND p.agora_id='.$agora_id; //8=Plenary if( $this->mysql->query($query) ) { $ret = array(); while( $row = $this->mysql->fetchArray() ) { $row['manage']='Manage'; $row['percentage'] = 0; $row['results']='Results'; $ret[ $row['id'] ] = $row; } //cannot be done inside above loop, includes mysql query $vService = $GLOBALS['ClassFactory']->getVotesService(); foreach ($ret as $id => $row){ $already_cast = $vService->votes_cast($ret[$id]['proposal_id'],'proposal'); $votes_available = $vService->votes_to_be_cast(); $percentage = sprintf("%.2f",100*$already_cast/$votes_available); $ret[$id]['percentage']=$percentage; } return $ret; }else { return array(); } } public function getResults($agora_id, $hide) { $query = 'SELECT pm.* , p.title FROM proposals_management AS pm, proposals AS p WHERE pm.proposal_id=p.id AND p.agora_id='.$agora_id.' AND pm.session_type="Plenary" AND pm.close < NOW()'; // AND pm.result IS NOT NULL if($hide){ $query .= ' AND pm.published=1'; } if( $this->mysql->query($query) ) { $results = array(); while ($row = $this->mysql->fetchArray()){ if ($hide){ if ($row['result'] == 'Agora Accepted'){ $row['result'] = 'Accepted'; } elseif($row['result'] == 'Agora Rejected'){ $row['result'] = 'Rejected'; } else{ 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.00"; $row['p2'] = "0.00"; $row['p3'] = "0.00"; $row['p4'] = "0.00"; }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']); $row['p4'] = sprintf("%.2f",100*$row['votes_cast'] / $row['votes_available']); } if($row['bodies_available'] == 0){ $row['p5'] = "0.00"; } else{ $row['p5'] = sprintf("%.2f",100*$row['bodies_present'] / $row['bodies_available']); } $row['detail'] = 'Votes'; $results[$row['id']] = $row; } return $results; } return NULL; } /** * Save or update Proposals_management: * @param Proposals_management object with the data * @return boolean true in case of success, false otherwise */ public function saveOrUpdate(IModel $proposals_management) { $query=""; $recordID=$proposals_management->getId(); if($recordID==NULL) { $query.="INSERT INTO `proposals_management` SET "; } else { $query.="UPDATE `proposals_management` SET "; } $query .="`proposal_id` = '".$this->mysql->escape($proposals_management->getProposal_id())."', "; $query .="`chairman_uid` = '".$this->mysql->escape($proposals_management->getChairman_uid())."', "; $query .="`jc_member_uid` = '".$this->mysql->escape($proposals_management->getJc_member_uid())."', "; $query .="`session_type` = '".$this->mysql->escape($proposals_management->getSession_type())."', "; $query .="`session_info` = '".$this->mysql->escape($proposals_management->getSession_info())."', "; $query .="`result` = '".$this->mysql->escape($proposals_management->getResult())."', "; $query .="`bodies_available` = '".$this->mysql->escape($proposals_management->getBodies_available())."', "; $query .="`bodies_present` = '".$this->mysql->escape($proposals_management->getBodies_present())."', "; $query .="`votes_available` = '".$this->mysql->escape($proposals_management->getVotes_available())."', "; $query .="`votes_in_favour` = '".$this->mysql->escape($proposals_management->getVotes_in_favour())."', "; $query .="`votes_against` = '".$this->mysql->escape($proposals_management->getVotes_against())."', "; $query .="`votes_abstention` = '".$this->mysql->escape($proposals_management->getVotes_abstention())."', "; $query .="`open` = '".$this->mysql->escape($proposals_management->getOpen())."', "; $query .="`close` = '".$this->mysql->escape($proposals_management->getClose())."', "; $query .="`majority` = '".$this->mysql->escape($proposals_management->getMajority())."', "; $query .="`published` = '".$this->mysql->escape($proposals_management->getPublished())."', "; $query .="`summary` = '".$this->mysql->escape($proposals_management->getSummary())."'"; if($recordID!=NULL) { $query.=" where `id` = ".$recordID; } //echo $query; return $this->mysql->query($query); } } ?>