From 3daf6bf5bc49ff0937ff6f38d186327f9c0bc122 Mon Sep 17 00:00:00 2001 From: tmswhite Date: Tue, 7 Feb 2012 15:23:50 +0000 Subject: [PATCH] Fixed issue #05772: Slider "total" and "remaining" values are not rounded git-svn-id: file:///Users/Shitiz/Downloads/lssvn/source/limesurvey_yii@12389 b72ed6b6-b9f8-46b5-92b4-906544132732 --- .../helpers/expressions/em_manager_helper.php | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/application/helpers/expressions/em_manager_helper.php b/application/helpers/expressions/em_manager_helper.php index 2c91c34df6c..ea01452d62b 100644 --- a/application/helpers/expressions/em_manager_helper.php +++ b/application/helpers/expressions/em_manager_helper.php @@ -562,14 +562,38 @@ public function _CreateSubQLevelRelevanceAndValidationEqns($onlyThisQseq=NULL) { $validationEqn[$questionNum] = array(); } + // sumEqn and sumRemainingEqn may need to be rounded if using sliders + $precision=NULL; // default is not to round + if (isset($qattr['slider_layout']) && $qattr['slider_layout']=='1') + { + $precision=0; // default is to round to whole numbers + if (isset($qattr['slider_accuracy']) && trim($qattr['slider_accuracy'])!='') + { + $slider_accuracy = $qattr['slider_accuracy']; + $_parts = explode('.',$slider_accuracy); + if (isset($_parts[1])) + { + $precision = strlen($_parts[1]); // number of digits after mantissa + } + } + } + $sumEqn = 'sum(' . implode(', ', $sq_names) . ')'; + $sumRemainingEqn = '(' . $equals_num_value . ' - sum(' . implode(', ', $sq_names) . '))'; + + if (!is_null($precision)) + { + $sumEqn = 'round(' . $sumEqn . ', ' . $precision . ')'; + $sumRemainingEqn = 'round(' . $sumRemainingEqn . ', ' . $precision . ')'; + } + $validationEqn[$questionNum][] = array( 'qtype' => $type, 'type' => 'equals_num_value', 'class' => 'sum_range', 'eqn' => '(sum(' . implode(', ', $sq_names) . ') == (' . $equals_num_value . ') || count(' . implode(', ', $sq_names) . ') == 0)', 'qid' => $questionNum, - 'sumEqn' => 'sum(' . implode(', ', $sq_names) . ')', - 'sumRemainingEqn' => '(' . $equals_num_value . ' - sum(' . implode(', ', $sq_names) . '))', + 'sumEqn' => $sumEqn, + 'sumRemainingEqn' => $sumRemainingEqn, ); } }