. */ /** * 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/Amendments.php"); class AmendmentsDao implements IDao { /** MySQL object */ private $mysql; /*TODO * load by proposal_id or proposals_sentence_ids !! */ /** * Default constructor */ public function __construct(MySQL $mysql) { $this->mysql = $mysql; } /** * Load Amendments by id * * @param id * @return */ public function load($id) { $query = "SELECT * FROM amendments WHERE `id`='".$id."'"; if( $this->mysql->query($query) ) { return new Amendments($this->mysql->fetchArray()); }else { return array(); } } public function loadByProposalId_Order($proposal_id, $order, $accepted){ if ($accepted){ $query = "SELECT * FROM `amendments` WHERE `proposal_id`='".$proposal_id."' AND `order`=".$order." AND `status`='Accept' ORDER BY `id`"; //comment: by design, if multiple amendments exist, the latest will be dispalyed, wich should have the accumulated changes }else{ $query = "SELECT * FROM `amendments` WHERE `proposal_id`='".$proposal_id."' AND `order`=".$order." ORDER BY `id`"; } if( $this->mysql->query($query) ) { $ret = array(); while( $row = $this->mysql->fetchArray() ) { $ret[] = $row; } return $ret; }else { return array(); } } public function saveHeader(Amendments $model, $type){ $proposal_id = $model->getProposal_id(); if($type == 'title'){ $where = "`order`='".$model->getOrder()."' AND "; $query2 = "UPDATE `amendments` SET `title`='".$this->mysql->escape($model->getTitle())."', `title_status`='Edit' WHERE `proposal_id`='".$model->getProposal_id()."' AND `order`='".$model->getOrder()."'"; $getter='getTitle'; $setter='setTitle'; } elseif($type == 'title2'){ $where = "`order`='".$model->getOrder()."' AND `order2`='".$model->getOrder2()."' AND "; $query2 = "UPDATE `amendments` SET `title2`='".$this->mysql->escape($model->getTitle2())."', `title2_status`='Edit' WHERE `proposal_id`='".$model->getProposal_id()."' AND `order`='".$model->getOrder(); $query2 .="' AND `order2`='".$model->getOrder2()."'"; $getter='getTitle2'; $setter='setTitle2'; } elseif($type == 'article_title'){ $where = "`order`='".$model->getOrder()."' AND `order2`='".$model->getOrder2()."' AND `article`='".$model->getArticle()."' AND "; $query2 = "UPDATE `amendments` SET `article_title`='".$this->mysql->escape($model->getArticle_title())."', `article_title_status`='Edit' WHERE `proposal_id`='".$model->getProposal_id()."' AND `order`='".$model->getOrder(); $query2 .="' AND `order2`='".$model->getOrder2()."' AND `article`='".$model->getArticle()."'"; $getter='getArticle_title'; $setter='setArticle_title'; } elseif($type == 'paragraph'){ //nothing to save in paragraph return true; } $getter2 = $getter.'_status'; $setter2 = $setter.'_status'; //insert not edited [orignial sentences] $result = $this->selectNotEdited($proposal_id, $where); foreach ($result as $res1){ $res = new Amendments(''); $res->copy_from_cia_array($res1); $res->setChange_type($model->getChange_type()); $res->setProposal_id($model->getProposal_id()); $res->setProposals_sentence_id(0); $res->setProposer_uid($model->getProposer_uid()); $res->setSession_type($model->getSession_type()); $res->setStatus($model->getStatus()); $res->$setter($model->$getter()); $res->$setter2($model->$getter2()); if (!$this->saveOrUpdate($res)){ echo mysql_error(); return false; }// save it! } //insert edited sentences [proposal sentences] $result = $this->selectEdited($proposal_id, $where); foreach ($result as $res1){ $res = new Amendments(''); $res->copy(new Proposals_sentences($res1)); $res->setChange_type($model->getChange_type()); $res->setProposer_uid($model->getProposer_uid()); $res->setSession_type($model->getSession_type()); $res->setStatus($model->getStatus()); $res->$setter($model->$getter()); $res->$setter2($model->$getter2()); if (!$this->saveOrUpdate($res)){ echo mysql_error(); return false; }// save it! } return true; } private function selectEdited($proposal_id, $where){ $q = "SELECT * FROM `proposals_sentences` WHERE ".$where." `proposal_id`=".$proposal_id; $this->mysql->query($q); $res = array(); while ($row = $this->mysql->fetchArray()){ $res[$row['id']] = $row; } return $res; } private function selectNotEdited($proposal_id, $where){ $q = "SELECT * FROM `CIA` WHERE ".$where." `id` NOT IN (SELECT `sentence_id` FROM `proposals_sentences` WHERE `proposal_id`='".$proposal_id."')"; $this->mysql->query($q); $res = array(); while ($row = $this->mysql->fetchArray()){ $res[$row['id']] = $row; } return $res; } /** * Save or update Amendments: */ public function saveOrUpdate(IModel $amendments) { $query=""; $recordID=$amendments->getId(); if($recordID==NULL) { $query.="INSERT INTO `amendments` SET "; } else { $query.="UPDATE `amendments` SET "; } $query .="`proposals_sentence_id` = '".$this->mysql->escape($amendments->getProposals_sentence_id())."', "; $query .="`proposer_uid` = '".$this->mysql->escape($amendments->getProposer_uid())."', "; $query .="`session_type` = '".$this->mysql->escape($amendments->getSession_type())."', "; $query .="`status` = '".$this->mysql->escape($amendments->getStatus())."', "; $query .="`proposal_id` = '".$this->mysql->escape($amendments->getProposal_id())."', "; $query .="`change_type` = '".$this->mysql->escape($amendments->getChange_type())."', "; $query .="`sentence_id` = '".$this->mysql->escape($amendments->getSentence_id())."', "; $query .="`jc_comment` = '".$this->mysql->escape($amendments->getJc_comment())."', "; $query .="`category` = '".$this->mysql->escape($amendments->getCategory())."', "; $query .="`title` = '".$this->mysql->escape($amendments->getTitle())."', "; $query .="`order` = '".$this->mysql->escape($amendments->getOrder())."', "; $query .="`last_change` = '".$this->mysql->escape($amendments->getLast_change())."', "; $query .="`title2` = '".$this->mysql->escape($amendments->getTitle2())."', "; $query .="`order2` = '".$this->mysql->escape($amendments->getOrder2())."', "; $query .="`article` = '".$this->mysql->escape($amendments->getArticle())."', "; $query .="`article_title` = '".$this->mysql->escape($amendments->getArticle_title())."', "; $query .="`paragraph` = '".$this->mysql->escape($amendments->getParagraph())."', "; $query .="`sentence` = '".$this->mysql->escape($amendments->getSentence())."', "; $query .="`sentence_text` = '".$this->mysql->escape($amendments->getSentence_text())."', "; $query .="`agora_id_start` = '".$this->mysql->escape($amendments->getAgora_id_start())."', "; $query .="`agora_id_end` = '".$this->mysql->escape($amendments->getAgora_id_end())."', "; $query .="`title_status` = '".$this->mysql->escape($amendments->getTitle_status())."', "; $query .="`title2_status` = '".$this->mysql->escape($amendments->getTitle2_status())."', "; $query .="`article_title_status` = '".$this->mysql->escape($amendments->getArticle_title_status())."', "; $query .="`paragraph_status` = '".$this->mysql->escape($amendments->getParagraph_status())."'"; if($recordID!=NULL) { $query.=" where `id` = ".$recordID; } //echo $query; return $this->mysql->query($query); } } ?>