From ac896f4bfdb1e136930682301d0d64b37b44b67f Mon Sep 17 00:00:00 2001
From: Peter Rotich <peter@osticket.com>
Date: Thu, 28 Sep 2017 06:45:37 +0000
Subject: [PATCH] Task: Status change

Log an internal note to parent ticket on status change
Reopen parent ticket if a closed task is reopened
---
 include/class.task.php | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/include/class.task.php b/include/class.task.php
index d3a09b9b5..dcb19c812 100644
--- a/include/class.task.php
+++ b/include/class.task.php
@@ -59,7 +59,6 @@ class TaskModel extends VerySimpleModel {
 
             'ticket' => array(
                 'constraint' => array(
-                    'object_type' => "'T'",
                     'object_id' => 'Ticket.ticket_id',
                 ),
                 'null' => true,
@@ -535,8 +534,17 @@ class Task extends TaskModel implements RestrictedAccess, Threadable {
             $this->reopen();
             $this->closed = null;
 
-            $ecb = function ($t) {
+            $ecb = function ($t) use($thisstaff) {
                 $t->logEvent('reopened', false, null, 'closed');
+                if ($t->ticket) {
+                    $t->ticket->reopen();
+                    $vars = array(
+                            'title' => sprintf('Task %s Reopened',
+                                $t->getNumber()),
+                            'note' => __('Task reopened')
+                            );
+                    $t->ticket->logNote($vars['title'], $vars['note'], $thisstaff);
+                }
             };
             break;
         case 'closed':
@@ -553,8 +561,16 @@ class Task extends TaskModel implements RestrictedAccess, Threadable {
 
             $this->close();
             $this->closed = SqlFunction::NOW();
-            $ecb = function($t) {
+            $ecb = function($t) use($thisstaff) {
                 $t->logEvent('closed');
+                if ($t->ticket) {
+                    $vars = array(
+                            'title' => sprintf('Task %s Closed',
+                                $t->getNumber()),
+                            'note' => __('Task closed')
+                            );
+                    $t->ticket->logNote($vars['title'], $vars['note'], $thisstaff);
+                }
             };
             break;
         default:
-- 
GitLab