From 2b6be6ba45bc02b9a77f23525ba4601ccc98ef3e Mon Sep 17 00:00:00 2001 From: Marcus Hill Date: Sun, 17 Sep 2023 12:00:27 +0100 Subject: [PATCH] Ticketing: Add example logic for how we might allow customised subject/ticket body --- post/ticket.php | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/post/ticket.php b/post/ticket.php index 2ffadb7e1..1af28755e 100644 --- a/post/ticket.php +++ b/post/ticket.php @@ -46,7 +46,7 @@ if (!empty($config_smtp_host) && $config_ticket_client_general_notifications == 1) { // Get contact/ticket details - $sql = mysqli_query($mysqli,"SELECT contact_name, contact_email, ticket_prefix, ticket_number, ticket_subject, ticket_details, ticket_client_id FROM tickets + $sql = mysqli_query($mysqli,"SELECT contact_name, contact_email, ticket_prefix, ticket_number, ticket_category, ticket_subject, ticket_details, ticket_priority, ticket_status, ticket_created_by, ticket_assigned_to, ticket_client_id FROM tickets LEFT JOIN clients ON ticket_client_id = client_id LEFT JOIN contacts ON ticket_contact_id = contact_id WHERE ticket_id = $ticket_id"); @@ -56,8 +56,11 @@ $contact_name = $row['contact_name']; $ticket_prefix = $row['ticket_prefix']; $ticket_number = intval($row['ticket_number']); + $ticket_category = $row['ticket_category']; $ticket_subject = $row['ticket_subject']; $ticket_details = $row['ticket_details']; + $ticket_priority = $row['ticket_priority']; + $ticket_status = $row['ticket_status']; $client_id = intval($row['ticket_client_id']); $ticket_created_by = intval($row['ticket_created_by']); $ticket_assigned_to = intval($row['ticket_assigned_to']); @@ -74,12 +77,31 @@ $sql = mysqli_query($mysqli,"SELECT company_phone FROM companies WHERE company_id = 1"); - $company_phone = formatPhoneNumber($row['company_phone']); + $company_phone = formatPhoneNumber($row['company_phone']); // TODO: Check if this even works // Verify contact email is valid if (filter_var($contact_email_escaped, FILTER_VALIDATE_EMAIL)) { - $subject_escaped = mysqli_escape_string($mysqli, "Ticket created - [$ticket_prefix$ticket_number] - $ticket_subject"); + $email_custom_vars = array( + "#TICKET_CONTACT_NAME#" => $contact_name, + "#TICKET_PREFIX#" => $ticket_prefix, + "#TICKET_NUMBER#" => $ticket_number, + "#TICKET_URL#" => "https://$config_base_url/portal/ticket.php?id=$ticket_id", + "#TICKET_SUBJECT#" => $ticket_subject, + "#TICKET_PRIORITY#" => $ticket_priority, + "#TICKET_STATUS#" => $ticket_status, + "#TICKET_CATEGORY#" => $ticket_category, + "#TICKET_AGENT#", // todo + "#TICKET_COMPANY_NAME#" => $session_company_name, + "#TICKET_COMPANY_EMAIL" => $config_ticket_from_email, + ); + $ticket_subject_base = "Ticket created - [#TICKET_PREFIX##TICKET_NUMBER#] - #TICKET_SUBJECT#"; // Eventually this will come from the DB instead + + foreach ($email_custom_vars as $key => $item) { + $ticket_subject_base = str_replace($key, $item, $ticket_subject_base); + } + + $subject_escaped = mysqli_escape_string($mysqli, "$ticket_subject_base"); $body_escaped = mysqli_escape_string($mysqli, "##- Please type your reply above this line -##

Hello, $contact_name

A ticket regarding \"$ticket_subject\" has been created for you.

--------------------------------
$ticket_details--------------------------------

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

~
$session_company_name
Support Department
$config_ticket_from_email
$company_phone"); // Email Ticket Contact