From d2e8dc1439877d4886569a92b6485a9439f0f1c7 Mon Sep 17 00:00:00 2001 From: cs2000 Date: Wed, 4 Feb 2026 13:26:17 +0000 Subject: [PATCH] Changes for M365 oAuth MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fixed email queue gating for OAuth SMTP setups by treating configured config_smtp_provider as mail-enabled, even when config_smtp_host is blank. - Restores queueing for public ticket reply emails (including “Public Comment & Email”) and related ticket notification paths. --- agent/ticket.php | 360 +++++++++++++++++++++-------------------------- 1 file changed, 158 insertions(+), 202 deletions(-) diff --git a/agent/ticket.php b/agent/ticket.php index c1cf0793..266f01db 100644 --- a/agent/ticket.php +++ b/agent/ticket.php @@ -48,7 +48,7 @@ if (isset($_GET['ticket_id'])) { require_once "../includes/footer.php"; } else { - $row = mysqli_fetch_assoc($sql); + $row = mysqli_fetch_array($sql); $client_id = intval($row['client_id']); $client_name = nullable_htmlentities($row['client_name']); $client_type = nullable_htmlentities($row['client_type']); @@ -80,11 +80,11 @@ if (isset($_GET['ticket_id'])) { //Set Ticket Badge Color based of priority if ($ticket_priority == "High") { - $ticket_priority_display = "$ticket_priority"; + $ticket_priority_display = "$ticket_priority"; } elseif ($ticket_priority == "Medium") { - $ticket_priority_display = "$ticket_priority"; + $ticket_priority_display = "$ticket_priority"; } elseif ($ticket_priority == "Low") { - $ticket_priority_display = "$ticket_priority"; + $ticket_priority_display = "$ticket_priority"; } else { $ticket_priority_display = ""; } @@ -113,7 +113,7 @@ if (isset($_GET['ticket_id'])) { $ticket_assigned_to = intval($row['ticket_assigned_to']); if (empty($ticket_assigned_to)) { - $ticket_assigned_to_display = "Unassigned"; + $ticket_assigned_to_display = "Not Assigned"; } else { $ticket_assigned_to_display = nullable_htmlentities($row['user_name']); } @@ -149,8 +149,7 @@ if (isset($_GET['ticket_id'])) { $vendor_description = nullable_htmlentities($row['vendor_description']); $vendor_account_number = nullable_htmlentities($row['vendor_account_number']); $vendor_contact_name = nullable_htmlentities($row['vendor_contact_name']); - $vendor_phone_country_code = nullable_htmlentities($row['vendor_phone_country_code']); - $vendor_phone = nullable_htmlentities(formatPhoneNumber($row['vendor_phone'], $vendor_phone_country_code)); + $vendor_phone = formatPhoneNumber($row['vendor_phone']); $vendor_extension = nullable_htmlentities($row['vendor_extension']); $vendor_email = nullable_htmlentities($row['vendor_email']); $vendor_website = nullable_htmlentities($row['vendor_website']); @@ -187,49 +186,73 @@ if (isset($_GET['ticket_id'])) { if($project_manager) { $sql_project_manager = mysqli_query($mysqli,"SELECT * FROM users WHERE user_id = $project_manager"); - $row = mysqli_fetch_assoc($sql_project_manager); + $row = mysqli_fetch_array($sql_project_manager); $project_manager_name = nullable_htmlentities($row['user_name']); } if ($contact_id) { //Get Contact Ticket Stats $ticket_related_open = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS ticket_related_open FROM tickets WHERE ticket_status != 'Closed' AND ticket_contact_id = $contact_id "); - $row = mysqli_fetch_assoc($ticket_related_open); + $row = mysqli_fetch_array($ticket_related_open); $ticket_related_open = intval($row['ticket_related_open']); $ticket_related_closed = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS ticket_related_closed FROM tickets WHERE ticket_status = 'Closed' AND ticket_contact_id = $contact_id "); - $row = mysqli_fetch_assoc($ticket_related_closed); + $row = mysqli_fetch_array($ticket_related_closed); $ticket_related_closed = intval($row['ticket_related_closed']); $ticket_related_total = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS ticket_related_total FROM tickets WHERE ticket_contact_id = $contact_id "); - $row = mysqli_fetch_assoc($ticket_related_total); + $row = mysqli_fetch_array($ticket_related_total); $ticket_related_total = intval($row['ticket_related_total']); } //Get Total Ticket Time $ticket_total_reply_time = mysqli_query($mysqli, "SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(ticket_reply_time_worked))) AS ticket_total_reply_time FROM ticket_replies WHERE ticket_reply_archived_at IS NULL AND ticket_reply_ticket_id = $ticket_id"); - $row = mysqli_fetch_assoc($ticket_total_reply_time); + $row = mysqli_fetch_array($ticket_total_reply_time); $ticket_total_reply_time = nullable_htmlentities($row['ticket_total_reply_time']); + + // Client Tags + $client_tag_name_display_array = array(); + $client_tag_id_array = array(); + $sql_client_tags = mysqli_query($mysqli, "SELECT * FROM client_tags LEFT JOIN tags ON client_tags.tag_id = tags.tag_id WHERE client_id = $client_id ORDER BY tag_name ASC"); + while ($row = mysqli_fetch_array($sql_client_tags)) { + + $client_tag_id = intval($row['tag_id']); + $client_tag_name = nullable_htmlentities($row['tag_name']); + $client_tag_color = nullable_htmlentities($row['tag_color']); + if (empty($client_tag_color)) { + $client_tag_color = "dark"; + } + $client_tag_icon = nullable_htmlentities($row['tag_icon']); + if (empty($client_tag_icon)) { + $client_tag_icon = "tag"; + } + + $client_tag_id_array[] = $client_tag_id; + $client_tag_name_display_array[] = "$client_tag_name"; + } + $client_tags_display = implode(' ', $client_tag_name_display_array); + + // Get the number of ticket Responses $ticket_responses_sql = mysqli_query($mysqli, "SELECT COUNT(ticket_reply_id) AS ticket_responses FROM ticket_replies WHERE ticket_reply_archived_at IS NULL AND ticket_reply_ticket_id = $ticket_id"); - $row = mysqli_fetch_assoc($ticket_responses_sql); + $row = mysqli_fetch_array($ticket_responses_sql); $ticket_responses = intval($row['ticket_responses']); $ticket_all_comments_sql = mysqli_query($mysqli, "SELECT COUNT(ticket_reply_id) AS ticket_all_comments_count FROM ticket_replies WHERE ticket_reply_archived_at IS NULL AND ticket_reply_ticket_id = $ticket_id"); - $row = mysqli_fetch_assoc($ticket_all_comments_sql); + $row = mysqli_fetch_array($ticket_all_comments_sql); $ticket_all_comments_count = intval($row['ticket_all_comments_count']); $ticket_internal_notes_sql = mysqli_query($mysqli, "SELECT COUNT(ticket_reply_id) AS ticket_internal_notes_count FROM ticket_replies WHERE ticket_reply_archived_at IS NULL AND ticket_reply_type = 'Internal' AND ticket_reply_ticket_id = $ticket_id"); - $row = mysqli_fetch_assoc($ticket_internal_notes_sql); + $row = mysqli_fetch_array($ticket_internal_notes_sql); $ticket_internal_notes_count = intval($row['ticket_internal_notes_count']); $ticket_public_comments_sql = mysqli_query($mysqli, "SELECT COUNT(ticket_reply_id) AS ticket_public_comments_count FROM ticket_replies WHERE ticket_reply_archived_at IS NULL AND (ticket_reply_type = 'Public' OR ticket_reply_type = 'Client') AND ticket_reply_ticket_id = $ticket_id"); - $row = mysqli_fetch_assoc($ticket_public_comments_sql); + $row = mysqli_fetch_array($ticket_public_comments_sql); $ticket_public_comments_count = intval($row['ticket_public_comments_count']); $ticket_events_sql = mysqli_query($mysqli, "SELECT COUNT(log_id) AS ticket_events_count FROM logs WHERE log_type = 'Ticket' AND log_entity_id = $ticket_id"); - $row = mysqli_fetch_assoc($ticket_events_sql); + $row = mysqli_fetch_array($ticket_events_sql); $ticket_events_count = intval($row['ticket_events_count']); @@ -353,7 +376,7 @@ if (isset($_GET['ticket_id'])) { - + @@ -397,7 +420,7 @@ if (isset($_GET['ticket_id'])) { Summarize - Merge Ticket + Merge @@ -440,38 +463,35 @@ if (isset($_GET['ticket_id'])) {
- Updated: ($ticket_updated_at_ago)" ?> + Updated:
- Agent: +
-
- -
- Billable: + Ticket is Yes"; + echo "Billable"; } else { - echo "No"; + echo "Not Billable"; } ?> @@ -519,11 +539,16 @@ if (isset($_GET['ticket_id'])) {
-
Tasks
-
-
+ Tasks Completed + % +
+
/
+ +
+ +
@@ -534,9 +559,9 @@ if (isset($_GET['ticket_id'])) {
-
-
- Description / Comments +
+
+ Ticket Details
@@ -545,14 +570,14 @@ if (isset($_GET['ticket_id'])) {
-
+
$name [View][Download]"; + echo "
$name | Download | View"; } ?>
@@ -562,24 +587,26 @@ if (isset($_GET['ticket_id'])) { = 2 && empty($ticket_resolved_at) && empty($ticket_closed_at)) { ?> + +
-
+
-
+
@@ -593,10 +620,11 @@ if (isset($_GET['ticket_id'])) {
-
-
-
-
+
+ +
+
+
-
- -
-
-
+ +
+
@@ -640,14 +666,14 @@ if (isset($_GET['ticket_id'])) {
-
-
-
- +
+
+ +
-
+
@@ -658,7 +684,7 @@ if (isset($_GET['ticket_id'])) { purify($row['ticket_reply']); $ticket_reply_type = nullable_htmlentities($row['ticket_reply_type']); @@ -679,7 +705,7 @@ if (isset($_GET['ticket_id'])) { $user_avatar = nullable_htmlentities($row['user_avatar']); $user_initials = initials($row['user_name']); $avatar_link = "../uploads/users/$user_id/$user_avatar"; - $ticket_reply_time_worked = $row['ticket_reply_time_worked']; + $ticket_reply_time_worked = date_create($row['ticket_reply_time_worked']); } $sql_ticket_reply_attachments = mysqli_query( @@ -706,19 +732,12 @@ if (isset($_GET['ticket_id'])) { -
+

- +
-
- - - Time worked: - - - - +
Time worked:
@@ -770,7 +789,7 @@ if (isset($_GET['ticket_id'])) { $name | Download | View"; @@ -790,10 +809,10 @@ if (isset($_GET['ticket_id'])) {
- -
-
-
Activity Summary
+ +
"> +
+
Ticket Details
-
+
-
- Created: - () +
+ Created:
- -
- Created by: +
+ Created by:
- -
- Source: + +
+ Source:
- -
- Category: + 0) { ?> +
+ Category:
-
- 1st resp: +
+ FR:
-
- Total time: +
+ Time worked:
@@ -857,34 +875,34 @@ if (isset($_GET['ticket_id'])) { - +
-
- Resolved: +
+ Resolved:
- -
- Closed by: +
+ Closed by:
-
- Closed: +
+ Closed:
-
- Feedback: +
+ Feedback:
@@ -898,8 +916,8 @@ if (isset($_GET['ticket_id'])) { 0)) { ?>
-
-
Tasks
+
+
Tasks
= 2) { ?>