Skip to content

Commit

Permalink
Dev: fixed issue : broken index for admin for pgsql
Browse files Browse the repository at this point in the history
Dev: Cast value when delete global setting fo IN condition : pgsql need it. Unsure for mssql
  • Loading branch information
Shnoulle committed Feb 10, 2016
1 parent f48dca5 commit 1ffc157
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 8 deletions.
18 changes: 12 additions & 6 deletions application/controllers/admin/index.php
Expand Up @@ -52,22 +52,28 @@ public function run()
$setting_entry = 'last_question_sid_'.Yii::app()->user->getId();
$lastquestionsid = getGlobalSetting($setting_entry);

if( $lastquestion != null && $lastquestiongroup != null && $survey)
if( $lastquestion && $lastquestiongroup && $lastquestionsid)
{
$baselang = $survey->language;
$aData['showLastQuestion'] = true;
$qid = $lastquestion;
$gid = $lastquestiongroup;
$sid = $lastquestionsid;
$qrrow = Question::model()->findByAttributes(array('qid' => $qid, 'gid' => $gid, 'sid' => $sid, 'language' => $baselang));
if($qrrow)
{
$aData['last_question_name'] = $qrrow['title'];
if($qrrow['question'])
{
$aData['last_question_name'] .= ' : '.$qrrow['question'];
}

$aData['last_question_name'] = $qrrow['title'];
if($qrrow['question'])
$aData['last_question_link'] = $this->getController()->createUrl("admin/questions/sa/view/surveyid/$iSurveyID/gid/$gid/qid/$qid");
}
else
{
$aData['last_question_name'] .= ' : '.$qrrow['question'];
$aData['showLastQuestion'] = false;
}

$aData['last_question_link'] = $this->getController()->createUrl("admin/questions/sa/view/surveyid/$iSurveyID/gid/$gid/qid/$qid");
}
else
{
Expand Down
18 changes: 16 additions & 2 deletions application/models/Survey.php
Expand Up @@ -495,13 +495,27 @@ public function deleteSurvey($iSurveyID, $recursive=true)
$aGroupId=CHtml::listData(QuestionGroup::model()->findAll(array('select'=>'gid','condition'=>'sid=:sid','params'=>array(':sid'=>$iSurveyID))),'gid','gid');
$oCriteria = new CDbCriteria();
$oCriteria->compare('stg_name','last_question_gid_%',true,'AND',false);
$oCriteria->addInCondition('stg_value',$aGroupId);
if(Yii::app()->db->getDriverName() == 'pgsql' || Yii::app()->db->getDriverName() == 'mssql') // pgsql need casting, unsure for mssql, but cast as int is OK
{
$oCriteria->addInCondition('CAST(stg_value as '.App()->db->schema->getColumnType("integer").')',$aGroupId);
}
else //mysql App()->db->schema->getColumnType("integer") give int(11)
{
$oCriteria->addInCondition('stg_value',$aGroupId);
}
SettingGlobal::model()->deleteAll($oCriteria);
// All Question id from this survey for ALL users
$aQuestionId=CHtml::listData(Question::model()->findAll(array('select'=>'qid','condition'=>'sid=:sid','params'=>array(':sid'=>$iSurveyID))),'qid','qid');
$oCriteria = new CDbCriteria();
$oCriteria->compare('stg_name','last_question_%',true,'OR',false);
$oCriteria->addInCondition('stg_value',$aQuestionId);
if(Yii::app()->db->getDriverName() == 'pgsql' || Yii::app()->db->getDriverName() == 'mssql')
{
$oCriteria->addInCondition('CAST(stg_value as '.App()->db->schema->getColumnType("integer").')',$aQuestionId);
}
else
{
$oCriteria->addInCondition('stg_value',$aQuestionId);
}
SettingGlobal::model()->deleteAll($oCriteria);

$oResult = Question::model()->findAllByAttributes(array('sid' => $iSurveyID));
Expand Down

0 comments on commit 1ffc157

Please sign in to comment.