. */ /** * 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/Conflicts.php"); class ConflictsDao implements IDao { /** MySQL object */ private $mysql; /** * Default constructor */ public function __construct(MySQL $mysql) { $this->mysql = $mysql; } /** * Load by id * * @param id * @return */ public function load($id) { $query = "SELECT * FROM `conflicts` WHERE `id`='".$id."'"; if( $this->mysql->query($query) ) { return new Conflicts($this->mysql->fetchArray()); }else { return array(); } } /** * Load all CIA * * @return array of all Agorae */ public function loadByAgora($aid) { $query = "SELECT * FROM `conflicts` WHERE `agora_id`= ".$aid; if( $this->mysql->query($query) ) { $ret = array(); while( $row = $this->mysql->fetchArray() ) { $row['resolve']= 'Resolve'; if($row['ps1']==-1){ $row['resolve']='-'; } $row['solved_check'] = ''; if ($row['solved']){ $row['solved_check'] = 'yes'; } //$row['proposals']= 'Proposals'; //$row['manage'] = 'Manage'; //$row['active2'] = $bool[$row['active']]; $ret[ $row['id'] ] = $row; } return $ret; }else { return array(); } } public function countUnresolved($aid) { $query = "SELECT count(*) AS number FROM `conflicts` WHERE `solved`=0 AND `agora_id`= ".$aid; if( $this->mysql->query($query) ) { $row = $this->mysql->fetchArray(); return $row['number']; }else { return array(); } } public function detectConflicts($aid){ //insert accepted porposals in temp table $query10 = "TRUNCATE CIA2update"; $query11 = "INSERT INTO `CIA2update` SELECT * FROM proposals_sentences WHERE `proposal_id` IN (SELECT `id` FROM proposals WHERE `status`='Agora Accepted' AND agora_id=".$aid.") "; //keep latest amendment. //delete proposal_sentences and replace with amendments $query12 = "DELETE FROM CIA2update WHERE id IN (SELECT proposals_sentence_id FROM amendments WHERE `status`='Accept' AND `proposal_id` IN (SELECT `id` FROM proposals WHERE `status`='Agora Accepted' AND agora_id=".$aid."))"; $query13 = "INSERT INTO CIA2update SELECT `proposals_sentence_id`, `proposal_id`, `change_type`, `sentence_id`, `jc_comment`, `abs_order`, `category`, `title`, `order`, `last_change`, `title2`, `order2`, `article`, `article_title`, `paragraph`, `sentence`, `sentence_text`, `agora_id_start`, `agora_id_end`, `title_status`, `title2_status`, `article_title_status`, `paragraph_status`, `history_id` FROM amendments WHERE `status`='Accept' AND `proposal_id` IN (SELECT `id` FROM proposals WHERE `status`='Agora Accepted' AND agora_id=".$aid.")"; //for multiple pressing of 'detect conficlicts', overwrite $q0 = 'DELETE FROM conflicts WHERE agora_id='.$aid; $q1 = "INSERT INTO `conflicts` (agora_id, ps1,ps2,conflict_type,solution,solved) SELECT $aid, ps1.id, ps2.id,'new_^-new_^','',0 FROM CIA2update AS ps1, CIA2update AS ps2 WHERE ps1.sentence_id=ps2.sentence_id AND ps1.proposal_idmysql->query($query10); $this->mysql->query($query11); $this->mysql->query($query12); $this->mysql->query($query13); $this->mysql->query($q0); $this->mysql->query($q1); $this->mysql->query($q2); $this->mysql->query($q3); $this->mysql->query($q4); $this->mysql->query($q5); $x = $this->countUnresolved($aid); if ($x==0){ $q_dummy = "INSERT INTO `conflicts` (agora_id,ps1,ps2,conflict_type,solution,solved) SELECT $aid,-1,-1,'No conflicts','No conflicts',1"; $this->mysql->query($q_dummy); } return $x; } //get all proposals /* $agora_id = $_SESSION['JC_MODULE']['AgoraId']; $pService = $GLOBALS['ClassFactory']->getProposalsService(); $psService = $GLOBALS['ClassFactory']->getProposals_sentencesService(); $proposals = $pService->loadAgoraAccepted($agora_id); $psentences = array(); $i=0; foreach( $proposals as $proposal){ $pcentences[$i] = $psService->loadByProposalId($proposal->getId()); $i++; } */ /** * Save or update Agorae: * create one Agora before opening proposals! * @param Agorae object with the data * @return boolean true in case of success, false otherwise */ public function saveOrUpdate(IModel $conflict) { $query=""; $recordID=$conflict->getId(); if($recordID==NULL) { $query.="INSERT INTO `conflicts` SET "; } else { $query.="UPDATE `conflicts` SET "; } $query .="`agora_id` = '".$this->mysql->escape($conflict->getAgora_id())."', "; $query .="`ps1` = '".$this->mysql->escape($conflict->getPs1())."', "; $query .="`ps2` = '".$this->mysql->escape($conflict->getPs2())."', "; $query .="`conflict_type` = '".$this->mysql->escape($conflict->getConflict_type())."', "; $query .="`solution` = '".$this->mysql->escape($conflict->getSolution())."', "; $query .="`solved` = '".$this->mysql->escape($conflict->getSolved())."' "; if($recordID!=NULL) { $query.=" where `id` = ".$recordID; } return $this->mysql->query($query); } } ?>