From 4ac430bc19c1d1239157ad938bbcb267e24b2787 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Thu, 21 Sep 2017 22:12:55 -0400 Subject: [PATCH] Replace several audit trail spots --- admin/admin_submit_ticket.php | 11 +++++++++-- admin/admin_ticket.php | 12 +++++++++--- admin/assign_owner.php | 18 ++++++++++++++---- admin/change_status.php | 18 ++++++++++++++---- admin/delete_tickets.php | 29 +++++++++++++++++++---------- admin/index.php | 4 ++-- admin/lock.php | 23 +++++++++++++---------- inc/posting_functions.inc.php | 2 +- language/en/text.php | 15 +++++++++------ 9 files changed, 90 insertions(+), 42 deletions(-) diff --git a/admin/admin_submit_ticket.php b/admin/admin_submit_ticket.php index 9eb40c3a..80d1269e 100644 --- a/admin/admin_submit_ticket.php +++ b/admin/admin_submit_ticket.php @@ -176,11 +176,11 @@ foreach ($hesk_settings['custom_fields'] as $k=>$v) { $tmpvar['trackid'] = hesk_createID(); // Log who submitted ticket -$tmpvar['history'] = sprintf($hesklang['thist7'], hesk_date(), $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); $tmpvar['openedby'] = $_SESSION['id']; // Owner $tmpvar['owner'] = 0; +$autoassign_owner = null; if (hesk_checkPermission('can_assign_others', 0)) { $tmpvar['owner'] = intval(hesk_POST('owner')); @@ -192,7 +192,6 @@ if (hesk_checkPermission('can_assign_others', 0)) { $autoassign_owner = hesk_autoAssignTicket($tmpvar['category']); if ($autoassign_owner) { $tmpvar['owner'] = intval($autoassign_owner['id']); - $tmpvar['history'] .= sprintf($hesklang['thist10'], hesk_date(), $autoassign_owner['name'] . ' (' . $autoassign_owner['user'] . ')'); } else { $tmpvar['owner'] = 0; } @@ -315,6 +314,14 @@ $tmpvar['screen_resolution_width'] = "NULL"; // Insert ticket to database $ticket = hesk_newTicket($tmpvar); +mfh_insert_audit_trail_record($ticket['id'], 'TICKET', 'audit_created', hesk_date(), + array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')')); + +if ($autoassign_owner) { + mfh_insert_audit_trail_record($ticket['id'], 'TICKET', 'audit_autoassigned', hesk_date(), + array(0 => $autoassign_owner['name'] . ' (' . $autoassign_owner['user'] . ')')); +} + // Notify the customer about the ticket? if ($notify && $email_available) { hesk_notifyCustomer($modsForHesk_settings); diff --git a/admin/admin_ticket.php b/admin/admin_ticket.php index 9743f626..6a96fdf6 100644 --- a/admin/admin_ticket.php +++ b/admin/admin_ticket.php @@ -439,8 +439,11 @@ if ($hesk_settings['time_worked'] && ($can_reply || $can_edit) && isset($_POST[' $time_worked = hesk_getTime($h . ':' . $m . ':' . $s); /* Update database */ - $revision = sprintf($hesklang['thist14'], hesk_date(), $time_worked, $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); - hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `time_worked`='" . hesk_dbEscape($time_worked) . "', `history`=CONCAT(`history`,'" . hesk_dbEscape($revision) . "') WHERE `trackid`='" . hesk_dbEscape($trackingID) . "'"); + //audit_time_worked who - value + mfh_insert_audit_trail_record($ticket['id'], 'TICKET', 'audit_time_worked', hesk_date(), + array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')', + 1 => $time_worked)); + hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `time_worked`='" . hesk_dbEscape($time_worked) . "' WHERE `trackid`='" . hesk_dbEscape($trackingID) . "'"); /* Show ticket */ hesk_process_messages($hesklang['twu'], 'admin_ticket.php?track=' . $trackingID . '&Refresh=' . mt_rand(10000, 99999), 'SUCCESS'); @@ -528,7 +531,10 @@ if (isset($_GET['delatt']) && hesk_token_check()) { hesk_dbQuery("DELETE FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "attachments` WHERE `att_id`='" . intval($att_id) . "'"); /* Update ticket or reply in the database */ - $revision = sprintf($hesklang['thist12'], hesk_date(), $att['real_name'], $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); + // audit_attachment_deleted + mfh_insert_audit_trail_record($ticket['id'], 'TICKET', 'audit_attachment_deleted', hesk_date(), + array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')', + 1 => $att['real_name'])); if ($reply) { hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "replies` SET `attachments`=REPLACE(`attachments`,'" . hesk_dbEscape($att_id . '#' . $att['real_name'] . '#' . $att['saved_name']) . ",','') WHERE `id`='" . intval($reply) . "'"); hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `history`=CONCAT(`history`,'" . hesk_dbEscape($revision) . "') WHERE `id`='" . intval($ticket['id']) . "'"); diff --git a/admin/assign_owner.php b/admin/assign_owner.php index 793bdfdd..a52c3fc9 100755 --- a/admin/assign_owner.php +++ b/admin/assign_owner.php @@ -52,8 +52,9 @@ $owner = intval(hesk_REQUEST('owner')); /* If ID is -1 the ticket will be unassigned */ if ($owner == -1) { - $revision = sprintf($hesklang['thist2'], hesk_date(), '' . $hesklang['unas'] . '', $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); - $res = hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `owner`=0 , `history`=CONCAT(`history`,'" . hesk_dbEscape($revision) . "') WHERE `trackid`='" . hesk_dbEscape($trackingID) . "'"); + mfh_insert_audit_trail_record($ticket['id'], 'TICKET', 'audit_unassigned', date(), + array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')')); + $res = hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `owner`=0 WHERE `trackid`='" . hesk_dbEscape($trackingID) . "'"); hesk_process_messages($hesklang['tunasi2'], $_SERVER['PHP_SELF'], 'SUCCESS'); } elseif ($owner < 1) { @@ -96,8 +97,17 @@ if ($ticket['owner'] && $ticket['owner'] != $owner && hesk_REQUEST('unassigned') /* Assigning to self? */ if ($can_assign_others || ($owner == $_SESSION['id'] && $can_assign_self)) { - $revision = sprintf($hesklang['thist2'], hesk_date(), $row['name'] . ' (' . $row['user'] . ')', $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); - $res = hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `owner`={$owner} , `history`=CONCAT(`history`,'" . hesk_dbEscape($revision) . "') WHERE `trackid`='" . hesk_dbEscape($trackingID) . "'"); + if ($owner == $_SESSION['id'] && $can_assign_self) { + mfh_insert_audit_trail_record($ticket['id'], 'TICKET', 'audit_assigned_self', hesk_date(), + array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')')); + } else { + // current user -> assigned user + mfh_insert_audit_trail_record($ticket['id'], 'TICKET', 'audit_assigned', hesk_date(), + array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')', + 1 => $row['name'] . ' (' . $row['user'] . ')')); + } + + $res = hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `owner`={$owner} WHERE `trackid`='" . hesk_dbEscape($trackingID) . "'"); if ($owner != $_SESSION['id'] && !hesk_checkPermission('can_view_ass_others', 0)) { $_SERVER['PHP_SELF'] = 'admin_main.php'; diff --git a/admin/change_status.php b/admin/change_status.php index 42d002f1..63c30832 100644 --- a/admin/change_status.php +++ b/admin/change_status.php @@ -37,6 +37,10 @@ hesk_token_check(); /* Ticket ID */ $trackingID = hesk_cleanID() or die($hesklang['int_error'] . ': ' . $hesklang['no_trackID']); +$ticket_id_rs = hesk_dbQuery("SELECT `id` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` WHERE `trackid` = '" . hesk_dbEscape($trackingID) . "'"); +$ticket_id_row = hesk_dbFetchAssoc($ticket_id_rs); +$ticket_id = $ticket_id_row['id']; + /* Valid statuses */ $statusSql = "SELECT `ID` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses`"; $status_options = array(); @@ -62,10 +66,13 @@ if ($statusRow['IsClosed']) // Closed } $action = $hesklang['ticket_been'] . ' ' . $hesklang['close']; - $revision = sprintf($hesklang['thist3'], hesk_date(), $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); + mfh_insert_audit_trail_record($ticket_id, 'TICKET', 'audit_closed', hesk_date(), + array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')')); + if ($hesk_settings['custopen'] != 1) { $locked = 1; + mfh_insert_audit_trail_record($ticket_id, 'TICKET', 'audit_automatically_locked', hesk_date(), array()); } // Notify customer of closed ticket? @@ -91,21 +98,24 @@ if ($statusRow['IsClosed']) // Closed } elseif ($statusRow['IsNewTicketStatus'] == 0) //Ticket is still open, but not new { $action = sprintf($hesklang['tsst'], $status_options[$status]); - $revision = sprintf($hesklang['thist9'], hesk_date(), $status_options[$status], $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); + mfh_insert_audit_trail_record($ticket_id, 'TICKET', 'audit_status', hesk_date(), + array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')', + 1 => $status_options[$status])); // Ticket is not resolved $closedby_sql = ' , `closedat`=NULL, `closedby`=NULL '; } else // Ticket is marked as "NEW" { $action = $hesklang['ticket_been'] . ' ' . $hesklang['opened']; - $revision = sprintf($hesklang['thist4'], hesk_date(), $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); + mfh_insert_audit_trail_record($ticket_id, 'TICKET', 'audit_opened', hesk_date(), + array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')')); // Ticket is not resolved $closedby_sql = ' , `closedat`=NULL, `closedby`=NULL '; } -hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `status`='{$status}', `locked`='{$locked}' $closedby_sql , `history`=CONCAT(`history`,'" . hesk_dbEscape($revision) . "') WHERE `trackid`='" . hesk_dbEscape($trackingID) . "'"); +hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `status`='{$status}', `locked`='{$locked}' $closedby_sql WHERE `trackid`='" . hesk_dbEscape($trackingID) . "'"); if (hesk_dbAffectedRows() != 1) { hesk_error("$hesklang[int_error]: $hesklang[trackID_not_found]."); diff --git a/admin/delete_tickets.php b/admin/delete_tickets.php index 7bc77b44..8a654873 100644 --- a/admin/delete_tickets.php +++ b/admin/delete_tickets.php @@ -81,10 +81,10 @@ $i = 0; // Possible priorities $priorities = array( - 'critical' => array('value' => 0, 'text' => $hesklang['critical'], 'formatted' => '' . $hesklang['critical'] . ''), - 'high' => array('value' => 1, 'text' => $hesklang['high'], 'formatted' => '' . $hesklang['high'] . ''), - 'medium' => array('value' => 2, 'text' => $hesklang['medium'], 'formatted' => '' . $hesklang['medium'] . ''), - 'low' => array('value' => 3, 'text' => $hesklang['low'], 'formatted' => $hesklang['low']), + 'critical' => array('value' => 0, 'lang' => 'critical', 'text' => $hesklang['critical'], 'formatted' => '' . $hesklang['critical'] . ''), + 'high' => array('value' => 1, 'lang' => 'high', 'text' => $hesklang['high'], 'formatted' => '' . $hesklang['high'] . ''), + 'medium' => array('value' => 2, 'lang' => 'medium', 'text' => $hesklang['medium'], 'formatted' => '' . $hesklang['medium'] . ''), + 'low' => array('value' => 3, 'lang' => 'low', 'text' => $hesklang['low'], 'formatted' => $hesklang['low']), ); // Change priority @@ -113,8 +113,10 @@ if (array_key_exists($_POST['a'], $priorities)) { hesk_okCategory($ticket['category']); - $revision = sprintf($hesklang['thist8'], hesk_date(), $priority['formatted'], $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); - hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `priority`='{$priority['value']}', `history`=CONCAT(`history`,'" . hesk_dbEscape($revision) . "') WHERE `id`={$this_id}"); + mfh_insert_audit_trail_record($this_id, 'TICKET', 'audit_priority', hesk_date(), + array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')', + 1 => $priority['lang'])); + hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `priority`='{$priority['value']}' WHERE `id`={$this_id}"); $i++; } @@ -133,8 +135,6 @@ elseif ($_POST['a'] == 'delete') { require(HESK_PATH . 'inc/email_functions.inc.php'); } - $revision = sprintf($hesklang['thist3'], hesk_date(), $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); - foreach ($_POST['id'] as $this_id) { if (is_array($this_id)) { continue; @@ -222,7 +222,8 @@ else { hesk_token_check('POST'); require(HESK_PATH . 'inc/email_functions.inc.php'); - $revision = sprintf($hesklang['thist3'], hesk_date(), $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); + mfh_insert_audit_trail_record($this_id, 'TICKET', 'audit_closed', hesk_date(), + array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')')); foreach ($_POST['id'] as $this_id) { if (is_array($this_id)) { @@ -239,7 +240,7 @@ else { $closedStatusRS = hesk_dbQuery("SELECT * FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses` WHERE `IsStaffClosedOption` = 1"); $closedStatus = hesk_dbFetchAssoc($closedStatusRS); - hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `status`='" . $closedStatus['ID'] . "', `closedat`=NOW(), `closedby`=" . intval($_SESSION['id']) . ", `history`=CONCAT(`history`,'" . hesk_dbEscape($revision) . "') WHERE `id`='" . intval($this_id) . "'"); + hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `status`='" . $closedStatus['ID'] . "', `closedat`=NOW(), `closedby`=" . intval($_SESSION['id']) . " WHERE `id`='" . intval($this_id) . "'"); $i++; // Notify customer of closed ticket? @@ -284,6 +285,14 @@ function hesk_fullyDeleteTicket() /* Delete ticket notes */ hesk_dbQuery("DELETE FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "notes` WHERE `ticket`='" . intval($ticket['id']) . "'"); + /* Delete audit trail records */ + hesk_dbQuery("DELETE FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "audit_trail_to_replacement_values` + WHERE `audit_trail_id` IN ( + SELECT `id` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "audit_trail` + WHERE `entity_type` = 'TICKET' AND `entity_id` = " . intval($ticket['id']) . ")"); + hesk_dbQuery("DELETE FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "audit_trail` WHERE `entity_type`='TICKET' + AND `entity_id` = " . intval($ticket['id'])); + /* Delete ticket reply drafts */ hesk_dbQuery("DELETE FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "reply_drafts` WHERE `ticket`=" . intval($ticket['id'])); diff --git a/admin/index.php b/admin/index.php index cef05749..b822ed29 100644 --- a/admin/index.php +++ b/admin/index.php @@ -202,7 +202,6 @@ function do_login() /* Close any old tickets here so Cron jobs aren't necessary */ if ($hesk_settings['autoclose']) { - $revision = sprintf($hesklang['thist3'], hesk_date(), $hesklang['auto']); $dt = date('Y-m-d H:i:s', time() - $hesk_settings['autoclose'] * 86400); @@ -226,6 +225,7 @@ function do_login() $ticket['dt'] = hesk_date($ticket['dt'], true); $ticket['lastchange'] = hesk_date($ticket['lastchange'], true); $ticket = hesk_ticketToPlain($ticket, 1, 0); + mfh_insert_audit_trail_record($ticket['id'], 'TICKET', 'audit_automatically_closed', hesk_date(), array()); hesk_notifyCustomer($modsForHesk_settings, 'ticket_closed'); } } @@ -234,7 +234,7 @@ function do_login() // Update ticket statuses and history in database if we're allowed to do so $defaultCloseRs = hesk_dbQuery('SELECT `ID` FROM `' . hesk_dbEscape($hesk_settings['db_pfix']) . 'statuses` WHERE `IsAutocloseOption` = 1'); $defaultCloseStatus = hesk_dbFetchAssoc($defaultCloseRs); - hesk_dbQuery("UPDATE `" . $hesk_settings['db_pfix'] . "tickets` SET `status`=" . intval($defaultCloseStatus['ID']) . ", `closedat`=NOW(), `closedby`='-1', `history`=CONCAT(`history`,'" . hesk_dbEscape($revision) . "') WHERE `status` = '" . $closedStatus['ID'] . "' AND `lastchange` <= '" . hesk_dbEscape($dt) . "' "); + hesk_dbQuery("UPDATE `" . $hesk_settings['db_pfix'] . "tickets` SET `status`=" . intval($defaultCloseStatus['ID']) . ", `closedat`=NOW(), `closedby`='-1' WHERE `status` = '" . $closedStatus['ID'] . "' AND `lastchange` <= '" . hesk_dbEscape($dt) . "' "); } } diff --git a/admin/lock.php b/admin/lock.php index 57bedfd6..71591724 100644 --- a/admin/lock.php +++ b/admin/lock.php @@ -37,27 +37,30 @@ hesk_token_check(); /* Ticket ID */ $trackingID = hesk_cleanID() or die($hesklang['int_error'] . ': ' . $hesklang['no_trackID']); + +// Get ticket info +$result = hesk_dbQuery("SELECT * FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` WHERE `trackid`='" . hesk_dbEscape($trackingID) . "' LIMIT 1"); +if (hesk_dbNumRows($result) != 1) { + hesk_error($hesklang['ticket_not_found']); +} +$ticket = hesk_dbFetchAssoc($result); + /* New locked status */ if (empty($_GET['locked'])) { $status = 0; $tmp = $hesklang['tunlock']; - $revision = sprintf($hesklang['thist6'], hesk_date(), $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); + mfh_insert_audit_trail_record($ticket['id'], 'TICKET', 'audit_unlocked', hesk_date(), + array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')')); $closedby_sql = ' , `closedat`=NULL, `closedby`=NULL '; } else { $status = 1; $tmp = $hesklang['tlock']; - $revision = sprintf($hesklang['thist5'], hesk_date(), $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'); + mfh_insert_audit_trail_record($ticket['id'], 'TICKET', 'audit_locked', hesk_date(), + array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')')); $closedby_sql = ' , `closedat`=NOW(), `closedby`=' . intval($_SESSION['id']) . ' '; // Notify customer of closed ticket? if ($hesk_settings['notify_closed']) { - // Get ticket info - $result = hesk_dbQuery("SELECT * FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` WHERE `trackid`='" . hesk_dbEscape($trackingID) . "' LIMIT 1"); - if (hesk_dbNumRows($result) != 1) { - hesk_error($hesklang['ticket_not_found']); - } - $ticket = hesk_dbFetchAssoc($result); - $closedStatusRS = hesk_dbQuery('SELECT `ID` FROM `' . hesk_dbEscape($hesk_settings['db_pfix']) . 'statuses` WHERE `IsClosed` = 1'); $ticketIsOpen = true; while ($row = hesk_dbFetchAssoc($closedStatusRS)) { @@ -82,7 +85,7 @@ $statusRs = hesk_dbQuery($statusSql); $statusRow = hesk_dbFetchAssoc($statusRs); $statusId = $statusRow['ID']; -hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `status`= {$statusId},`locked`='{$status}' $closedby_sql , `history`=CONCAT(`history`,'" . hesk_dbEscape($revision) . "') WHERE `trackid`='" . hesk_dbEscape($trackingID) . "'"); +hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `status`= {$statusId},`locked`='{$status}' $closedby_sql WHERE `trackid`='" . hesk_dbEscape($trackingID) . "'"); /* Back to ticket page and show a success message */ hesk_process_messages($tmp, 'admin_ticket.php?track=' . $trackingID . '&Refresh=' . rand(10000, 99999), 'SUCCESS'); \ No newline at end of file diff --git a/inc/posting_functions.inc.php b/inc/posting_functions.inc.php index dfe6b5a6..7e81bfbf 100644 --- a/inc/posting_functions.inc.php +++ b/inc/posting_functions.inc.php @@ -115,7 +115,7 @@ function hesk_newTicket($ticket, $isVerified = true) " . hesk_dbEscape($ticket['screen_resolution_height']) . ", " . hesk_dbEscape($ticket['screen_resolution_width']) . ", {$due_date}, - '', + '' {$custom_what} ) "); diff --git a/language/en/text.php b/language/en/text.php index 593322c2..e0b05533 100644 --- a/language/en/text.php +++ b/language/en/text.php @@ -2193,13 +2193,16 @@ $hesklang['changing_permissions_will_reset_permission_group'] = 'Changing a user $hesklang['audit_moved_category']='%s moved ticket to category %s'; // %s = new category, user making change $hesklang['audit_assigned']='%s assigned ticket to %s'; // %s = assigned user, user making change $hesklang['audit_assigned_self'] = '%s assigned ticket to themself'; -$hesklang['audit_closed']='%s closed ticket'; -$hesklang['audit_opened']='%s opened ticket'; -$hesklang['audit_locked']='%s locked ticket'; -$hesklang['audit_unlocked']='%s unlocked ticket'; +$hesklang['audit_unassigned'] = '%s unassigned ticket'; +$hesklang['audit_closed']='%s closed ticket'; // thist3 +$hesklang['audit_automatically_closed'] ='Ticket automatically closed'; +$hesklang['audit_opened']='%s opened ticket'; // thist4 +$hesklang['audit_locked']='%s locked ticket'; // thist5 +$hesklang['audit_automatically_locked'] = 'Ticket automatically locked'; +$hesklang['audit_unlocked']='%s unlocked ticket'; // thist6 $hesklang['audit_created']='%s created ticket'; -$hesklang['audit_priority']='%s changed priority to %s'; // %s = date,new priority, user making change -$hesklang['audit_status']='%s changed status to %s'; // %s = date, new status, user making change +$hesklang['audit_priority']='%s changed priority to %s'; // %s = date,new priority, user making change, thist8 +$hesklang['audit_status']='%s changed status to %s'; // %s = date, new status, user making change, thist9 $hesklang['audit_autoassigned']='%s automatically assigned to ticket'; $hesklang['audit_submitted_via_piping']='Ticket submitted via e-mail piping'; $hesklang['audit_attachment_deleted']='%s deleted attachment %s'; // %s = date, deleted attachment, user making change