From ec41d47480d572cf5683606934d8f77495f6387d Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sun, 17 Jun 2012 10:04:58 -0400 Subject: [PATCH] Fixed issue PHP errors thrown if use invalid array filter question Dev converted exclusive_option to use is_empty() instead of != "" Dev Confirmed that exclusive_option works for all single-entry multiple question types --- classes/expressions/LimeExpressionManager.php | 18 +++++++++++++++++- common_functions.php | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/classes/expressions/LimeExpressionManager.php b/classes/expressions/LimeExpressionManager.php index 3556c740077..6c35353b05d 100644 --- a/classes/expressions/LimeExpressionManager.php +++ b/classes/expressions/LimeExpressionManager.php @@ -1085,6 +1085,10 @@ public function _CreateSubQLevelRelevanceAndValidationEqns($onlyThisQseq=NULL) { $sgq = ((isset($this->qcode2sgq[$_caf])) ? $this->qcode2sgq[$_caf] : $_caf); $fqid = explode('X',$sgq); + if (!isset($fqid[2])) + { + continue; + } $fqid = $fqid[2]; $fsqs = array(); foreach ($this->q2subqInfo[$fqid]['subqs'] as $fsq) @@ -1103,6 +1107,10 @@ public function _CreateSubQLevelRelevanceAndValidationEqns($onlyThisQseq=NULL) { $sgq = ((isset($this->qcode2sgq[$_cafe])) ? $this->qcode2sgq[$_cafe] : $_cafe); $fqid = explode('X',$sgq); + if (!isset($fqid[2])) + { + continue; + } $fqid = $fqid[2]; $fsqs = array(); foreach ($this->q2subqInfo[$fqid]['subqs'] as $fsq) @@ -1281,8 +1289,16 @@ public function _CreateSubQLevelRelevanceAndValidationEqns($onlyThisQseq=NULL) } switch ($type) { + case ':': //ARRAY (Multi Flexi) 1 to 10 + case 'A': //ARRAY (5 POINT CHOICE) radio-buttons + case 'B': //ARRAY (10 POINT CHOICE) radio-buttons + case 'C': //ARRAY (YES/UNCERTAIN/NO) radio-buttons + case 'E': //ARRAY (Increase/Same/Decrease) radio-buttons + case 'F': //ARRAY (Flexible) - Row Format case 'M': //Multiple choice checkbox case 'P': //Multiple choice with comments checkbox + text + case 'K': //MULTIPLE NUMERICAL QUESTION + case 'Q': //MULTIPLE SHORT TEXT if ($this->sgqaNaming) { $sq_name = $qinfo['sgqa'] . trim($exclusive_option) . '.NAOK'; @@ -1300,7 +1316,7 @@ public function _CreateSubQLevelRelevanceAndValidationEqns($onlyThisQseq=NULL) 'qtype' => $type, 'type' => 'exclude_all_others', 'rowdivid' => $sq['rowdivid'], - 'eqn' => '(' . $sq_name . ' == "")', + 'eqn' => 'is_empty(' . $sq_name . ')', 'qid' => $questionNum, 'sgqa' => $qinfo['sgqa'], ); diff --git a/common_functions.php b/common_functions.php index b1a1b4769ac..f6ae39546b2 100644 --- a/common_functions.php +++ b/common_functions.php @@ -3377,7 +3377,7 @@ function questionAttributes($returnByName=false) "caption"=>$clang->gT('Sub-question validation tip')); $qattributes["exclude_all_others"]=array( - "types"=>"MP", + "types"=>":ABCEFMPKQ", 'category'=>$clang->gT('Logic'), 'sortorder'=>130, 'inputtype'=>'text',