From 80255b3a3695571d561cdf0ce059f17f105ba0ca Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Thu, 21 May 2015 23:15:55 -0500
Subject: [PATCH] events: Fix crash rendering change in priority

---
 include/class.dynamic_forms.php |  3 ++-
 include/class.forms.php         | 14 ++++++++------
 scp/css/scp.css                 |  1 +
 3 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php
index 65777740f..8bb94d81c 100644
--- a/include/class.dynamic_forms.php
+++ b/include/class.dynamic_forms.php
@@ -1179,7 +1179,8 @@ class DynamicFormEntry extends VerySimpleModel {
                 $v = $val[0];
             if ($a->value == $v)
                 continue;
-            $fields[$field->get('id')] = array($a->value, $val);
+            $before = $field->to_database($a->getValue());
+            $fields[$field->get('id')] = array($before, $val);
         }
         return $fields;
     }
diff --git a/include/class.forms.php b/include/class.forms.php
index 97b52d7cf..73e89287b 100644
--- a/include/class.forms.php
+++ b/include/class.forms.php
@@ -1326,10 +1326,10 @@ class ChoiceField extends FormField {
     }
 
     function whatChanged($before, $after) {
-        $before = (array) $before;
-        $after = (array) $after;
-        $added = array_diff($after, $before);
-        $deleted = array_diff($before, $after);
+        $B = (array) $before;
+        $A = (array) $after;
+        $added = array_diff($A, $B);
+        $deleted = array_diff($B, $A);
         $added = array_map(array($this, 'display'), $added);
         $deleted = array_map(array($this, 'display'), $deleted);
 
@@ -1350,8 +1350,8 @@ class ChoiceField extends FormField {
         }
         else {
             $desc = sprintf(
-                __('changed to <strong>%1$s</strong>'),
-                $this->display($after));
+                __('changed from <strong>%1$s</strong> to <strong>%2$s</strong>'),
+                $this->display($before), $this->display($after));
         }
         return $desc;
     }
@@ -1734,6 +1734,8 @@ class PriorityField extends ChoiceField {
             reset($id);
             $id = key($id);
         }
+        elseif (is_array($value))
+            list($value, $id) = $value;
         elseif ($id === false)
             $id = $value;
         if ($id)
diff --git a/scp/css/scp.css b/scp/css/scp.css
index 6749ba729..6b2d2a33c 100644
--- a/scp/css/scp.css
+++ b/scp/css/scp.css
@@ -2361,6 +2361,7 @@ td.indented {
     font-size: 1.1em;
     border: 1px solid #eee;
     vertical-align: top;
+    position: relative;
 }
 .thread-event .type-icon::after {
   content: "";
-- 
GitLab