diff --git a/include/class.ticket.php b/include/class.ticket.php index c652f8f3fed5a8fde306ce5b2e5a6e37c83e517b..692c6e53ee0315691871461b499020baa1d1636c 100644 --- a/include/class.ticket.php +++ b/include/class.ticket.php @@ -728,6 +728,7 @@ class Ticket { $this->reload(); $this->logEvent('closed'); + $this->deleteDrafts(); return true; } @@ -1676,9 +1677,15 @@ class Ticket { foreach (DynamicFormEntry::forTicket($this->getId()) as $form) $form->delete(); + $this->deleteDrafts(); + return true; } + function deleteDrafts() { + Draft::deleteForNamespace('ticket.%.' . $this->getId()); + } + function update($vars, &$errors) { global $cfg, $thisstaff; diff --git a/scp/tickets.php b/scp/tickets.php index 1058b80d95f67fed03e39c191292f76e5c8b2774..c55c4f27f8fe97709b61997277a5a65de7e5d5d8 100644 --- a/scp/tickets.php +++ b/scp/tickets.php @@ -70,13 +70,13 @@ if($_POST && !$errors): $msg='Reply posted successfully'; $ticket->reload(); - // Cleanup drafts for the ticket. If not closed, only clean - // for this staff. Else clean all drafts for the ticket. - Draft::deleteForNamespace('ticket.%.' . $ticket->getId(), - $ticket->isClosed() ? false : $thisstaff->getId()); - if($ticket->isClosed() && $wasOpen) $ticket=null; + else + // Still open -- cleanup response draft for this user + Draft::deleteForNamespace( + 'ticket.response.' . $ticket->getId(), + $thisstaff->getId()); } elseif(!$errors['err']) { $errors['err']='Unable to post the reply. Correct the errors below and try again!'; @@ -174,17 +174,13 @@ if($_POST && !$errors): $wasOpen = ($ticket->isOpen()); if(($note=$ticket->postNote($vars, $errors, $thisstaff))) { - // Cleanup drafts for the ticket. If not closed, only clean - // note drafts for this staff. Else clean all drafts for the ticket. - Draft::deleteForNamespace( - sprintf('ticket.%s.%d', - $ticket->isClosed() ? '%' : 'note', - $ticket->getId()), - $ticket->isOpen() ? $thisstaff->getId() : false); - $msg='Internal note posted successfully'; if($wasOpen && $ticket->isClosed()) $ticket = null; //Going back to main listing. + else + // Ticket is still open -- clear draft for the note + Draft::deleteForNamespace('ticket.note.'.$ticket->getId(), + $thisstaff->getId()); } else {