diff --git a/admin/custom_fields.php b/admin/custom_fields.php
index 979f4114..238804b0 100755
--- a/admin/custom_fields.php
+++ b/admin/custom_fields.php
@@ -543,41 +543,8 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
-
-
@@ -1285,8 +1252,7 @@ function cf_validate()
case 'email':
$cf['email_multi'] = hesk_POST('email_multi') ? 1 : 0;
$cf['email_type'] = hesk_POST('email_type', 'none');
- $cf['emails_to_receive'] = $cf['email_type'] === 'none' ? array() : hesk_POST_array('emails_to_receive', array());
- $cf['value'] = array('multiple' => $cf['email_multi'], 'email_type' => $cf['email_type'], 'emails_to_receive' => $cf['emails_to_receive']);
+ $cf['value'] = array('multiple' => $cf['email_multi'], 'email_type' => $cf['email_type']);
break;
case 'hidden':
diff --git a/api/BusinessLogic/Emails/Addressees.php b/api/BusinessLogic/Emails/Addressees.php
index baa37ae5..1e2a4669 100644
--- a/api/BusinessLogic/Emails/Addressees.php
+++ b/api/BusinessLogic/Emails/Addressees.php
@@ -12,10 +12,10 @@ class Addressees extends \BaseClass {
/**
* @var $cc string[]|null
*/
- public $cc;
+ public $cc = array();
/**
* @var $bcc string[]|null
*/
- public $bcc;
+ public $bcc = array();
}
\ No newline at end of file
diff --git a/api/BusinessLogic/Tickets/CustomFields/CustomField.php b/api/BusinessLogic/Tickets/CustomFields/CustomField.php
new file mode 100644
index 00000000..142d842b
--- /dev/null
+++ b/api/BusinessLogic/Tickets/CustomFields/CustomField.php
@@ -0,0 +1,17 @@
+newTicketValidator = $newTicketValidator;
$this->trackingIdGenerator = $trackingIdGenerator;
$this->autoassigner = $autoassigner;
@@ -81,6 +86,7 @@ class TicketCreator extends \BaseClass {
$this->userGateway = $userGateway;
$this->modsForHeskSettingsGateway = $modsForHeskSettingsGateway;
$this->auditTrailGateway = $auditTrailGateway;
+ $this->customFieldsGateway = $customFieldsGateway;
}
/**
@@ -162,6 +168,19 @@ class TicketCreator extends \BaseClass {
$addressees = new Addressees();
$addressees->to = $ticket->email;
+ foreach ($ticket->customFields as $key => $value) {
+ $customField = $this->customFieldsGateway->getCustomField($key, $heskSettings);
+ if ($customField !== null &&
+ $customField->type === 'email' &&
+ $customField->properties['email_type'] !== 'none') {
+ if ($customField->properties['email_type'] === 'cc') {
+ $addressees->cc[] = $value;
+ } elseif ($customField->properties['email_type'] === 'bcc') {
+ $addressees->bcc[] = $value;
+ }
+ }
+ }
+
if ($ticketRequest->sendEmailToCustomer && $emailVerified) {
$this->emailSenderHelper->sendEmailForTicket(EmailTemplateRetriever::NEW_TICKET, $ticketRequest->language, $addressees, $ticket, $heskSettings, $modsForHeskSettings);
} else if ($modsForHeskSettings['customer_email_verification_required'] && !$emailVerified) {
diff --git a/api/DataAccess/CommonDao.php b/api/DataAccess/CommonDao.php
index cb3f5b3e..dce640b8 100644
--- a/api/DataAccess/CommonDao.php
+++ b/api/DataAccess/CommonDao.php
@@ -11,7 +11,7 @@ class CommonDao extends \BaseClass {
*/
function init() {
if (!function_exists('hesk_dbConnect')) {
- throw new Exception('Database not loaded!');
+ throw new \BaseException('Database not loaded!');
}
hesk_dbConnect();
}
diff --git a/api/DataAccess/CustomFields/CustomFieldsGateway.php b/api/DataAccess/CustomFields/CustomFieldsGateway.php
new file mode 100644
index 00000000..fb52d6a9
--- /dev/null
+++ b/api/DataAccess/CustomFields/CustomFieldsGateway.php
@@ -0,0 +1,26 @@
+init();
+
+ $rs = hesk_dbQuery("SELECT * FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "custom_fields` WHERE `id` = " . intval($id));
+
+ if ($row = hesk_dbFetchAssoc($rs)) {
+ $customField = new CustomField();
+ $customField->id = $row['id'];
+ $names = json_decode($row['name'], true);
+ $customField->name = (isset($names[$hesk_settings['language']])) ? $names[$heskSettings['language']] : reset($names);
+ $customField->type = $row['type'];
+ $customField->properties = json_decode($row['value'], true);
+
+ return $customField;
+ } else {
+ return null;
+ }
+ }
+}
\ No newline at end of file
diff --git a/inc/email_functions.inc.php b/inc/email_functions.inc.php
index 5483d121..48a6948d 100644
--- a/inc/email_functions.inc.php
+++ b/inc/email_functions.inc.php
@@ -50,20 +50,19 @@ function hesk_notifyCustomerForVerifyEmail($email_template = 'verify_email', $ac
$ccEmails = array();
$bccEmails = array();
- //TODO Update the email custom field to handle this properly
- /*foreach ($hesk_settings['custom_fields'] as $k => $v) {
+ foreach ($hesk_settings['custom_fields'] as $k => $v) {
if ($v['use']) {
if ($v['type'] == 'email' && !empty($ticket[$k])) {
- if ($v['value'] == 'cc') {
+ if ($v['value']['email_type'] == 'cc') {
$emails = explode(',', $ticket[$k]);
array_push($ccEmails, $emails);
- } elseif ($v['value'] == 'bcc') {
+ } elseif ($v['value']['email_type'] == 'bcc') {
$emails = explode(',', $ticket[$k]);
array_push($bccEmails, $emails);
}
}
}
- }*/
+ }
hesk_mail($ticket['email'], $subject, $message, $htmlMessage, $modsForHesk_settings, $ccEmails, $bccEmails, $hasMessage);
}
@@ -95,18 +94,19 @@ function hesk_notifyCustomer($modsForHesk_settings, $email_template = 'new_ticke
$ccEmails = array();
$bccEmails = array();
- //TODO Update the email custom field to handle this properly
- /*foreach ($hesk_settings['custom_fields'] as $k => $v) {
+ foreach ($hesk_settings['custom_fields'] as $k => $v) {
if ($v['use']) {
- if ($v['type'] == 'email' && !empty($ticket[$k])) {
- if ($v['value'] == 'cc') {
- array_push($ccEmails, $ticket[$k]);
- } elseif ($v['value'] == 'bcc') {
- array_push($bccEmails, $ticket[$k]);
+ if ($v['type'] == 'email' && !empty($ticket[$k]) && isset($v['value']['emails_to_receive'])) {
+ if ($v['value']['email_type'] == 'cc') {
+ $emails = explode(',', $ticket[$k]);
+ array_push($ccEmails, $emails);
+ } elseif ($v['value']['email_type'] == 'bcc') {
+ $emails = explode(',', $ticket[$k]);
+ array_push($bccEmails, $emails);
}
}
}
- }*/
+ }
// Send e-mail
hesk_mail($ticket['email'], $subject, $message, $htmlMessage, $modsForHesk_settings, $ccEmails, $bccEmails, $hasMessage);