Skip to content

Commit

Permalink
Dev: Move SQL to Condition model
Browse files Browse the repository at this point in the history
  • Loading branch information
olleharstedt committed Oct 7, 2016
1 parent fb9bab5 commit 1fec038
Show file tree
Hide file tree
Showing 2 changed files with 108 additions and 100 deletions.
100 changes: 6 additions & 94 deletions application/controllers/admin/conditionsaction.php
Original file line number Diff line number Diff line change
Expand Up @@ -376,28 +376,10 @@ public function index($subaction, $iSurveyID=null, $gid=null, $qid=null)

unset($currentfield);

$conditionscount = $this->getConditionCount($qid, $scenarionr);
$result2 = $this->getConditions($qid, $scenarionr);

$conditionscounttoken = $this->getConditionCountToken($qid, $scenarionr);

$querytoken = "SELECT {{conditions}}.cid, "
."{{conditions}}.scenario, "
."{{conditions}}.cqid, "
."{{conditions}}.cfieldname, "
."{{conditions}}.method, "
."{{conditions}}.value, "
."'' AS type "
."FROM {{conditions}} "
."WHERE "
." {{conditions}}.qid=:qid "
."AND {{conditions}}.scenario=:scenario "
."AND {{conditions}}.cfieldname LIKE '{%' " // only catching SRCtokenAttr conditions
."ORDER BY {{conditions}}.cfieldname";
$resulttoken = Yii::app()->db->createCommand($querytoken)
->bindValue(":scenario", $scenarionr['scenario'], PDO::PARAM_INT)
->bindValue(":qid", $qid, PDO::PARAM_INT)
->query() or safeDie ("Couldn't get other conditions for question $qid<br />$query<br />");
$conditionscount = Condition::model()->getConditionCount($qid, $this->language, $scenarionr);
$conditions = Condition::model()->getConditions($qid, $this->language, $scenarionr);
$conditionscounttoken = Condition::model()->getConditionCountToken($qid, $scenarionr);
$resulttoken = Condition::model()->getConditionsToken($qid, $scenarionr);

$conditionscount = $conditionscount + $conditionscounttoken;

Expand All @@ -409,7 +391,7 @@ public function index($subaction, $iSurveyID=null, $gid=null, $qid=null)
{
$aConditionsMerged[]=$arow;
}
foreach ($result2 as $arow)
foreach ($conditions as $arow)
{
$aConditionsMerged[]=$arow;
}
Expand Down Expand Up @@ -740,6 +722,7 @@ public function index($subaction, $iSurveyID=null, $gid=null, $qid=null)
/**
* @param string $hinttext
* @return string html
* @todo Not used?
*/
private function _showSpeaker($hinttext)
{
Expand Down Expand Up @@ -2062,75 +2045,4 @@ protected function getJavascriptForMatching(array $canswers, array $cquestions,

return $javascriptpre;
}

/**
* @param int $qid
* @param Condition $scenarionr
* @return int
*/
protected function getConditionCount($qid, Condition $scenarionr)
{
$query = "SELECT count(*) as recordcount
FROM {{conditions}} c, {{questions}} q, {{groups}} g
WHERE c.cqid=q.qid "
."AND q.gid=g.gid "
."AND q.parent_qid=0 "
."AND q.language=:lang "
."AND g.language=:lang "
."AND c.qid=:qid "
."AND c.scenario=:scenario "
."AND c.cfieldname NOT LIKE '{%' "; // avoid catching SRCtokenAttr conditions
$result=Yii::app()->db->createCommand($query)
->bindValue(":scenario", $scenarionr['scenario'])
->bindValue(":qid", $qid, PDO::PARAM_INT)
->bindValue(":lang", $this->language, PDO::PARAM_STR)
->queryRow();
return (int) $result['recordcount'];
}

/**
* @param int $qid
* @param Condition $scenarionr
* @return array
*/
protected function getConditions($qid, Condition $scenarionr)
{
$query = "SELECT c.cid, c.scenario, c.cqid, c.cfieldname, c.method, c.value, q.type
FROM {{conditions}} c, {{questions}} q, {{groups}} g
WHERE c.cqid=q.qid "
."AND q.gid=g.gid "
."AND q.parent_qid=0 "
."AND q.language=:lang "
."AND g.language=:lang "
."AND c.qid=:qid "
."AND c.scenario=:scenario "
."AND c.cfieldname NOT LIKE '{%' " // avoid catching SRCtokenAttr conditions
."ORDER BY g.group_order, q.question_order, c.cfieldname";
$result=Yii::app()->db->createCommand($query)
->bindValue(":scenario", $scenarionr['scenario'])
->bindValue(":qid", $qid, PDO::PARAM_INT)
->bindValue(":lang", $this->language, PDO::PARAM_STR)
->query() or safeDie ("Couldn't get other conditions for question $qid<br />$query<br />");
return $result->readAll();
}

/**
* @param int $qid
* @param Condition $scenarionr
* @return int
*/
protected function getConditionCountToken($qid, Condition $scenarionr)
{
$querytoken = "SELECT count(*) as recordcount "
."FROM {{conditions}} "
."WHERE "
." {{conditions}}.qid=:qid "
."AND {{conditions}}.scenario=:scenario "
."AND {{conditions}}.cfieldname LIKE '{%' "; // only catching SRCtokenAttr conditions
$resulttoken = Yii::app()->db->createCommand($querytoken)
->bindValue(":scenario", $scenarionr['scenario'], PDO::PARAM_INT)
->bindValue(":qid", $qid, PDO::PARAM_INT)
->queryRow() or safeDie ("Couldn't get other conditions for question $qid<br />$query<br />");
return (int) $resulttoken['recordcount'];
}
}
108 changes: 102 additions & 6 deletions application/models/Condition.php
Original file line number Diff line number Diff line change
Expand Up @@ -150,15 +150,15 @@ public function insertRecords($data, $update=FALSE, $condition=FALSE)
return $record->save();
}

