From d6f30b83f865a91e2720278b987edb05e6777379 Mon Sep 17 00:00:00 2001 From: wrongecho Date: Sat, 10 Aug 2024 22:35:52 +0100 Subject: [PATCH 1/2] Add anonymous email parsing Add option to allow unknown/anonymous email parsing for unknown contacts/domains. This will be disabled by default due to the potential for spam, but can be turned on in the settings if required. --- cron_ticket_email_parser.php | 9 ++++++++- database_updates.php | 10 ++++++++-- database_version.php | 2 +- db.sql | 1 + get_settings.php | 2 ++ post/setting.php | 3 ++- settings_ticket.php | 8 ++++++++ 7 files changed, 30 insertions(+), 5 deletions(-) diff --git a/cron_ticket_email_parser.php b/cron_ticket_email_parser.php index 9acc0b38..58be38ba 100644 --- a/cron_ticket_email_parser.php +++ b/cron_ticket_email_parser.php @@ -22,6 +22,7 @@ require_once "get_settings.php"; $config_ticket_prefix = sanitizeInput($config_ticket_prefix); $config_ticket_from_name = sanitizeInput($config_ticket_from_name); +$config_ticket_email_parse_unknown_senders = intval($row['config_ticket_email_parse_unknown_senders']); // Get company name & phone & timezone $sql = mysqli_query($mysqli, "SELECT * FROM companies, settings WHERE companies.company_id = settings.company_id AND companies.company_id = 1"); @@ -132,7 +133,7 @@ function addTicket($contact_id, $contact_name, $contact_email, $client_id, $date } $data = []; - if ($config_ticket_client_general_notifications == 1) { + if ($config_ticket_client_general_notifications == 1 && $client_id != 0) { $subject_email = "Ticket created - [$config_ticket_prefix$ticket_number] - $subject"; $body = "##- Please type your reply above this line -##

Hello $contact_name,

Thank you for your email. A ticket regarding \"$subject\" has been automatically created for you.

Ticket: $config_ticket_prefix$ticket_number
Subject: $subject
Status: New
https://$config_base_url/portal/ticket.php?id=$id

