Pretty much wrapped up with the new ticket history
This commit is contained in:
parent
44ab918292
commit
0670d74c1e
@ -189,9 +189,9 @@ if ($hesk_settings['attachments']['use'] && !empty($attachments)) {
|
||||
// Add reply
|
||||
$html = $modsForHesk_settings['rich_text_for_tickets'];
|
||||
if ($submit_as_customer) {
|
||||
hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($hesk_settings['db_pfix']) . "replies` (`replyto`,`name`,`message`,`dt`,`attachments`,`html`) VALUES ('" . intval($replyto) . "','" . hesk_dbEscape(addslashes($ticket['name'])) . "','" . hesk_dbEscape($message . "<br /><br /><i>{$hesklang['creb']} {$_SESSION['name']}</i>") . "',NOW(),'" . hesk_dbEscape($myattachments) . "', '" . $html . "')");
|
||||
hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($hesk_settings['db_pfix']) . "replies` (`replyto`,`name`,`message`,`dt`,`attachments`,`html`) VALUES ('" . intval($replyto) . "','" . hesk_dbEscape(addslashes($ticket['name'])) . "','" . hesk_dbEscape($message . "<br /><br /><i>{$hesklang['creb']} {$_SESSION['name']}</i>") . "','" . hesk_dbEscape(hesk_date()) . "','" . hesk_dbEscape($myattachments) . "', '" . $html . "')");
|
||||
} else {
|
||||
hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($hesk_settings['db_pfix']) . "replies` (`replyto`,`name`,`message`,`dt`,`attachments`,`staffid`,`html`) VALUES ('" . intval($replyto) . "','" . hesk_dbEscape(addslashes($_SESSION['name'])) . "','" . hesk_dbEscape($message) . "',NOW(),'" . hesk_dbEscape($myattachments) . "','" . intval($_SESSION['id']) . "', '" . $html . "')");
|
||||
hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($hesk_settings['db_pfix']) . "replies` (`replyto`,`name`,`message`,`dt`,`attachments`,`staffid`,`html`) VALUES ('" . intval($replyto) . "','" . hesk_dbEscape(addslashes($_SESSION['name'])) . "','" . hesk_dbEscape($message) . "','" . hesk_dbEscape(hesk_date()) . "','" . hesk_dbEscape($myattachments) . "','" . intval($_SESSION['id']) . "', '" . $html . "')");
|
||||
}
|
||||
|
||||
/* Track ticket status changes for history */
|
||||
@ -252,6 +252,9 @@ if ($ticket['locked']) {
|
||||
|
||||
if ($newStatus['IsClosed'] && hesk_checkPermission('can_resolve', 0)) {
|
||||
$audit_closed = array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')');
|
||||
$audit_status = array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')',
|
||||
1 => mfh_getDisplayTextForStatusId($new_status)
|
||||
);
|
||||
$sql_status = " , `closedat`=NOW(), `closedby`=" . intval($_SESSION['id']) . " ";
|
||||
|
||||
// Lock the ticket if customers are not allowed to reopen tickets
|
||||
|
@ -509,13 +509,26 @@ if (($can_reply || $can_edit) && isset($_POST['childTrackingId'])) {
|
||||
}
|
||||
|
||||
hesk_dbQuery('UPDATE `' . hesk_dbEscape($hesk_settings['db_pfix']) . 'tickets` SET `parent` = ' . intval($ticket['id']) . ' WHERE `trackid` = \'' . hesk_dbEscape(hesk_POST('childTrackingId')) . '\'');
|
||||
mfh_insert_audit_trail_record($ticket['id'], 'TICKET', 'audit_linked_ticket', hesk_date(),
|
||||
array(
|
||||
0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')',
|
||||
1 => hesk_POST('childTrackingId')
|
||||
));
|
||||
hesk_process_messages(sprintf($hesklang['link_added'], $_POST['childTrackingId']), 'admin_ticket.php?track=' . $trackingID . '&Refresh=' . mt_rand(10000, 99999), 'SUCCESS');
|
||||
}
|
||||
|
||||
/* Delete child action */
|
||||
if (($can_reply || $can_edit) && isset($_GET['deleteChild'])) {
|
||||
//-- Delete the relationship
|
||||
$innerTrackingRs = hesk_dbQuery("SELECT `trackid` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` WHERE `id` = " . hesk_dbEscape($_GET['deleteChild']));
|
||||
$innerTrackingId = hesk_dbFetchAssoc($innerTrackingRs);
|
||||
|
||||
hesk_dbQuery('UPDATE `' . hesk_dbEscape($hesk_settings['db_pfix']) . 'tickets` SET `parent` = NULL WHERE `ID` = ' . hesk_dbEscape($_GET['deleteChild']));
|
||||
mfh_insert_audit_trail_record($ticket['id'], 'TICKET', 'audit_unlinked_ticket', hesk_date(),
|
||||
array(
|
||||
0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')',
|
||||
1 => $innerTrackingId['trackid']
|
||||
));
|
||||
hesk_process_messages($hesklang['ticket_no_longer_linked'], 'admin_ticket.php?track=' . $trackingID . '&Refresh=' . mt_rand(10000, 99999), 'SUCCESS');
|
||||
|
||||
} elseif (($can_reply || $can_edit) && isset($_GET['deleteParent'])) {
|
||||
@ -1830,6 +1843,12 @@ function hesk_printTicketReplies()
|
||||
$b_date = strtotime($b['date']);
|
||||
}
|
||||
|
||||
if ($a_date === $b_date && $a['SORT_TYPE'] != $b['SORT_TYPE']) {
|
||||
if ($a['SORT_TYPE'] != $b['SORT_TYPE']) {
|
||||
return $a['SORT_TYPE'] == 'REPLY' ? -1 : 1;
|
||||
}
|
||||
}
|
||||
|
||||
return $a_date - $b_date;
|
||||
});
|
||||
|
||||
@ -1938,7 +1957,7 @@ function mfh_print_audit_record($record) {
|
||||
$font_icon = 'fa-user-plus';
|
||||
break;
|
||||
case 'audit_unassigned':
|
||||
$font_icon = 'fa-user-minus';
|
||||
$font_icon = 'fa-user-times';
|
||||
break;
|
||||
case 'audit_autoassigned':
|
||||
$font_icon = 'fa-bolt';
|
||||
@ -1991,7 +2010,22 @@ function mfh_print_audit_record($record) {
|
||||
$font_icon = 'fa-code-fork';
|
||||
break;
|
||||
case 'audit_time_worked':
|
||||
$font_icon = 'fa-clock';
|
||||
$font_icon = 'fa fa-clock-o';
|
||||
break;
|
||||
case 'audit_due_date_removed':
|
||||
$font_icon = 'fa fa-calendar-minus-o';
|
||||
break;
|
||||
case 'audit_due_date_changed':
|
||||
$font_icon = 'fa fa-calendar';
|
||||
|
||||
//-- Format the date
|
||||
$record['replacement_values'][1] = date('Y-m-d', strtotime($record['replacement_values'][1]));
|
||||
break;
|
||||
case 'audit_linked_ticket':
|
||||
$font_icon = 'fa fa-link';
|
||||
break;
|
||||
case 'audit_unlinked_ticket':
|
||||
$font_icon = 'fa fa-chain-broken';
|
||||
break;
|
||||
default:
|
||||
$font_icon = 'fa-question-circle';
|
||||
|
@ -53,7 +53,7 @@ $owner = intval(hesk_REQUEST('owner'));
|
||||
/* If ID is -1 the ticket will be unassigned */
|
||||
if ($owner == -1) {
|
||||
$res = hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `owner`=0 WHERE `trackid`='" . hesk_dbEscape($trackingID) . "'");
|
||||
mfh_insert_audit_trail_record($ticket['id'], 'TICKET', 'audit_unassigned', date(),
|
||||
mfh_insert_audit_trail_record($ticket['id'], 'TICKET', 'audit_unassigned', hesk_date(),
|
||||
array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')'));
|
||||
|
||||
hesk_process_messages($hesklang['tunasi2'], $_SERVER['PHP_SELF'], 'SUCCESS');
|
||||
|
@ -72,6 +72,8 @@ if ($statusRow['IsClosed']) // Closed
|
||||
|
||||
$action = $hesklang['ticket_been'] . ' ' . $hesklang['close'];
|
||||
$audit_closed = array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')');
|
||||
$audit_status = array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')',
|
||||
1 => $status_options[$status]);
|
||||
|
||||
|
||||
if ($hesk_settings['custopen'] != 1) {
|
||||
@ -120,22 +122,22 @@ if ($statusRow['IsClosed']) // Closed
|
||||
|
||||
hesk_dbQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `status`='{$status}', `locked`='{$locked}' $closedby_sql WHERE `trackid`='" . hesk_dbEscape($trackingID) . "'");
|
||||
|
||||
if ($audit_closed != null) {
|
||||
mfh_insert_audit_trail_record($ticket_id, 'TICKET', 'audit_closed', hesk_date(),
|
||||
$audit_closed);
|
||||
}
|
||||
|
||||
if ($audit_locked != null) {
|
||||
mfh_insert_audit_trail_record($ticket_id, 'TICKET', 'audit_automatically_locked', hesk_date(),
|
||||
array());
|
||||
}
|
||||
|
||||
if ($audit_status != null) {
|
||||
if ($audit_status !== null) {
|
||||
mfh_insert_audit_trail_record($ticket_id, 'TICKET', 'audit_status', hesk_date(),
|
||||
$audit_status);
|
||||
}
|
||||
|
||||
if ($audit_opened != null) {
|
||||
if ($audit_closed !== null) {
|
||||
mfh_insert_audit_trail_record($ticket_id, 'TICKET', 'audit_closed', hesk_date(),
|
||||
$audit_closed);
|
||||
}
|
||||
|
||||
if ($audit_locked !== null) {
|
||||
mfh_insert_audit_trail_record($ticket_id, 'TICKET', 'audit_automatically_locked', hesk_date(),
|
||||
array());
|
||||
}
|
||||
|
||||
if ($audit_opened !== null) {
|
||||
mfh_insert_audit_trail_record($ticket_id, 'TICKET', 'audit_opened', hesk_date(),
|
||||
$audit_opened);
|
||||
}
|
||||
|
@ -209,23 +209,25 @@ function do_login()
|
||||
$closedStatus = hesk_dbFetchAssoc($closedStatusRs);
|
||||
// Are we allowed to close tickets in this status?
|
||||
if ($closedStatus['Closable'] == 'yes' || $closedStatus['Closable'] == 'sonly') {
|
||||
// Notify customer of closed ticket?
|
||||
if ($hesk_settings['notify_closed']) {
|
||||
// Get list of tickets
|
||||
$result = hesk_dbQuery("SELECT * FROM `" . $hesk_settings['db_pfix'] . "tickets` WHERE `status` = " . $closedStatus['ID'] . " AND `lastchange` <= '" . hesk_dbEscape($dt) . "' ");
|
||||
if (hesk_dbNumRows($result) > 0) {
|
||||
global $ticket;
|
||||
|
||||
// Load required functions?
|
||||
if (!function_exists('hesk_notifyCustomer')) {
|
||||
require(HESK_PATH . 'inc/email_functions.inc.php');
|
||||
}
|
||||
$result = hesk_dbQuery("SELECT * FROM `" . $hesk_settings['db_pfix'] . "tickets` WHERE `status` = " . $closedStatus['ID'] . " AND `lastchange` <= '" . hesk_dbEscape($dt) . "' ");
|
||||
if (hesk_dbNumRows($result) > 0) {
|
||||
global $ticket;
|
||||
|
||||
while ($ticket = hesk_dbFetchAssoc($result)) {
|
||||
$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());
|
||||
// Load required functions?
|
||||
if (!function_exists('hesk_notifyCustomer')) {
|
||||
require(HESK_PATH . 'inc/email_functions.inc.php');
|
||||
}
|
||||
|
||||
while ($ticket = hesk_dbFetchAssoc($result)) {
|
||||
$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());
|
||||
|
||||
// Notify customer of closed ticket?
|
||||
if ($hesk_settings['notify_closed']) {
|
||||
// Get list of tickets
|
||||
hesk_notifyCustomer($modsForHesk_settings, 'ticket_closed');
|
||||
}
|
||||
}
|
||||
@ -234,7 +236,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' 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) . "' ");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -352,7 +352,7 @@ div.ticket-info {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.timeline-header.audit-record {
|
||||
font-size: 12px !important;
|
||||
|
||||
.timeline > li > .timeline-item > .timeline-header.audit-record {
|
||||
font-size: 12px;
|
||||
border-bottom: none;
|
||||
}
|
@ -194,12 +194,25 @@ function delete_event($id, $hesk_settings) {
|
||||
}
|
||||
|
||||
function update_ticket_due_date($ticket, $hesk_settings) {
|
||||
$ticket_id_rs = hesk_dbQuery("SELECT `id` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` WHERE `trackid` = '" . hesk_dbEscape($ticket['trackid']) . "'");
|
||||
$ticket_id = hesk_dbFetchAssoc($ticket_id_rs);
|
||||
|
||||
$due_date = 'NULL';
|
||||
$language_key = 'audit_due_date_removed';
|
||||
$audit_array = array(0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')');
|
||||
if ($ticket['due_date'] != NULL) {
|
||||
$audit_array = array(
|
||||
0 => $_SESSION['name'] . ' (' . $_SESSION['user'] . ')',
|
||||
1 => date('Y-m-d H:i:s', strtotime($ticket['due_date']))
|
||||
);
|
||||
$due_date = "'" . date('Y-m-d H:i:s', strtotime($ticket['due_date'])) . "'";
|
||||
$language_key = 'audit_due_date_changed';
|
||||
}
|
||||
$sql = "UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` SET `due_date` = {$due_date}, `overdue_email_sent` = '0'
|
||||
WHERE `trackid` = '" . hesk_dbEscape($ticket['trackid']) . "'";
|
||||
|
||||
mfh_insert_audit_trail_record($ticket_id['id'], 'TICKET', $language_key, hesk_date(),
|
||||
$audit_array);
|
||||
|
||||
hesk_dbQuery($sql);
|
||||
}
|
@ -2210,6 +2210,10 @@ $hesklang['audit_merged']='%s merged ticket %s with this ticket'; // %s = date,
|
||||
$hesklang['audit_time_worked']='%s updated time worked to %s'; // %s = date, new time worked, user making change
|
||||
$hesklang['audit_submitted_by']='%s submitted ticket';
|
||||
$hesklang['audit_submitted_via_pop']='Ticket submitted via POP3 fetching'; // thist16
|
||||
$hesklang['audit_due_date_removed'] = '%s removed due date';
|
||||
$hesklang['audit_due_date_changed'] = '%s changed due date to %s';
|
||||
$hesklang['audit_linked_ticket'] = '%s linked ticket %s to this ticket';
|
||||
$hesklang['audit_unlinked_ticket'] = '%s unlinked ticket %s';
|
||||
|
||||
// DO NOT CHANGE BELOW
|
||||
if (!defined('IN_SCRIPT')) die('PHP syntax OK!');
|
||||
|
Loading…
x
Reference in New Issue
Block a user