.
*/
/**
* 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);
}
}
?>