diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php index c2a149441c4ed8061189c23c2a9a71abc19b4ef0..7985e23a4a964bba77d1b37829bddc1be59a61d7 100644 --- a/include/class.dynamic_forms.php +++ b/include/class.dynamic_forms.php @@ -1079,6 +1079,14 @@ class DynamicFormEntry extends VerySimpleModel { return $this->_fields; } + function filterFields($filter) { + $this->getFields(); + foreach ($this->_fields as $i=>$f) { + if ($filter($f)) + unset($this->_fields[$i]); + } + } + function getSource() { return $this->_source ?: (isset($this->id) ? false : $_POST); } diff --git a/scp/tickets.php b/scp/tickets.php index eea20e7a302f3e6cef23fcd5784d744e28ffd0c5..fadaf9730c037c6a04dbfe1c717f1f118e55981e 100644 --- a/scp/tickets.php +++ b/scp/tickets.php @@ -433,7 +433,10 @@ if($ticket) { $inc = 'ticket-edit.inc.php'; if (!$forms) $forms=DynamicFormEntry::forTicket($ticket->getId()); // Auto add new fields to the entries - foreach ($forms as $f) $f->addMissingFields(); + foreach ($forms as $f) { + $f->filterFields(function($f) { return !$f->isStorable(); }); + $f->addMissingFields(); + } } elseif($_REQUEST['a'] == 'print' && !$ticket->pdfExport($_REQUEST['psize'], $_REQUEST['notes'])) $errors['err'] = __('Internal error: Unable to export the ticket to PDF for print.'); } else { diff --git a/tickets.php b/tickets.php index 070cb2567b350d42b3b7af1bbed54e543769b4ef..3467bc9ecf7d9f7e705caf97aaee615a61d3a12a 100644 --- a/tickets.php +++ b/tickets.php @@ -51,6 +51,7 @@ if ($_POST && is_object($ticket) && $ticket->getId()) { $forms=DynamicFormEntry::forTicket($ticket->getId()); $changes = array(); foreach ($forms as $form) { + $form->filterFields(function($f) { return !$f->isStorable(); }); $form->setSource($_POST); if (!$form->isValid()) $errors = array_merge($errors, $form->errors()); @@ -120,7 +121,10 @@ if($ticket && $ticket->checkUserAccess($thisclient)) { $inc = 'edit.inc.php'; if (!$forms) $forms=DynamicFormEntry::forTicket($ticket->getId()); // Auto add new fields to the entries - foreach ($forms as $f) $f->addMissingFields(); + foreach ($forms as $f) { + $f->filterFields(function($f) { return !$f->isStorable(); }); + $f->addMissingFields(); + } } else $inc='view.inc.php';