From ef3e2b03bf4b12be8057af27f07aeb43e47a272a Mon Sep 17 00:00:00 2001 From: LouisGac Date: Fri, 17 Jun 2016 14:52:29 +0200 Subject: [PATCH] Fixed issue #11335: Wrong language when resuming saved survey Dev: set survey language before all the survey actions --- application/controllers/survey/index.php | 48 +++++++++++++----------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/application/controllers/survey/index.php b/application/controllers/survey/index.php index e462ec8a6af..e5db2a31bdb 100644 --- a/application/controllers/survey/index.php +++ b/application/controllers/survey/index.php @@ -115,6 +115,31 @@ function action() $this->_loadLimesurveyLang($surveyid); + + // Set the language of the survey, either from POST, GET parameter of session var + // Keep the old value, because SetSurveyLanguage update $_SESSION + $sOldLang=isset($_SESSION['survey_'.$surveyid]['s_lang'])?$_SESSION['survey_'.$surveyid]['s_lang']:"";// Keep the old value, because SetSurveyLanguage update $_SESSION + if (!empty($param['lang'])) + { + $sDisplayLanguage = $param['lang'];// $param take lang from returnGlobal and returnGlobal sanitize langagecode + } + elseif (isset($_SESSION['survey_'.$surveyid]['s_lang'])) + { + $sDisplayLanguage = $_SESSION['survey_'.$surveyid]['s_lang']; + } + elseif(Survey::model()->findByPk($surveyid)) + { + $sDisplayLanguage=Survey::model()->findByPk($surveyid)->language; + } + else + { + $sDisplayLanguage=Yii::app()->getConfig('defaultlang'); + } + if ($surveyid && $surveyExists) + { + SetSurveyLanguage( $surveyid, $sDisplayLanguage); + } + if ( $this->_isClientTokenDifferentFromSessionToken($clienttoken,$surveyid) ) { $sReloadUrl=$this->getController()->createUrl("/survey/index/sid/{$surveyid}",array('token'=>$clienttoken,'lang'=>App()->language,'newtest'=>'Y')); @@ -194,30 +219,11 @@ function action() $this->_niceExit($redata, __LINE__, null, $asMessage); }; - // Set the language of the survey, either from POST, GET parameter of session var - // Keep the old value, because SetSurveyLanguage update $_SESSION - $sOldLang=isset($_SESSION['survey_'.$surveyid]['s_lang'])?$_SESSION['survey_'.$surveyid]['s_lang']:"";// Keep the old value, because SetSurveyLanguage update $_SESSION - if (!empty($param['lang'])) - { - $sDisplayLanguage = $param['lang'];// $param take lang from returnGlobal and returnGlobal sanitize langagecode - } - elseif (isset($_SESSION['survey_'.$surveyid]['s_lang'])) - { - $sDisplayLanguage = $_SESSION['survey_'.$surveyid]['s_lang']; - } - elseif(Survey::model()->findByPk($surveyid)) - { - $sDisplayLanguage=Survey::model()->findByPk($surveyid)->language; - } - else - { - $sDisplayLanguage=Yii::app()->getConfig('defaultlang'); - } + //CHECK FOR REQUIRED INFORMATION (sid) if ($surveyid && $surveyExists) { LimeExpressionManager::SetSurveyId($surveyid); // must be called early - it clears internal cache if a new survey is being used - SetSurveyLanguage( $surveyid, $sDisplayLanguage); if($previewmode) LimeExpressionManager::SetPreviewMode($previewmode); if (App()->language != $sOldLang) // Update the Session var only if needed { @@ -717,7 +723,7 @@ function _niceExit(&$redata, $iDebugLine, $sTemplateDir = null, $asMessage = arr function _createNewUserSessionAndRedirect($surveyid, &$redata, $iDebugLine, $asMessage = array()) { - killSurveySession($surveyid); + //killSurveySession($surveyid); $thissurvey=getSurveyInfo($surveyid); if($thissurvey) {