$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; } }