From cea9a14abdc98f5539ab7262693822e3b337e014 Mon Sep 17 00:00:00 2001 From: Carsten Schmitz Date: Fri, 13 Jan 2012 18:19:13 +0000 Subject: [PATCH] Invalid language data is now ignored at survey import Small fixes git-svn-id: file:///Users/Shitiz/Downloads/lssvn/source/limesurvey_yii@12036 b72ed6b6-b9f8-46b5-92b4-906544132732 --- application/helpers/admin/import_helper.php | 7 +++++++ application/helpers/common_helper.php | 18 ++++++++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/application/helpers/admin/import_helper.php b/application/helpers/admin/import_helper.php index 2271502421f..6d8345635fa 100644 --- a/application/helpers/admin/import_helper.php +++ b/application/helpers/admin/import_helper.php @@ -3448,6 +3448,8 @@ function XMLImportSurvey($sFullFilepath,$sXMLdata=NULL,$sNewSurveyName=NULL,$iDe { $insertdata[(string)$key]=(string)$value; } + if (!in_array($insertdata['language'],$aLanguagesSupported)) continue; + $insertdata['surveyls_survey_id']=$newsid; if ($bTranslateInsertansTags) { @@ -3483,6 +3485,7 @@ function XMLImportSurvey($sFullFilepath,$sXMLdata=NULL,$sNewSurveyName=NULL,$iDe { $insertdata[(string)$key]=(string)$value; } + if (!in_array($insertdata['language'],$aLanguagesSupported)) continue; $oldsid=$insertdata['sid']; $insertdata['sid']=$newsid; $oldgid=$insertdata['gid']; unset($insertdata['gid']); // save the old qid @@ -3529,6 +3532,7 @@ function XMLImportSurvey($sFullFilepath,$sXMLdata=NULL,$sNewSurveyName=NULL,$iDe { $insertdata[(string)$key]=(string)$value; } + if (!in_array($insertdata['language'],$aLanguagesSupported)) continue; $oldsid=$insertdata['sid']; $insertdata['sid']=$newsid; $insertdata['gid']=$aGIDReplacements[$insertdata['gid']]; @@ -3574,6 +3578,7 @@ function XMLImportSurvey($sFullFilepath,$sXMLdata=NULL,$sNewSurveyName=NULL,$iDe { $insertdata[(string)$key]=(string)$value; } + if (!in_array($insertdata['language'],$aLanguagesSupported)) continue; $insertdata['sid']=$newsid; $insertdata['gid']=$aGIDReplacements[(int)$insertdata['gid']];; $oldsqid=(int)$insertdata['qid']; unset($insertdata['qid']); // save the old qid @@ -3613,10 +3618,12 @@ function XMLImportSurvey($sFullFilepath,$sXMLdata=NULL,$sNewSurveyName=NULL,$iDe foreach ($xml->answers->rows->row as $row) { $insertdata=array(); + foreach ($row as $key=>$value) { $insertdata[(string)$key]=(string)$value; } + if (!in_array($insertdata['language'],$aLanguagesSupported)) continue; $insertdata['qid']=$aQIDReplacements[(int)$insertdata['qid']]; // remap the parent_qid // now translate any links diff --git a/application/helpers/common_helper.php b/application/helpers/common_helper.php index 85e85287544..42e507e3762 100644 --- a/application/helpers/common_helper.php +++ b/application/helpers/common_helper.php @@ -6545,12 +6545,14 @@ function sStripDBPrefix($sTableName) function TranslateInsertansTags($newsid,$oldsid,$fieldnames) { uksort($fieldnames, create_function('$a,$b', 'return strlen($a) < strlen($b);')); + Yii::app()->loadHelper('database'); $newsid=sanitize_int($newsid); $oldsid=sanitize_int($oldsid); # translate 'surveyls_urldescription' and 'surveyls_url' INSERTANS tags in surveyls - $sql = "SELECT surveyls_survey_id, surveyls_language, surveyls_urldescription, surveyls_url from {{surveys_languagesettings}} WHERE surveyls_survey_id=".$newsid." AND (surveyls_urldescription LIKE '%{INSERTANS:".$oldsid."X%' OR surveyls_url LIKE '%{INSERTANS:".$oldsid."X%')"; + $sql = "SELECT surveyls_survey_id, surveyls_language, surveyls_urldescription, surveyls_url from {{surveys_languagesettings}} + WHERE surveyls_survey_id=".$newsid." AND (surveyls_urldescription LIKE '%{$oldsid}X%' OR surveyls_url LIKE '%{$oldsid}X%')"; $result = db_execute_assoc($sql) or show_error("Can't read groups table in transInsertAns "); // Checked //while ($qentry = $res->FetchRow()) @@ -6590,7 +6592,8 @@ function TranslateInsertansTags($newsid,$oldsid,$fieldnames) } // end while qentry # translate 'quotals_urldescrip' and 'quotals_url' INSERTANS tags in quota_languagesettings - $sql = "SELECT quotals_id, quotals_urldescrip, quotals_url from {{quota_languagesettings}} qls, {{quota}} q WHERE sid=".$newsid." AND q.id=qls.quotals_quota_id AND (quotals_urldescrip LIKE '%{INSERTANS:".$oldsid."X%' OR quotals_url LIKE '%{INSERTANS:".$oldsid."X%')"; + $sql = "SELECT quotals_id, quotals_urldescrip, quotals_url from {{quota_languagesettings}} qls, {{quota}} q + WHERE sid=".$newsid." AND q.id=qls.quotals_quota_id AND (quotals_urldescrip LIKE '%{$oldsid}X%' OR quotals_url LIKE '%{$oldsid}X%')"; $res = db_execute_assoc($sql) or safe_die("Can't read quota table in transInsertAns"); // Checked foreach ($result->readAll() as $qentry) @@ -6615,7 +6618,8 @@ function TranslateInsertansTags($newsid,$oldsid,$fieldnames) } // end while qentry # translate 'description' INSERTANS tags in groups - $sql = "SELECT gid, language, group_name, description from {{groups}} WHERE sid=".$newsid." AND description LIKE '%{INSERTANS:".$oldsid."X%' OR group_name LIKE '%{INSERTANS:".$oldsid."X%'"; + $sql = "SELECT gid, language, group_name, description from {{groups}} + WHERE sid=".$newsid." AND description LIKE '%{$oldsid}X%' OR group_name LIKE '%{$oldsid}X%'"; $res = db_execute_assoc($sql) or show_error("Can't read groups table in transInsertAns"); // Checked //while ($qentry = $res->FetchRow()) @@ -6655,11 +6659,13 @@ function TranslateInsertansTags($newsid,$oldsid,$fieldnames) } // end while qentry # translate 'question' and 'help' INSERTANS tags in questions - $sql = "SELECT qid, language, question, help from {{questions}} WHERE sid=".$newsid." AND (question LIKE '%{INSERTANS:".$oldsid."X%' OR help LIKE '%{INSERTANS:".$oldsid."X%' OR question LIKE '%{".$oldsid."X%' OR help LIKE '%{".$oldsid."X%')"; - $result = db_execute_assoc($sql) or show_error("Can't read question table in transInsertAns "); // Checked + $sql = "SELECT qid, language, question, help from {{questions}} + WHERE sid=".$newsid." AND (question LIKE '%{$oldsid}X%' OR help LIKE '%{$oldsid}X%')"; + $result = db_execute_assoc($sql) or die("Can't read question table in transInsertAns "); // Checked //while ($qentry = $res->FetchRow()) - foreach ($result->readAll() as $qentry) + $aResultData=$result->readAll() ; + foreach ($aResultData as $qentry) { $question = $qentry['question']; $help = $qentry['help'];