function getScenarios($qid)
public function getScenarios($qid)
{

$scenarioquery = "SELECT DISTINCT scenario FROM ".$this->tableName()." WHERE qid=".$qid." ORDER BY scenario";

return Yii::app()->db->createCommand($scenarioquery)->query();
}

function getSomeConditions($fields, $condition, $order, $group){
public function getSomeConditions($fields, $condition, $order, $group){
$record = Yii::app()->db->createCommand()
->select($fields)
->from($this->tableName())
Expand All @@ -176,7 +176,7 @@ function getSomeConditions($fields, $condition, $order, $group){
return $record->query();
}

function getConditionsQuestions($distinctrow,$deqrow,$scenariorow,$surveyprintlang)
public function getConditionsQuestions($distinctrow,$deqrow,$scenariorow,$surveyprintlang)
{
$conquery="SELECT cid, cqid, q.title, q.question, value, q.type, cfieldname "
."FROM {{conditions}} c, {{questions}} q "
Expand All @@ -193,7 +193,7 @@ function getConditionsQuestions($distinctrow,$deqrow,$scenariorow,$surveyprintla
->query();
}

function getAllCfieldnameWithDependenciesForOneSurvey($sid)
public function getAllCfieldnameWithDependenciesForOneSurvey($sid)
{
$Qids = Yii::app()->db->createCommand()
->select('cfieldname')
Expand All @@ -204,6 +204,102 @@ function getAllCfieldnameWithDependenciesForOneSurvey($sid)

return $Qids;
}
}

?>
/**
* @param int $qid
* @param Condition $scenarionr
* @return int
*/
public function getConditionCount($qid, $language, Condition $scenarionr)
{
$query = "SELECT count(*) as recordcount
FROM {{conditions}} c, {{questions}} q, {{groups}} g
WHERE c.cqid=q.qid "
."AND q.gid=g.gid "
."AND q.parent_qid=0 "
."AND q.language=:lang "
."AND g.language=:lang "
."AND c.qid=:qid "
."AND c.scenario=:scenario "
."AND c.cfieldname NOT LIKE '{%' "; // avoid catching SRCtokenAttr conditions
$result=Yii::app()->db->createCommand($query)
->bindValue(":scenario", $scenarionr['scenario'])
->bindValue(":qid", $qid, PDO::PARAM_INT)
->bindValue(":lang", $language, PDO::PARAM_STR)
->queryRow();
return (int) $result['recordcount'];
}

/**
* @param int $qid
* @param Condition $scenarionr
* @return array
*/
public function getConditions($qid, $language, Condition $scenarionr)
{
$query = "SELECT c.cid, c.scenario, c.cqid, c.cfieldname, c.method, c.value, q.type
FROM {{conditions}} c, {{questions}} q, {{groups}} g
WHERE c.cqid=q.qid "
."AND q.gid=g.gid "
."AND q.parent_qid=0 "
."AND q.language=:lang "
."AND g.language=:lang "
."AND c.qid=:qid "
."AND c.scenario=:scenario "
."AND c.cfieldname NOT LIKE '{%' " // avoid catching SRCtokenAttr conditions
."ORDER BY g.group_order, q.question_order, c.cfieldname";
$result = Yii::app()->db->createCommand($query)
->bindValue(":scenario", $scenarionr['scenario'])
->bindValue(":qid", $qid, PDO::PARAM_INT)
->bindValue(":lang", $language, PDO::PARAM_STR)
->query();
return $result->readAll();
}

/**
* @param int $qid
* @param Condition $scenarionr
* @return int
*/
public function getConditionCountToken($qid, Condition $scenarionr)
{
$querytoken = "SELECT count(*) as recordcount "
."FROM {{conditions}} "
."WHERE "
." {{conditions}}.qid=:qid "
."AND {{conditions}}.scenario=:scenario "
."AND {{conditions}}.cfieldname LIKE '{%' "; // only catching SRCtokenAttr conditions
$resulttoken = Yii::app()->db->createCommand($querytoken)
->bindValue(":scenario", $scenarionr['scenario'], PDO::PARAM_INT)
->bindValue(":qid", $qid, PDO::PARAM_INT)
->queryRow() or safeDie ("Couldn't get other conditions for question $qid<br />$query<br />");
return (int) $resulttoken['recordcount'];
}

/**
* @param int $qid
* @param Condition $scenarionr
* @return array
*/
public function getConditionsToken($qid, Condition $scenarionr)
{
$querytoken = "SELECT {{conditions}}.cid, "
."{{conditions}}.scenario, "
."{{conditions}}.cqid, "
."{{conditions}}.cfieldname, "
."{{conditions}}.method, "
."{{conditions}}.value, "
."'' AS type "
."FROM {{conditions}} "
."WHERE "
." {{conditions}}.qid=:qid "
."AND {{conditions}}.scenario=:scenario "
."AND {{conditions}}.cfieldname LIKE '{%' " // only catching SRCtokenAttr conditions
."ORDER BY {{conditions}}.cfieldname";
$result = Yii::app()->db->createCommand($querytoken)
->bindValue(":scenario", $scenarionr['scenario'], PDO::PARAM_INT)
->bindValue(":qid", $qid, PDO::PARAM_INT)
->query();
return $result;
}
}

0 comments on commit 1fec038

Please sign in to comment.