From 1d7f56e6bfc664ba6596dd5da7ea3db547875bdb Mon Sep 17 00:00:00 2001 From: Thomas White Date: Mon, 23 Jan 2012 04:52:59 +0000 Subject: [PATCH] Fixed issue Print Answers showing some irrelevant questions Dev This is now fixed, even if you use array_filter. Only relevant groups/questions/sub-questions will be shown. git-svn-id: file:///Users/Shitiz/Downloads/lssvn/source/limesurvey_yii@12163 b72ed6b6-b9f8-46b5-92b4-906544132732 --- application/helpers/common_helper.php | 28 +++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/application/helpers/common_helper.php b/application/helpers/common_helper.php index a44df007b34..c592004e0e8 100644 --- a/application/helpers/common_helper.php +++ b/application/helpers/common_helper.php @@ -5617,10 +5617,21 @@ function getFullResponseTable($iSurveyID, $iResponseID, $sLanguageCode, $bHonorC //Get response data $idrow = Surveys_dynamic::model($iSurveyID)->findByAttributes(array('id'=>$iResponseID)); + // Create array of non-null values - those are the relevant ones + $aRelevantFields = array(); + + foreach ($aFieldMap as $sKey=>$fname) + { + if (!is_null($idrow[$fname['fieldname']])) + { + $aRelevantFields[$sKey]=$fname; + } + } + $aResultTable=array(); $oldgid = 0; $oldqid = 0; - foreach ($aFieldMap as $sKey=>$fname) + foreach ($aRelevantFields as $sKey=>$fname) { if (!empty($fname['qid'])) { @@ -5645,21 +5656,14 @@ function getFullResponseTable($iSurveyID, $iResponseID, $sLanguageCode, $bHonorC if ($oldqid !== $fname['qid']) { $oldqid = $fname['qid']; - if (($bHonorConditions && LimeExpressionManager::QuestionIsRelevant($fname['qid'])) || !$bHonorConditions) + if (isset($fname['subquestion']) || isset($fname['subquestion1']) || isset($fname['subquestion2'])) { - if (isset($fname['subquestion']) || isset($fname['subquestion1']) || isset($fname['subquestion2'])) - { - $aResultTable['qid_'.$fname['sid'].'X'.$fname['gid'].'X'.$fname['qid']]=array($fname['question'],'',''); - } - else - { - $answer = getExtendedAnswer($fname['fieldname'], $idrow[$fname['fieldname']]); - $aResultTable[$fname['fieldname']]=array($question,'',$answer); - continue; - } + $aResultTable['qid_'.$fname['sid'].'X'.$fname['gid'].'X'.$fname['qid']]=array($fname['question'],'',''); } else { + $answer = getExtendedAnswer($fname['fieldname'], $idrow[$fname['fieldname']]); + $aResultTable[$fname['fieldname']]=array($question,'',$answer); continue; } }