From e86b028c9165a1f6048a3a0c79c542771cea8cd4 Mon Sep 17 00:00:00 2001 From: Denis Chenu Date: Wed, 9 Jul 2014 17:17:54 +0200 Subject: [PATCH 1/3] Fixed issue #09134: Database error when trying to reload survey data Dev: just using Yii Dev: Think mssql with Yii don't need CAST --- application/controllers/survey/index.php | 3 -- application/helpers/frontend_helper.php | 41 +++++++++++++++--------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/application/controllers/survey/index.php b/application/controllers/survey/index.php index fd4f83adea5..a0a6b0c38e9 100644 --- a/application/controllers/survey/index.php +++ b/application/controllers/survey/index.php @@ -313,9 +313,6 @@ function action() } } - $_SESSION['survey_'.$surveyid]['holdname'] = $sLoadName; - $_SESSION['survey_'.$surveyid]['holdpass'] = $sLoadPass; - if ($errormsg == "") { LimeExpressionManager::SetDirtyFlag(); buildsurveysession($surveyid); diff --git a/application/helpers/frontend_helper.php b/application/helpers/frontend_helper.php index 2e73dbe0025..2a08a356cb4 100644 --- a/application/helpers/frontend_helper.php +++ b/application/helpers/frontend_helper.php @@ -18,39 +18,47 @@ function loadanswers() global $clienttoken; $clang = Yii::app()->lang; - $scid=returnGlobal('scid',true); + $scid=Yii::app()->request->getQuery('scid'); if (Yii::app()->request->getParam('loadall') == "reload") { - $query = "SELECT * FROM {{saved_control}} INNER JOIN {$thissurvey['tablename']} - ON {{saved_control}}.srid = {$thissurvey['tablename']}.id - WHERE {{saved_control}}.sid=$surveyid\n"; - if (isset($scid)) //Would only come from email - + $sLoadName=Yii::app()->request->getParam('loadname'); + $sLoadPass=Yii::app()->request->getParam('loadpass'); + $oCriteria= new CDbCriteria; + $oCriteria->join="LEFT JOIN {{saved_control}} ON t.id={{saved_control}}.srid"; + $oCriteria->condition="{{saved_control}}.sid=:sid"; + $aParams=array(':sid'=>$surveyid); + if (isset($scid)) //Would only come from email : we don't need it .... { - $query .= "AND {{saved_control}}.scid={$scid}\n"; + $oCriteria->addCondition("{{saved_control}}.scid=:scid"); + $aParams[':scid']=$scid; } - $query .="AND {{saved_control}}.identifier = '".Yii::app()->db->quoteValue($_SESSION['survey_'.$surveyid]['holdname'])."' "; + $oCriteria->addCondition("{{saved_control}}.identifier=:identifier"); + $aParams[':identifier']=$sLoadName; if (in_array(Yii::app()->db->getDriverName(), array('mssql', 'sqlsrv', 'dblib'))) { - $query .="AND CAST({{saved_control}}.access_code as varchar(32))= '".md5($_SESSION['survey_'.$surveyid]['holdpass'])."'\n"; + // To be validated with mssql, think it's not needed + $oCriteria->addCondition(" CAST({{saved_control}}.access_code as varchar(32))=:access_code"); } else { - $query .="AND {{saved_control}}.access_code = '".md5($_SESSION['survey_'.$surveyid]['holdpass'])."'\n";// md5 don't need to be escaped + $oCriteria->addCondition("{{saved_control}}.access_code=:access_code"); } + $aParams[':access_code']=md5($sLoadPass); } elseif (isset($_SESSION['survey_'.$surveyid]['srid'])) { - $query = "SELECT * FROM {$thissurvey['tablename']} - WHERE {$thissurvey['tablename']}.id=".$_SESSION['survey_'.$surveyid]['srid']."\n"; + $oCriteria= new CDbCriteria; + $oCriteria->condition="id=:id"; + $aParams=array(':id'=>$_SESSION['survey_'.$surveyid]['srid']); } else { return; } - $aRow = Yii::app()->db->createCommand($query)->queryRow();// TODO : use Yii for query - if (!$aRow) + $oCriteria->params=$aParams; + $oResponses=SurveyDynamic::model($surveyid)->find($oCriteria); + if (!$oResponses) { return false; } @@ -60,7 +68,8 @@ function loadanswers() //If this is from an email, build surveysession first $_SESSION['survey_'.$surveyid]['LEMtokenResume']=true; // Get if survey is been answered - $submitdate=$aRow['submitdate']; + $submitdate=$oResponses->submitdate; + $aRow=$oResponses->attributes; foreach ($aRow as $column => $value) { if ($column == "token") @@ -133,8 +142,8 @@ function loadanswers() } // if (in_array( } // else } // foreach + return true; } - return true; } function makegraph($currentstep, $total) From 51f8b9536d0fffadf37a6ec8d7814f0a87e0ee5d Mon Sep 17 00:00:00 2001 From: Denis Chenu Date: Wed, 9 Jul 2014 19:03:28 +0200 Subject: [PATCH 2/3] Fixed issue #09126: Survey's token and EM variables aren't set when exporting printing results view to PDF format. --- application/controllers/PrintanswersController.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/application/controllers/PrintanswersController.php b/application/controllers/PrintanswersController.php index 21464c0fd12..37afc4bd558 100644 --- a/application/controllers/PrintanswersController.php +++ b/application/controllers/PrintanswersController.php @@ -141,8 +141,6 @@ function actionView($surveyid,$printableexport=FALSE) { if (substr($sFieldname,0,4) == 'gid_') { - - $sOutput .= "\t{$fname[0]}\n"; } elseif (substr($sFieldname,0,4)=='qid_') @@ -162,6 +160,8 @@ function actionView($surveyid,$printableexport=FALSE) } } $sOutput .= "\n"; + $sData['thissurvey']=$aSurveyInfo; + $sOutput=templatereplace($sOutput, array() , $sData, '', $aSurveyInfo['anonymized']=="Y",NULL, array(), true);// Do a static replacement if($sExportType == 'pdf') { $oPDF->writeHTML($sOutput); @@ -181,7 +181,6 @@ function actionView($surveyid,$printableexport=FALSE) sendCacheHeaders(); doHeader(); - $sData['thissurvey']=$aSurveyInfo; echo templatereplace(file_get_contents(getTemplatePath($sTemplate).'/startpage.pstpl'),array(),$sData); echo templatereplace(file_get_contents(getTemplatePath($sTemplate).'/printanswers.pstpl'),array('ANSWERTABLE'=>$sOutput),$sData); echo templatereplace(file_get_contents(getTemplatePath($sTemplate).'/endpage.pstpl'),array(),$sData); From c5a7d5b5879e94f4f0635ac03189040e898c05d6 Mon Sep 17 00:00:00 2001 From: Denis Chenu Date: Thu, 10 Jul 2014 09:35:40 +0200 Subject: [PATCH 3/3] Fixed issue : tip before tooltip on footer manual link --- scripts/admin/admin_core.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/admin/admin_core.js b/scripts/admin/admin_core.js index 01f33d5219b..6ad5658d495 100644 --- a/scripts/admin/admin_core.js +++ b/scripts/admin/admin_core.js @@ -253,6 +253,7 @@ function doToolTip() at: "top right" } }); + $(this).children("a").children("img").removeAttr('title'); } }); $(".sf-menu a > img[alt]").data("hasqtip", true ).parent("a").data("hasqtip", true ); @@ -277,7 +278,7 @@ function doToolTip() } } }); - $("a > img[alt]").data("hasqtip", true ); + $("a > img[alt]").data("hasqtip", true ).removeAttr('title'); // Call the popuptip hover rel attribute $('.popuptip').each(function(){ @@ -302,7 +303,7 @@ function doToolTip() event: "mouseout" } }); - $("#"+$(this).attr('rel')).find("img").data("hasqtip", true ); + $("#"+$(this).attr('rel')).find("img").data("hasqtip", true ).removeAttr('title'); } }); // On label