From 3218ea85b206e5c9137542f88e3b8c5974a16c62 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Sat, 22 Feb 2025 17:15:41 -0500 Subject: [PATCH 01/11] Bug Fix Contact Detail Modal not showing Credentials or Tickets --- ajax/ajax_contact_details.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ajax/ajax_contact_details.php b/ajax/ajax_contact_details.php index e081abb3..07d9df15 100644 --- a/ajax/ajax_contact_details.php +++ b/ajax/ajax_contact_details.php @@ -402,7 +402,7 @@ ob_start(); -
+
@@ -499,7 +499,7 @@ ob_start(); -
+
From 95855fc22ee01570bede0b76fcd1c40a293b77d2 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Sat, 22 Feb 2025 17:27:16 -0500 Subject: [PATCH 02/11] Update links in client overview --- client_overview.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/client_overview.php b/client_overview.php index e90f8c6c..b4b1eb6e 100644 --- a/client_overview.php +++ b/client_overview.php @@ -378,7 +378,7 @@ $sql_asset_retired = mysqli_query( ?>

- + --

- + --

- + --

@@ -496,7 +496,7 @@ $sql_asset_retired = mysqli_query( ?>

- + --

- + --

- + --

From 9b109c7abd3f9872a9d13c17e72ce3f173d42c51 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Sat, 22 Feb 2025 17:29:19 -0500 Subject: [PATCH 03/11] Update links in project list --- projects.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects.php b/projects.php index 3f5965e9..d97f53d7 100644 --- a/projects.php +++ b/projects.php @@ -170,7 +170,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); $client_id = intval($row['client_id']); $client_name = nullable_htmlentities($row['client_name']); if ($client_name) { - $client_name_display = "$client_name"; + $client_name_display = "$client_name"; } else { $client_name_display = "-"; } From a994bb7e8cbdd357c8b1832a55a2980c99ac9813 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Sat, 22 Feb 2025 17:37:35 -0500 Subject: [PATCH 04/11] Update Links on Project and and client listing --- clients.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/clients.php b/clients.php index bbd5293a..3940b11b 100644 --- a/clients.php +++ b/clients.php @@ -398,7 +398,14 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); if (!empty($contact_name)) { ?>
- + + + +
Date: Sun, 23 Feb 2025 12:23:13 -0500 Subject: [PATCH 05/11] Fix missing public key var in certificate edit --- ajax/ajax_certificate_edit.php | 1 + 1 file changed, 1 insertion(+) diff --git a/ajax/ajax_certificate_edit.php b/ajax/ajax_certificate_edit.php index 2c7ec75d..157675ec 100644 --- a/ajax/ajax_certificate_edit.php +++ b/ajax/ajax_certificate_edit.php @@ -12,6 +12,7 @@ $certificate_description = nullable_htmlentities($row['certificate_description'] $certificate_domain = nullable_htmlentities($row['certificate_domain']); $certificate_domain_id = intval($row['certificate_domain_id']); $certificate_issued_by = nullable_htmlentities($row['certificate_issued_by']); +$certificate_public_key = nullable_htmlentities($row['certificate_public_key']); $certificate_expire = nullable_htmlentities($row['certificate_expire']); $certificate_created_at = nullable_htmlentities($row['certificate_created_at']); $client_id = intval($row['certificate_client_id']); From 66d43d8a95041273bed9aa1dbc799f3ba6673913 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Sun, 23 Feb 2025 12:30:47 -0500 Subject: [PATCH 06/11] Dashboard When clicking domains or certificates sort by expire date asc --- dashboard.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dashboard.php b/dashboard.php index 9bd8747e..cae20984 100644 --- a/dashboard.php +++ b/dashboard.php @@ -586,7 +586,7 @@ if ($user_config_dashboard_technical_enable == 1) {
- +

New Contacts

@@ -625,7 +625,7 @@ if ($user_config_dashboard_technical_enable == 1) {
- +

Expiring Domains

@@ -638,7 +638,7 @@ if ($user_config_dashboard_technical_enable == 1) {
- +

Expiring Certificates

From 8e66434ec4aa911dfa08fac3ccbce5374c9de1ab Mon Sep 17 00:00:00 2001 From: johnnyq Date: Sun, 23 Feb 2025 15:48:47 -0500 Subject: [PATCH 07/11] Updated asset details Link in rack, fixed opening asset details modal when clicking on a connected asset in asset details page --- asset_details.php | 1 + client_racks.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/asset_details.php b/asset_details.php index ad7f816b..f0ddb509 100644 --- a/asset_details.php +++ b/asset_details.php @@ -460,6 +460,7 @@ if (isset($_GET['asset_id'])) { // Show either "-" or "AssetName - Port" if ($connected_asset_name) { $connected_to_display = "
diff --git a/client_racks.php b/client_racks.php index 7e36c79a..acd1a575 100644 --- a/client_racks.php +++ b/client_racks.php @@ -261,7 +261,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); $icon = $d['icon']; // already from getAssetIcon ?> - From 02c1446cb82e40b8303e625dd28990d0a22d3fe6 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Mon, 24 Feb 2025 12:42:31 -0500 Subject: [PATCH 08/11] Fix Transfer Asset(s) to Client --- post/user/asset.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/post/user/asset.php b/post/user/asset.php index 727d1040..46db87ad 100644 --- a/post/user/asset.php +++ b/post/user/asset.php @@ -295,10 +295,9 @@ if (isset($_POST['bulk_transfer_client_asset'])) { while ($row = mysqli_fetch_array($sql_interfaces)) { $interface_name = sanitizeInput($row['interface_name']); $interface_mac = sanitizeInput($row['interface_mac']); - $interface_port = sanitizeInput($row['interface_port']); $interface_primary = intval($row['interface_primary']); - mysqli_query($mysqli,"INSERT INTO asset_interfaces SET interface_name = '$interface_name', interface_mac = '$interface_mac', interface_port = '$interface_port', interface_primary = $interface_primary, interface_asset_id = $new_asset_id"); + mysqli_query($mysqli,"INSERT INTO asset_interfaces SET interface_name = '$interface_name', interface_mac = '$interface_mac', interface_primary = $interface_primary, interface_asset_id = $new_asset_id"); } @@ -331,7 +330,7 @@ if (isset($_POST['bulk_transfer_client_asset'])) { $_SESSION['alert_message'] = "Transferred $asset_count assets to $new_client_name."; } - header("Location: client_assets.php?client_id=$new_client_id&asset_id=$new_asset_id"); + header("Location: " . $_SERVER["HTTP_REFERER"]); } if (isset($_POST['bulk_assign_asset_contact'])) { From a08393b4d41f5a349f7a7e529f13ed651a33a146 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Mon, 24 Feb 2025 12:52:35 -0500 Subject: [PATCH 09/11] Fix Redirect Link when scheduling tickets that conflict with other scheduled tickets --- post/user/ticket.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/post/user/ticket.php b/post/user/ticket.php index 720d6c97..e9319a40 100644 --- a/post/user/ticket.php +++ b/post/user/ticket.php @@ -2430,7 +2430,7 @@ if (isset($_POST['edit_ticket_schedule'])) { } else { $_SESSION['alert_type'] = "error"; $_SESSION['alert_message'] = "Ticket scheduled for $email_datetime. Yet there are conflicting tickets scheduled for the same time:
" . implode(",
", $conflicting_tickets); - header("Location: calendar_events.php"); + header("Location: calendar.php"); } } From 9aeda2ce538faa04e73a88c3333bde2c6188dfae Mon Sep 17 00:00:00 2001 From: johnnyq Date: Mon, 24 Feb 2025 13:18:32 -0500 Subject: [PATCH 10/11] Set Array instead of selecting Days to Expire in client overview --- client_overview.php | 135 +++++++++++++++++++++----------------------- 1 file changed, 63 insertions(+), 72 deletions(-) diff --git a/client_overview.php b/client_overview.php index b4b1eb6e..aad38117 100644 --- a/client_overview.php +++ b/client_overview.php @@ -2,8 +2,7 @@ require_once "includes/inc_all_client.php"; -// Get expiration days from select box -$expiration_days = isset($_GET['expiration_days']) ? intval($_GET['expiration_days']) : 90; +$expiration_days = [7, 30, 90]; // Array of expiration days $sql_recent_activities = mysqli_query( $mysqli, @@ -68,70 +67,72 @@ $sql_stale_tickets = mysqli_query( LIMIT 5" ); -// Get Domains Expiring -$sql_domains_expiring = mysqli_query( - $mysqli, - "SELECT * FROM domains - WHERE domain_client_id = $client_id - AND domain_expire IS NOT NULL - AND domain_archived_at IS NULL - AND domain_expire > CURRENT_DATE - AND domain_expire < CURRENT_DATE + INTERVAL $expiration_days DAY - ORDER BY domain_expire ASC - LIMIT 5" -); +foreach ($expiration_days as $days) { + // Get Domains Expiring + $sql_domains_expiring = mysqli_query( + $mysqli, + "SELECT * FROM domains + WHERE domain_client_id = $client_id + AND domain_expire IS NOT NULL + AND domain_archived_at IS NULL + AND domain_expire > CURRENT_DATE + AND domain_expire < CURRENT_DATE + INTERVAL $days DAY + ORDER BY domain_expire ASC + LIMIT 5" + ); -// Get Certificates Expiring -$sql_certificates_expiring = mysqli_query( - $mysqli, - "SELECT * FROM certificates - WHERE certificate_client_id = $client_id - AND certificate_expire IS NOT NULL - AND certificate_archived_at IS NULL - AND certificate_expire > CURRENT_DATE - AND certificate_expire < CURRENT_DATE + INTERVAL $expiration_days DAY - ORDER BY certificate_expire ASC - LIMIT 5" -); + // Get Certificates Expiring + $sql_certificates_expiring = mysqli_query( + $mysqli, + "SELECT * FROM certificates + WHERE certificate_client_id = $client_id + AND certificate_expire IS NOT NULL + AND certificate_archived_at IS NULL + AND certificate_expire > CURRENT_DATE + AND certificate_expire < CURRENT_DATE + INTERVAL $days DAY + ORDER BY certificate_expire ASC + LIMIT 5" + ); -// Get Licenses Expiring -$sql_licenses_expiring = mysqli_query( - $mysqli, - "SELECT * FROM software - WHERE software_client_id = $client_id - AND software_expire IS NOT NULL - AND software_archived_at IS NULL - AND software_expire > CURRENT_DATE - AND software_expire < CURRENT_DATE + INTERVAL $expiration_days DAY - ORDER BY software_expire ASC - LIMIT 5" -); + // Get Licenses Expiring + $sql_licenses_expiring = mysqli_query( + $mysqli, + "SELECT * FROM software + WHERE software_client_id = $client_id + AND software_expire IS NOT NULL + AND software_archived_at IS NULL + AND software_expire > CURRENT_DATE + AND software_expire < CURRENT_DATE + INTERVAL $days DAY + ORDER BY software_expire ASC + LIMIT 5" + ); -// Get Asset Warranties Expiring -$sql_asset_warranties_expiring = mysqli_query( - $mysqli, - "SELECT * FROM assets - WHERE asset_client_id = $client_id - AND asset_warranty_expire IS NOT NULL - AND asset_archived_at IS NULL - AND asset_warranty_expire > CURRENT_DATE - AND asset_warranty_expire < CURRENT_DATE + INTERVAL $expiration_days DAY - ORDER BY asset_warranty_expire ASC - LIMIT 5" -); + // Get Asset Warranties Expiring + $sql_asset_warranties_expiring = mysqli_query( + $mysqli, + "SELECT * FROM assets + WHERE asset_client_id = $client_id + AND asset_warranty_expire IS NOT NULL + AND asset_archived_at IS NULL + AND asset_warranty_expire > CURRENT_DATE + AND asset_warranty_expire < CURRENT_DATE + INTERVAL $days DAY + ORDER BY asset_warranty_expire ASC + LIMIT 5" + ); -// Get Assets Retiring 7 Year -$sql_asset_retire = mysqli_query( - $mysqli, - "SELECT * FROM assets - WHERE asset_client_id = $client_id - AND asset_install_date IS NOT NULL - AND asset_archived_at IS NULL - AND asset_install_date + INTERVAL 7 YEAR > CURRENT_DATE -- Not yet expired - AND asset_install_date + INTERVAL 7 YEAR <= CURRENT_DATE + INTERVAL $expiration_days DAY - ORDER BY asset_install_date ASC - LIMIT 5" -); + // Get Assets Retiring 7 Year + $sql_asset_retire = mysqli_query( + $mysqli, + "SELECT * FROM assets + WHERE asset_client_id = $client_id + AND asset_install_date IS NOT NULL + AND asset_archived_at IS NULL + AND asset_install_date + INTERVAL 7 YEAR > CURRENT_DATE + AND asset_install_date + INTERVAL 7 YEAR <= CURRENT_DATE + INTERVAL $days DAY + ORDER BY asset_install_date ASC + LIMIT 5" + ); +} /* * EXPIRED ITEMS @@ -354,16 +355,6 @@ $sql_asset_retired = mysqli_query(
Upcoming Expirations
-
-
- - - -
From 6cc6e80f922edb24d074a64849b24b03c27e8463 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Mon, 24 Feb 2025 16:19:22 -0500 Subject: [PATCH 11/11] Fixed ticket link for agent email notifications on scheduling tickets --- client_overview.php | 127 ++++++++++++++++++------------------ includes/inc_all_client.php | 24 +++---- post/user/ticket.php | 4 +- 3 files changed, 76 insertions(+), 79 deletions(-) diff --git a/client_overview.php b/client_overview.php index aad38117..17feeda9 100644 --- a/client_overview.php +++ b/client_overview.php @@ -2,7 +2,6 @@ require_once "includes/inc_all_client.php"; -$expiration_days = [7, 30, 90]; // Array of expiration days $sql_recent_activities = mysqli_query( $mysqli, @@ -60,79 +59,77 @@ $sql_stale_tickets = mysqli_query( $mysqli, "SELECT * FROM tickets WHERE ticket_client_id = $client_id - AND ticket_updated_at < CURRENT_DATE - INTERVAL 3 DAY + AND ticket_updated_at < CURRENT_DATE - INTERVAL 7 DAY AND ticket_resolved_At IS NULL AND ticket_closed_at IS NULL ORDER BY ticket_updated_at ASC LIMIT 5" ); -foreach ($expiration_days as $days) { - // Get Domains Expiring - $sql_domains_expiring = mysqli_query( - $mysqli, - "SELECT * FROM domains - WHERE domain_client_id = $client_id - AND domain_expire IS NOT NULL - AND domain_archived_at IS NULL - AND domain_expire > CURRENT_DATE - AND domain_expire < CURRENT_DATE + INTERVAL $days DAY - ORDER BY domain_expire ASC - LIMIT 5" - ); +// Get Domains Expiring +$sql_domains_expiring = mysqli_query( + $mysqli, + "SELECT * FROM domains + WHERE domain_client_id = $client_id + AND domain_expire IS NOT NULL + AND domain_archived_at IS NULL + AND domain_expire > CURRENT_DATE + AND domain_expire < CURRENT_DATE + INTERVAL 45 DAY + ORDER BY domain_expire ASC + LIMIT 5" +); - // Get Certificates Expiring - $sql_certificates_expiring = mysqli_query( - $mysqli, - "SELECT * FROM certificates - WHERE certificate_client_id = $client_id - AND certificate_expire IS NOT NULL - AND certificate_archived_at IS NULL - AND certificate_expire > CURRENT_DATE - AND certificate_expire < CURRENT_DATE + INTERVAL $days DAY - ORDER BY certificate_expire ASC - LIMIT 5" - ); +// Get Certificates Expiring +$sql_certificates_expiring = mysqli_query( + $mysqli, + "SELECT * FROM certificates + WHERE certificate_client_id = $client_id + AND certificate_expire IS NOT NULL + AND certificate_archived_at IS NULL + AND certificate_expire > CURRENT_DATE + AND certificate_expire < CURRENT_DATE + INTERVAL 45 DAY + ORDER BY certificate_expire ASC + LIMIT 5" +); - // Get Licenses Expiring - $sql_licenses_expiring = mysqli_query( - $mysqli, - "SELECT * FROM software - WHERE software_client_id = $client_id - AND software_expire IS NOT NULL - AND software_archived_at IS NULL - AND software_expire > CURRENT_DATE - AND software_expire < CURRENT_DATE + INTERVAL $days DAY - ORDER BY software_expire ASC - LIMIT 5" - ); +// Get Licenses Expiring +$sql_licenses_expiring = mysqli_query( + $mysqli, + "SELECT * FROM software + WHERE software_client_id = $client_id + AND software_expire IS NOT NULL + AND software_archived_at IS NULL + AND software_expire > CURRENT_DATE + AND software_expire < CURRENT_DATE + INTERVAL 45 DAY + ORDER BY software_expire ASC + LIMIT 5" +); - // Get Asset Warranties Expiring - $sql_asset_warranties_expiring = mysqli_query( - $mysqli, - "SELECT * FROM assets - WHERE asset_client_id = $client_id - AND asset_warranty_expire IS NOT NULL - AND asset_archived_at IS NULL - AND asset_warranty_expire > CURRENT_DATE - AND asset_warranty_expire < CURRENT_DATE + INTERVAL $days DAY - ORDER BY asset_warranty_expire ASC - LIMIT 5" - ); +// Get Asset Warranties Expiring +$sql_asset_warranties_expiring = mysqli_query( + $mysqli, + "SELECT * FROM assets + WHERE asset_client_id = $client_id + AND asset_warranty_expire IS NOT NULL + AND asset_archived_at IS NULL + AND asset_warranty_expire > CURRENT_DATE + AND asset_warranty_expire < CURRENT_DATE + INTERVAL 45 DAY + ORDER BY asset_warranty_expire ASC + LIMIT 5" +); - // Get Assets Retiring 7 Year - $sql_asset_retire = mysqli_query( - $mysqli, - "SELECT * FROM assets - WHERE asset_client_id = $client_id - AND asset_install_date IS NOT NULL - AND asset_archived_at IS NULL - AND asset_install_date + INTERVAL 7 YEAR > CURRENT_DATE - AND asset_install_date + INTERVAL 7 YEAR <= CURRENT_DATE + INTERVAL $days DAY - ORDER BY asset_install_date ASC - LIMIT 5" - ); -} +// Get Assets Retiring 7 Year +$sql_asset_retire = mysqli_query( + $mysqli, + "SELECT * FROM assets + WHERE asset_client_id = $client_id + AND asset_install_date IS NOT NULL + AND asset_archived_at IS NULL + AND asset_install_date + INTERVAL 7 YEAR > CURRENT_DATE + AND asset_install_date + INTERVAL 7 YEAR <= CURRENT_DATE + INTERVAL 45 DAY + ORDER BY asset_install_date ASC + LIMIT 5" +); /* * EXPIRED ITEMS @@ -354,7 +351,7 @@ $sql_asset_retired = mysqli_query(
-
Upcoming Expirations
+
Expiring in the Next 45 Days
diff --git a/includes/inc_all_client.php b/includes/inc_all_client.php index 2588e9fa..aa25a4d6 100644 --- a/includes/inc_all_client.php +++ b/includes/inc_all_client.php @@ -216,18 +216,18 @@ if (isset($_GET['client_id'])) { // Expiring Items - // Count Domains Expiring within 90 Days + // Count Domains Expiring within 45 Days $row = mysqli_fetch_assoc(mysqli_query( $mysqli, "SELECT COUNT('domain_id') AS num FROM domains WHERE domain_client_id = $client_id AND domain_expire IS NOT NULL - AND domain_expire < CURRENT_DATE + INTERVAL 90 DAY + AND domain_expire < CURRENT_DATE + INTERVAL 45 DAY AND domain_archived_at IS NULL" )); - $num_domains_expiring = intval($row['num']); + $num_domains_expiring_warning= intval($row['num']); - // Count Domains Expired or within 14 days + // Count Domains Expired or within 7 days $row = mysqli_fetch_assoc(mysqli_query( $mysqli, "SELECT COUNT('domain_id') AS num FROM domains @@ -235,24 +235,24 @@ if (isset($_GET['client_id'])) { AND domain_expire IS NOT NULL AND ( domain_expire < CURRENT_DATE - OR domain_expire < CURRENT_DATE + INTERVAL 14 DAY + OR domain_expire < CURRENT_DATE + INTERVAL 7 DAY ) AND domain_archived_at IS NULL" )); - $num_domains_expired = intval($row['num']); + $num_domains_urgent = intval($row['num']); - // Count Certificates Expiring within 90 Days + // Count Certificates Expiring within 45 Days $row = mysqli_fetch_assoc(mysqli_query( $mysqli, "SELECT COUNT('certificate_id') AS num FROM certificates WHERE certificate_client_id = $client_id AND certificate_expire IS NOT NULL - AND certificate_expire < CURRENT_DATE + INTERVAL 90 DAY + AND certificate_expire < CURRENT_DATE + INTERVAL 45 DAY AND certificate_archived_at IS NULL" )); $num_certificates_expiring = intval($row['num']); - // Count Certificates Expired or within 14 days + // Count Certificates Expired or within 7 days $row = mysqli_fetch_assoc(mysqli_query( $mysqli, "SELECT COUNT('certificate_id') AS num FROM certificates @@ -260,7 +260,7 @@ if (isset($_GET['client_id'])) { AND certificate_expire IS NOT NULL AND ( certificate_expire < CURRENT_DATE - OR certificate_expire < CURRENT_DATE + INTERVAL 14 DAY + OR certificate_expire < CURRENT_DATE + INTERVAL 7 DAY ) AND certificate_archived_at IS NULL" )); @@ -272,7 +272,7 @@ if (isset($_GET['client_id'])) { "SELECT COUNT('software_id') AS num FROM software WHERE software_client_id = $client_id AND software_expire IS NOT NULL - AND software_expire < CURRENT_DATE + INTERVAL 90 DAY + AND software_expire < CURRENT_DATE + INTERVAL 45 DAY AND software_archived_at IS NULL" )); $num_software_expiring = intval($row['num']); @@ -285,7 +285,7 @@ if (isset($_GET['client_id'])) { AND software_expire IS NOT NULL AND ( software_expire < CURRENT_DATE - OR software_expire < CURRENT_DATE + INTERVAL 14 DAY + OR software_expire < CURRENT_DATE + INTERVAL 7 DAY ) AND software_archived_at IS NULL" )); diff --git a/post/user/ticket.php b/post/user/ticket.php index e9319a40..f66db5f0 100644 --- a/post/user/ticket.php +++ b/post/user/ticket.php @@ -2338,7 +2338,7 @@ if (isset($_POST['edit_ticket_schedule'])) { 'recipient' => $user_email, 'recipient_name' => $user_name, 'subject' => "Ticket Scheduled - [$ticket_prefix$ticket_number] - $ticket_subject", - 'body' => "Hello, " . $user_name . "

The ticket regarding $ticket_subject has been scheduled for $email_datetime.

--------------------------------
$ticket_link
--------------------------------

Please do not reply to this email.

Ticket: $ticket_prefix$ticket_number
Subject: $ticket_subject
Portal: https://$config_base_url/ticket.php?id=$ticket_id

~
$session_company_name
Support Department
$config_ticket_from_email", + 'body' => "Hello, " . $user_name . "

The ticket regarding $ticket_subject has been scheduled for $email_datetime.

--------------------------------
$ticket_link
--------------------------------

Please do not reply to this email.

Ticket: $ticket_prefix$ticket_number
Subject: $ticket_subject
Portal: https://$config_base_url/ticket.php?ticket_id=$ticket_id

~
$session_company_name
Support Department
$config_ticket_from_email", 'cal_str' => $cal_str ]; @@ -2491,7 +2491,7 @@ if (isset($_GET['cancel_ticket_schedule'])) { 'recipient' => $user_email, 'recipient_name' => $user_name, 'subject' => "Ticket Schedule Cancelled - [$ticket_prefix$ticket_number] - $ticket_subject", - 'body' => "Hello, " . $user_name . "

Scheduled work for the ticket regarding $ticket_subject has been cancelled.

--------------------------------
$ticket_link
--------------------------------

Please do not reply to this email.

Ticket: $ticket_prefix$ticket_number
Subject: $ticket_subject
Portal: https://$config_base_url/ticket.php?id=$ticket_id

~
$session_company_name
Support Department
$config_ticket_from_email", + 'body' => "Hello, " . $user_name . "

Scheduled work for the ticket regarding $ticket_subject has been cancelled.

--------------------------------
$ticket_link
--------------------------------

Please do not reply to this email.

Ticket: $ticket_prefix$ticket_number
Subject: $ticket_subject
Portal: https://$config_base_url/ticket.php?id=$ticket_id

~
$session_company_name
Support Department
$config_ticket_from_email", 'cal_str' => $cal_str ];