Example #1
0
             $answer = null;
         }
         $this->data[strtoupper($variablename)] = $answer;
         return $this->data[strtoupper($variablename)];
     }
     return null;
 }
 function setData($variablename, $answer, $clean = 1)
 {
     /* variable in memory */
     if (isset($this->variables[strtoupper($variablename)])) {
         $variable = $this->variables[strtoupper($variablename)];
     } else {
         $variable = new Variable();
         if (!$variable->setVariable($variablename)) {
             $variable = null;
         }
     }
     /* we have variable */
     if ($variable != null) {
         $variable->setDirty($clean);
         /* check for EMPTY */
         if (strtoupper($answer) == VARIABLE_VALUE_EMPTY || is_array($answer) && sizeof($answer) == 0 || !is_array($answer) && trim($answer) == "") {
             $answer = null;
         }
         if ($variable->setAnswer($this->primkey, $answer)) {
             /* update in-memory */
             $this->variables[strtoupper($variablename)] = $variable;
             $this->data[strtoupper($variablename)] = $answer;
             //echo 'set ' . $variablename .  ' to ' . $answer;
             /* update state memory if array update 
              * (this does not happen in variable.php via $engine->setAnswer()
              * in order to avoid an infinite loop)
              */
             global $engine;
             $var = $engine->getVariableDescriptive($variablename);
             if ($var->isArray() && contains($variablename, "[")) {
                 //echo 'set ' . $variablename .  ' to ' . $answer;
                 $arr = $this->getData(getBasicName($variablename));
                 $index = str_replace("]", "", substr($variablename, strrpos($variablename, "[") + 1));
                 // update array
                 $arr[$index] = $answer;
                 // flatten array
                 $arr = flatten($arr);
                 // flatten array
                 $this->data[strtoupper(getBasicName($variablename))] = $arr;
                 //print_r($arr);
             } else {
                 if (($var->getAnswerType() == ANSWER_TYPE_SETOFENUMERATED || $var->getAnswerType() == ANSWER_TYPE_MULTIDROPDOWN) && !contains($variablename, "_")) {
                     $options = $var->getOptions();
                     $values = explode(SEPARATOR_SETOFENUMERATED, $answer);
                     foreach ($options as $o) {
                         $code = $o["code"];
                         if (isset($this->data[strtoupper($variablename . "_" . $code . "_")])) {
                             if (!inArray($code, $values)) {
                                 $this->data[strtoupper($variablename . "_" . $code . "_")] = null;
                             }
                         } else {
                             if (inArray($code, $values)) {
                                 $this->data[strtoupper($variablename . "_" . $code . "_")] = $code;
                             }
                         }