From ddcd57dfb163d55686383099f4967d82c39fabaf Mon Sep 17 00:00:00 2001 From: tmswhite Date: Sat, 28 Jan 2012 05:35:05 +0000 Subject: [PATCH] Fixed issue #05702: Invalid question - probably missing sub-questions or language-specific settings for language en Dev core problem is that groups.group_order can have gaps - needed to ensure groupSeq count is sequential from 0 git-svn-id: file:///Users/Shitiz/Downloads/lssvn/source/limesurvey_yii@12247 b72ed6b6-b9f8-46b5-92b4-906544132732 --- application/helpers/common_helper.php | 37 +++++++++++-------- .../helpers/expressions/em_manager_helper.php | 8 ++-- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/application/helpers/common_helper.php b/application/helpers/common_helper.php index 417076dfbdc..e54a190de55 100644 --- a/application/helpers/common_helper.php +++ b/application/helpers/common_helper.php @@ -2322,11 +2322,18 @@ function createFieldMap($surveyid, $style='short', $force_refresh=false, $questi $aquery.=" ORDER BY group_order, question_order"; $aresult = Yii::app()->db->createCommand($aquery)->queryAll(); $questionSeq=-1; // this is incremental question sequence across all groups + $groupSeq=-1; + $_groupOrder=-1; foreach ($aresult as $arow) //With each question, create the appropriate field(s)) { ++$questionSeq; - + + // fix fact taht group_order may have gaps + if ($_groupOrder != $arow['group_order']) { + $_groupOrder = $arow['group_order']; + ++$groupSeq; + } // Conditions indicators are obsolete with EM. However, they are so tightly coupled into LS code that easider to just set values to 'N' for now and refactor later. $conditions = 'N'; $usedinconditions = 'N'; @@ -2353,7 +2360,7 @@ function createFieldMap($surveyid, $style='short', $force_refresh=false, $questi $fieldmap[$fieldname]['hasconditions']=$conditions; $fieldmap[$fieldname]['usedinconditions']=$usedinconditions; $fieldmap[$fieldname]['questionSeq']=$questionSeq; - $fieldmap[$fieldname]['groupSeq']=$arow['group_order']; + $fieldmap[$fieldname]['groupSeq']=$groupSeq; if (isset($defaultValues[$arow['qid'].'~0'])) { $fieldmap[$fieldname]['defaultvalue'] = $defaultValues[$arow['qid'].'~0']; } @@ -2384,7 +2391,7 @@ function createFieldMap($surveyid, $style='short', $force_refresh=false, $questi $fieldmap[$fieldname]['hasconditions']=$conditions; $fieldmap[$fieldname]['usedinconditions']=$usedinconditions; $fieldmap[$fieldname]['questionSeq']=$questionSeq; - $fieldmap[$fieldname]['groupSeq']=$arow['group_order']; + $fieldmap[$fieldname]['groupSeq']=$groupSeq; if (isset($defaultValues[$arow['qid'].'~other'])) { $fieldmap[$fieldname]['defaultvalue'] = $defaultValues[$arow['qid'].'~other']; } @@ -2412,7 +2419,7 @@ function createFieldMap($surveyid, $style='short', $force_refresh=false, $questi $fieldmap[$fieldname]['hasconditions']=$conditions; $fieldmap[$fieldname]['usedinconditions']=$usedinconditions; $fieldmap[$fieldname]['questionSeq']=$questionSeq; - $fieldmap[$fieldname]['groupSeq']=$arow['group_order']; + $fieldmap[$fieldname]['groupSeq']=$groupSeq; } break; } @@ -2462,7 +2469,7 @@ function createFieldMap($surveyid, $style='short', $force_refresh=false, $questi $fieldmap[$fieldname]['hasconditions']=$conditions; $fieldmap[$fieldname]['usedinconditions']=$usedinconditions; $fieldmap[$fieldname]['questionSeq']=$questionSeq; - $fieldmap[$fieldname]['groupSeq']=$arow['group_order']; + $fieldmap[$fieldname]['groupSeq']=$groupSeq; $fieldmap[$fieldname]['preg']=$arow['preg']; $fieldmap[$fieldname]['answerList']=$answerList; } @@ -2489,7 +2496,7 @@ function createFieldMap($surveyid, $style='short', $force_refresh=false, $questi $fieldmap[$fieldname]['hasconditions']=$conditions; $fieldmap[$fieldname]['usedinconditions']=$usedinconditions; $fieldmap[$fieldname]['questionSeq']=$questionSeq; - $fieldmap[$fieldname]['groupSeq']=$arow['group_order']; + $fieldmap[$fieldname]['groupSeq']=$groupSeq; } $fieldname="{$arow['sid']}X{$arow['gid']}X{$arow['qid']}{$abrow['title']}#1"; @@ -2506,7 +2513,7 @@ function createFieldMap($surveyid, $style='short', $force_refresh=false, $questi $fieldmap[$fieldname]['hasconditions']=$conditions; $fieldmap[$fieldname]['usedinconditions']=$usedinconditions; $fieldmap[$fieldname]['questionSeq']=$questionSeq; - $fieldmap[$fieldname]['groupSeq']=$arow['group_order']; + $fieldmap[$fieldname]['groupSeq']=$groupSeq; } } } @@ -2532,7 +2539,7 @@ function createFieldMap($surveyid, $style='short', $force_refresh=false, $questi $fieldmap[$fieldname]['hasconditions']=$conditions; $fieldmap[$fieldname]['usedinconditions']=$usedinconditions; $fieldmap[$fieldname]['questionSeq']=$questionSeq; - $fieldmap[$fieldname]['groupSeq']=$arow['group_order']; + $fieldmap[$fieldname]['groupSeq']=$groupSeq; } } } @@ -2560,7 +2567,7 @@ function createFieldMap($surveyid, $style='short', $force_refresh=false, $questi $fieldmap[$fieldname]['hasconditions']=$conditions; $fieldmap[$fieldname]['usedinconditions']=$usedinconditions; $fieldmap[$fieldname]['questionSeq']=$questionSeq; - $fieldmap[$fieldname]['groupSeq']=$arow['group_order']; + $fieldmap[$fieldname]['groupSeq']=$groupSeq; } $fieldname="{$arow['sid']}X{$arow['gid']}X{$arow['qid']}"."_filecount"; $fieldmap[$fieldname]=array("fieldname"=>$fieldname, @@ -2579,7 +2586,7 @@ function createFieldMap($surveyid, $style='short', $force_refresh=false, $questi $fieldmap[$fieldname]['hasconditions']=$conditions; $fieldmap[$fieldname]['usedinconditions']=$usedinconditions; $fieldmap[$fieldname]['questionSeq']=$questionSeq; - $fieldmap[$fieldname]['groupSeq']=$arow['group_order']; + $fieldmap[$fieldname]['groupSeq']=$groupSeq; } } } @@ -2608,7 +2615,7 @@ function createFieldMap($surveyid, $style='short', $force_refresh=false, $questi $fieldmap[$fieldname]['hasconditions']=$conditions; $fieldmap[$fieldname]['usedinconditions']=$usedinconditions; $fieldmap[$fieldname]['questionSeq']=$questionSeq; - $fieldmap[$fieldname]['groupSeq']=$arow['group_order']; + $fieldmap[$fieldname]['groupSeq']=$groupSeq; $fieldmap[$fieldname]['preg']=$arow['preg']; if (isset($defaultValues[$arow['qid'].'~'.$abrow['qid']])) { $fieldmap[$fieldname]['defaultvalue'] = $defaultValues[$arow['qid'].'~'.$abrow['qid']]; @@ -2629,7 +2636,7 @@ function createFieldMap($surveyid, $style='short', $force_refresh=false, $questi $fieldmap[$fieldname]['hasconditions']=$conditions; $fieldmap[$fieldname]['usedinconditions']=$usedinconditions; $fieldmap[$fieldname]['questionSeq']=$questionSeq; - $fieldmap[$fieldname]['groupSeq']=$arow['group_order']; + $fieldmap[$fieldname]['groupSeq']=$groupSeq; } } } @@ -2648,7 +2655,7 @@ function createFieldMap($surveyid, $style='short', $force_refresh=false, $questi $fieldmap[$fieldname]['hasconditions']=$conditions; $fieldmap[$fieldname]['usedinconditions']=$usedinconditions; $fieldmap[$fieldname]['questionSeq']=$questionSeq; - $fieldmap[$fieldname]['groupSeq']=$arow['group_order']; + $fieldmap[$fieldname]['groupSeq']=$groupSeq; $fieldmap[$fieldname]['other']=$arow['other']; } if ($arow['type']=="P") @@ -2666,7 +2673,7 @@ function createFieldMap($surveyid, $style='short', $force_refresh=false, $questi $fieldmap[$fieldname]['hasconditions']=$conditions; $fieldmap[$fieldname]['usedinconditions']=$usedinconditions; $fieldmap[$fieldname]['questionSeq']=$questionSeq; - $fieldmap[$fieldname]['groupSeq']=$arow['group_order']; + $fieldmap[$fieldname]['groupSeq']=$groupSeq; $fieldmap[$fieldname]['other']=$arow['other']; } } @@ -2675,7 +2682,7 @@ function createFieldMap($surveyid, $style='short', $force_refresh=false, $questi $fieldmap[$fieldname]['relevance']=$arow['relevance']; $fieldmap[$fieldname]['grelevance']=$arow['grelevance']; $fieldmap[$fieldname]['questionSeq']=$questionSeq; - $fieldmap[$fieldname]['groupSeq']=$arow['group_order']; + $fieldmap[$fieldname]['groupSeq']=$groupSeq; $fieldmap[$fieldname]['preg']=$arow['preg']; $fieldmap[$fieldname]['other']=$arow['other']; $fieldmap[$fieldname]['help']=$arow['help']; diff --git a/application/helpers/expressions/em_manager_helper.php b/application/helpers/expressions/em_manager_helper.php index 89650f788eb..66372963801 100644 --- a/application/helpers/expressions/em_manager_helper.php +++ b/application/helpers/expressions/em_manager_helper.php @@ -5722,15 +5722,17 @@ function getGroupInfoForEM($surveyid,$lang=NULL) $data = dbExecuteAssoc($query); $qinfo = array(); - foreach ($data->readAll() as $d) + $_order=0; + foreach ($data as $d) { - $qinfo[$d['group_order']] = array( - 'group_order' => $d['group_order'], + $qinfo[$_order] = array( + 'group_order' => $_order, 'gid' => $d['gid'], 'group_name' => $d['group_name'], 'description' => $d['description'], 'grelevance' => $d['grelevance'], ); + ++$_order; } return $qinfo;