From abc86196f7fc27d8357aabd843a8018beb125c69 Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Thu, 6 Aug 2015 16:42:48 -0500
Subject: [PATCH] upgrade: Fix scrambled collaborator data

---
 include/class.collaborator.php                        |  6 ++++++
 .../upgrader/streams/core/2d590ffa-9143a511.patch.sql | 11 +++++++++++
 2 files changed, 17 insertions(+)

diff --git a/include/class.collaborator.php b/include/class.collaborator.php
index 6bc891e5f..b51fbe48c 100644
--- a/include/class.collaborator.php
+++ b/include/class.collaborator.php
@@ -114,6 +114,12 @@ implements EmailContact, ITicketUser {
         return $this->user_id;
     }
 
+    static function create($vars=false) {
+        $inst = parent::create($vars);
+        $inst->created = SqlFunction::NOW();
+        return $inst;
+    }
+
     function save($refetch=false) {
         if ($this->dirty)
             $this->updated = SqlFunction::NOW();
diff --git a/include/upgrader/streams/core/2d590ffa-9143a511.patch.sql b/include/upgrader/streams/core/2d590ffa-9143a511.patch.sql
index 1f6fd0b70..4244e3bd5 100644
--- a/include/upgrader/streams/core/2d590ffa-9143a511.patch.sql
+++ b/include/upgrader/streams/core/2d590ffa-9143a511.patch.sql
@@ -27,6 +27,17 @@ RENAME TABLE `%TABLE_PREFIX%ticket_collaborator` TO `%TABLE_PREFIX%thread_collab
 ALTER TABLE `%TABLE_PREFIX%thread_collaborator`
   CHANGE `ticket_id` `thread_id` int(11) unsigned NOT NULL DEFAULT '0';
 
+UPDATE `%TABLE_PREFIX%thread_collaborator` t1
+    LEFT JOIN  `%TABLE_PREFIX%thread` t2 ON (t2.object_id = t1.thread_id  and t2.object_type = 'T')
+    SET t1.thread_id = t2.id, t1.created = t2.created;
+
+-- Drop zombie collaborators from tickets which were deleted and had
+-- collaborators and the collaborators were not removed
+DELETE A1.*
+    FROM `%TABLE_PREFIX%thread_collaborator` A1
+    LEFT JOIN `%TABLE_PREFIX%thread` A2 ON (A2.id = A1.thread_id)
+    WHERE A2.id IS NULL;
+
 ALTER TABLE `%TABLE_PREFIX%task`
   ADD `lock_id` int(11) unsigned NOT NULL DEFAULT '0' AFTER `team_id`;
 
-- 
GitLab