diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php index 6df00e2b4c062b4a5b65011a7e34ed61f76690ec..215099e676f3b69d22a359c097c67e58b356e77f 100644 --- a/include/class.dynamic_forms.php +++ b/include/class.dynamic_forms.php @@ -356,6 +356,7 @@ class DynamicFormEntry extends VerySimpleModel { function setAnswer($name, $value, $id=false) { foreach ($this->getAnswers() as $ans) { if ($ans->getField()->get('name') == $name) { + $ans->getField()->reset(); $ans->set('value', $value); if ($id !== false) $ans->set('value_id', $id); @@ -523,6 +524,7 @@ class DynamicFormEntry extends VerySimpleModel { $a = DynamicFormEntryAnswer::create( array('field_id'=>$f->get('id'))); $a->field = $f; + $a->field->setAnswer($a); $inst->_values[] = $a; } return $inst; @@ -569,7 +571,7 @@ class DynamicFormEntryAnswer extends VerySimpleModel { if (!isset($this->field)) { $f = DynamicFormField::lookup($this->get('field_id')); $this->field = $f->getImpl($f); - $this->field->answer = $this; + $this->field->setAnswer($this); } return $this->field; } diff --git a/include/class.forms.php b/include/class.forms.php index 9c0cc0b62c6e5a41967ca6e7e7fae142225631e3..36cbfb76020c2b9502132f28a1b52dfc77acbfe3 100644 --- a/include/class.forms.php +++ b/include/class.forms.php @@ -116,6 +116,7 @@ class FormField { var $_clean; var $_errors = array(); var $_widget; + var $answer; var $parent; var $presentation_only = false; @@ -179,6 +180,9 @@ class FormField { } return $this->_clean; } + function reset() { + $this->_clean = $this->_widget = null; + } function errors() { return $this->_errors; @@ -312,6 +316,7 @@ class FormField { } function getAnswer() { return $this->answer; } + function setAnswer($ans) { $this->answer = $ans; } function getFormName() { if (is_numeric($this->get('id'))) diff --git a/include/class.ticket.php b/include/class.ticket.php index 5565cfc2b898c54d59be5c924be7b65b88bad9f0..9001ee9a821df63290780d80ee3f89f0c69f6081 100644 --- a/include/class.ticket.php +++ b/include/class.ticket.php @@ -2028,7 +2028,7 @@ class Ticket { // Intenal mapping magic...see if we need to override anything if(isset($vars['topicId']) && ($topic=Topic::lookup($vars['topicId']))) { //Ticket created via web by user/or staff $deptId=$deptId?$deptId:$topic->getDeptId(); - if (!$form->getAnswer('priority')) + if (!$form->getAnswer('priority')->getIdValue()) $form->setAnswer('priority', null, $topic->getPriorityId()); if($autorespond) $autorespond=$topic->autoRespond(); $source=$vars['source']?$vars['source']:'Web'; @@ -2047,14 +2047,14 @@ class Ticket { }elseif($vars['emailId'] && !$vars['deptId'] && ($email=Email::lookup($vars['emailId']))) { //Emailed Tickets $deptId=$email->getDeptId(); - if (!$form->getAnswer('priority')) + if (!$form->getAnswer('priority')->getIdValue()) $form->setAnswer('priority', null, $email->getPriorityId()); if($autorespond) $autorespond=$email->autoRespond(); $email=null; $source='Email'; } //Last minute checks - if (!$form->getAnswer('priority')) + if (!$form->getAnswer('priority')->getIdValue()) $form->setAnswer('priority', null, $cfg->getDefaultPriorityId()); $deptId=$deptId?$deptId:$cfg->getDefaultDeptId(); $topicId=$vars['topicId']?$vars['topicId']:0;