From a183a984b208e6a16aa06c17dcd5cf5e75c31eb4 Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Fri, 7 Aug 2015 16:38:59 -0500
Subject: [PATCH] forms: Fix issue details showing up on edit

---
 include/class.dynamic_forms.php | 8 ++++++++
 scp/tickets.php                 | 5 ++++-
 tickets.php                     | 6 +++++-
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php
index c2a149441..7985e23a4 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 eea20e7a3..fadaf9730 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 070cb2567..3467bc9ec 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';
-- 
GitLab