--
$company_name - Support
$config_ticket_from_email
$company_phone"; @@ -416,6 +417,12 @@ if ($messages->count() > 0) { if (addTicket($contact_id, $contact_name, $contact_email, $client_id, $date, $subject, $message_body, $message->getAttachments(), $original_message_file)) { $email_processed = true; } + } else if ($config_ticket_email_parse_unknown_senders) { + // Parse even if the sender is unknown + + if (addTicket(0, 'Guest', $from_email, 0, $date, $subject, $message_body, $message->getAttachments(), $original_message_file)) { + $email_processed = true; + } } } } diff --git a/database_updates.php b/database_updates.php index 0d0af3ae..b4a01cfa 100644 --- a/database_updates.php +++ b/database_updates.php @@ -2085,9 +2085,15 @@ if (LATEST_DATABASE_VERSION > CURRENT_DATABASE_VERSION) { } // if (CURRENT_DATABASE_VERSION == '1.4.2') { - // // Insert queries here required to update to DB version 1.4.3 + mysqli_query($mysqli, "ALTER TABLE `settings` ADD `config_ticket_email_parse_unknown_senders` INT(1) NOT NULL DEFAULT '0' AFTER `config_ticket_email_parse`"); + + mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.4.3'"); + // } + + // if (CURRENT_DATABASE_VERSION == '1.4.3') { + // // Insert queries here required to update to DB version 1.4.4 // // Then, update the database to the next sequential version - // mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.4.3'"); + // mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.4.4'"); // } } else { diff --git a/database_version.php b/database_version.php index d8db970e..08c5bdfc 100644 --- a/database_version.php +++ b/database_version.php @@ -5,4 +5,4 @@ * It is used in conjunction with database_updates.php */ -DEFINE("LATEST_DATABASE_VERSION", "1.4.2"); +DEFINE("LATEST_DATABASE_VERSION", "1.4.3"); diff --git a/db.sql b/db.sql index cceaca6c..9a8d8815 100644 --- a/db.sql +++ b/db.sql @@ -1467,6 +1467,7 @@ CREATE TABLE `settings` ( `config_ticket_from_name` varchar(200) DEFAULT NULL, `config_ticket_from_email` varchar(200) DEFAULT NULL, `config_ticket_email_parse` tinyint(1) NOT NULL DEFAULT 0, + `config_ticket_email_parse_unknown_senders` tinyint(1) NOT NULL DEFAULT 0, `config_ticket_client_general_notifications` tinyint(1) NOT NULL DEFAULT 1, `config_ticket_autoclose` tinyint(1) NOT NULL DEFAULT 0, `config_ticket_autoclose_hours` int(5) NOT NULL DEFAULT 72, diff --git a/get_settings.php b/get_settings.php index 01db4e91..aad91236 100644 --- a/get_settings.php +++ b/get_settings.php @@ -68,12 +68,14 @@ $config_ticket_next_number = intval($row['config_ticket_next_number']); $config_ticket_from_name = $row['config_ticket_from_name']; $config_ticket_from_email = $row['config_ticket_from_email']; $config_ticket_email_parse = intval($row['config_ticket_email_parse']); +$config_ticket_email_parse_unknown_senders = intval($row['config_ticket_email_parse_unknown_senders']); $config_ticket_client_general_notifications = intval($row['config_ticket_client_general_notifications']); $config_ticket_autoclose = intval($row['config_ticket_autoclose']); $config_ticket_autoclose_hours = intval($row['config_ticket_autoclose_hours']); $config_ticket_new_ticket_notification_email = $row['config_ticket_new_ticket_notification_email']; $config_ticket_default_billable = intval($row['config_ticket_default_billable']); + // Cron $config_enable_cron = intval($row['config_enable_cron']); $config_cron_key = $row['config_cron_key']; diff --git a/post/setting.php b/post/setting.php index 5e9b7704..be19da58 100644 --- a/post/setting.php +++ b/post/setting.php @@ -306,12 +306,13 @@ if (isset($_POST['edit_ticket_settings'])) { $config_ticket_prefix = sanitizeInput($_POST['config_ticket_prefix']); $config_ticket_next_number = intval($_POST['config_ticket_next_number']); $config_ticket_email_parse = intval($_POST['config_ticket_email_parse']); + $config_ticket_email_parse_unknown_senders = intval($_POST['config_ticket_email_parse_unknown_senders']); $config_ticket_default_billable = intval($_POST['config_ticket_default_billable']); $config_ticket_autoclose = intval($_POST['config_ticket_autoclose']); $config_ticket_autoclose_hours = intval($_POST['config_ticket_autoclose_hours']); $config_ticket_new_ticket_notification_email = sanitizeInput($_POST['config_ticket_new_ticket_notification_email']); - mysqli_query($mysqli,"UPDATE settings SET config_ticket_prefix = '$config_ticket_prefix', config_ticket_next_number = $config_ticket_next_number, config_ticket_email_parse = $config_ticket_email_parse, config_ticket_autoclose = $config_ticket_autoclose, config_ticket_autoclose_hours = $config_ticket_autoclose_hours, config_ticket_new_ticket_notification_email = '$config_ticket_new_ticket_notification_email', config_ticket_default_billable = $config_ticket_default_billable WHERE company_id = 1"); + mysqli_query($mysqli,"UPDATE settings SET config_ticket_prefix = '$config_ticket_prefix', config_ticket_next_number = $config_ticket_next_number, config_ticket_email_parse = $config_ticket_email_parse, config_ticket_email_parse_unknown_senders = $config_ticket_email_parse_unknown_senders, config_ticket_autoclose = $config_ticket_autoclose, config_ticket_autoclose_hours = $config_ticket_autoclose_hours, config_ticket_new_ticket_notification_email = '$config_ticket_new_ticket_notification_email', config_ticket_default_billable = $config_ticket_default_billable WHERE company_id = 1"); //Logging mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Settings', log_action = 'Modify', log_description = '$session_name modified ticket settings', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_user_id = $session_user_id"); diff --git a/settings_ticket.php b/settings_ticket.php index 91739f4b..0cb81964 100644 --- a/settings_ticket.php +++ b/settings_ticket.php @@ -10,6 +10,7 @@ require_once "inc_all_admin.php";
+ @@ -40,6 +41,13 @@ require_once "inc_all_admin.php"; +
+
+ value="1" id="emailToTicketAnonParseSwitch" > + +
+
+
From 90e95a76b7d41708e5d13309dd27c9e3617dbbf4 Mon Sep 17 00:00:00 2001 From: wrongecho Date: Sat, 10 Aug 2024 22:39:47 +0100 Subject: [PATCH 2/2] Add anonymous email parsing Add option to allow unknown/anonymous email parsing for unknown contacts/domains. This will be disabled by default due to the potential for spam, but can be turned on in the settings if required. --- cron_ticket_email_parser.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cron_ticket_email_parser.php b/cron_ticket_email_parser.php index 58be38ba..672377fe 100644 --- a/cron_ticket_email_parser.php +++ b/cron_ticket_email_parser.php @@ -417,7 +417,7 @@ if ($messages->count() > 0) { if (addTicket($contact_id, $contact_name, $contact_email, $client_id, $date, $subject, $message_body, $message->getAttachments(), $original_message_file)) { $email_processed = true; } - } else if ($config_ticket_email_parse_unknown_senders) { + } elseif ($config_ticket_email_parse_unknown_senders) { // Parse even if the sender is unknown if (addTicket(0, 'Guest', $from_email, 0, $date, $subject, $message_body, $message->getAttachments(), $original_message_file)) {