diff --git a/admin/admin_reply_ticket.php b/admin/admin_reply_ticket.php index 3fbb6e8d..6c57e5e9 100644 --- a/admin/admin_reply_ticket.php +++ b/admin/admin_reply_ticket.php @@ -37,6 +37,7 @@ define('HESK_PATH','../'); /* Get all the required files and functions */ require(HESK_PATH . 'hesk_settings.inc.php'); +require(HESK_PATH . 'modsForHesk_settings.inc.php'); require(HESK_PATH . 'inc/common.inc.php'); require(HESK_PATH . 'inc/admin_functions.inc.php'); hesk_load_database_functions(); @@ -354,6 +355,7 @@ $info = array( 'dt' => hesk_date($ticket['dt'], true), 'lastchange' => hesk_date($ticket['lastchange'], true), 'id' => $ticket['id'], +'language' => $ticket['language'] ); // 2. Add custom fields to the array diff --git a/admin/admin_ticket.php b/admin/admin_ticket.php index c5c0d9f5..82055da9 100644 --- a/admin/admin_ticket.php +++ b/admin/admin_ticket.php @@ -37,6 +37,7 @@ define('HESK_PATH','../'); /* Get all the required files and functions */ require(HESK_PATH . 'hesk_settings.inc.php'); +require(HESK_PATH . 'modsForHesk_settings.inc.php'); require(HESK_PATH . 'inc/common.inc.php'); require(HESK_PATH . 'inc/admin_functions.inc.php'); hesk_load_database_functions(); @@ -446,10 +447,11 @@ if (isset($_POST['notemsg']) && hesk_token_check('POST')) /* Format email subject and message for staff */ $subject = hesk_getEmailSubject('new_note',$ticket); $message = hesk_getEmailMessage('new_note',$ticket,1); + $htmlMessage = hesk_getHtmlMessage('new_note',$ticket,1); /* Send email to staff */ while ($user = hesk_dbFetchAssoc($users)) { - hesk_mail($user['email'], $subject, $message); + hesk_mail($user['email'], $subject, $message, $htmlMessage); } } } diff --git a/admin/mail.php b/admin/mail.php index 6ff15c02..c91a4b77 100644 --- a/admin/mail.php +++ b/admin/mail.php @@ -37,6 +37,7 @@ define('HESK_PATH','../'); /* Get all the required files and functions */ require(HESK_PATH . 'hesk_settings.inc.php'); +require(HESK_PATH . 'modsForHesk_settings.inc.php'); require(HESK_PATH . 'inc/common.inc.php'); require(HESK_PATH . 'inc/admin_functions.inc.php'); hesk_load_database_functions(); @@ -353,9 +354,10 @@ function mail_send() /* Format email subject and message for recipient */ $subject = hesk_getEmailSubject('new_pm',$pm,0); $message = hesk_getEmailMessage('new_pm',$pm,1,0); + $htmlMessage = hesk_getHtmlMessage('new_pm',$pm,1,0); /* Send e-mail */ - hesk_mail($pm_recipient['email'], $subject, $message); + hesk_mail($pm_recipient['email'], $subject, $message, $htmlMessage); } unset($_SESSION['mail']); diff --git a/admin/password.php b/admin/password.php index 79b745be..6c3ab8e5 100644 --- a/admin/password.php +++ b/admin/password.php @@ -37,6 +37,7 @@ define('HESK_PATH','../'); /* Get all the required files and functions */ require(HESK_PATH . 'hesk_settings.inc.php'); +require(HESK_PATH . 'modsForHesk_settings.inc.php'); require(HESK_PATH . 'inc/common.inc.php'); // Is the password reset function enabled? @@ -176,15 +177,20 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') // Get the email message $msg = hesk_getEmailMessage('reset_password',array(),1,0,1); + $htmlMsg = hesk_getHtmlMessage('reset_password',array(),1,0,1); // Replace message special tags $msg = str_replace('%%NAME%%', hesk_msgToPlain($row['name'],1,1), $msg); $msg = str_replace('%%SITE_URL%%', $hesk_settings['site_url'], $msg); $msg = str_replace('%%SITE_TITLE%%', $hesk_settings['site_title'], $msg); $msg = str_replace('%%PASSWORD_RESET%%', $hesk_settings['hesk_url'].'/'.$hesk_settings['admin_dir'].'/password.php?h='.$hash, $msg); + $htmlMsg = str_replace('%%NAME%%', hesk_msgToPlain($row['name'],1,1), $htmlMsg); + $htmlMsg = str_replace('%%SITE_URL%%', $hesk_settings['site_url'], $htmlMsg); + $htmlMsg = str_replace('%%SITE_TITLE%%', $hesk_settings['site_title'], $htmlMsg); + $htmlMsg = str_replace('%%PASSWORD_RESET%%', $hesk_settings['hesk_url'].'/'.$hesk_settings['admin_dir'].'/password.php?h='.$hash, $htmlMsg); // Send email - hesk_mail($email, $hesklang['reset_password'], $msg); + hesk_mail($email, $hesklang['reset_password'], $msg, $htmlMsg); // Show success hesk_process_messages($hesklang['pemls'],'NOREDIRECT','SUCCESS'); diff --git a/inc/email_functions.inc.php b/inc/email_functions.inc.php index 1e1f8956..0dfd974a 100644 --- a/inc/email_functions.inc.php +++ b/inc/email_functions.inc.php @@ -35,8 +35,6 @@ /* Check if this is a valid include */ if (!defined('IN_SCRIPT')) {die('Invalid attempt');} -require_once(HESK_PATH . 'modsForHesk_settings.inc.php'); - /* Get includes for SMTP */ if ($hesk_settings['smtp']) { @@ -59,6 +57,7 @@ function hesk_notifyCustomerForVerifyEmail($email_template = 'verify_email', $ac // Format email subject and message $subject = hesk_getEmailSubject($email_template, $ticket); $message = hesk_getEmailMessage($email_template, $ticket); + $htmlMessage = hesk_getHtmlMessage($email_template, $ticket); $activationUrl = $hesk_settings['hesk_url'] . '/verifyemail.php?key=%%ACTIVATIONKEY%%'; $message = str_replace('%%VERIFYURL%%', $activationUrl, $message); $message = str_replace('%%ACTIVATIONKEY%%', $activationKey, $message); @@ -80,7 +79,7 @@ function hesk_notifyCustomerForVerifyEmail($email_template = 'verify_email', $ac } } - hesk_mail($ticket['email'], $subject, $message, $ccEmails, $bccEmails); + hesk_mail($ticket['email'], $subject, $message, $htmlMessage, $ccEmails, $bccEmails); } @@ -105,6 +104,7 @@ function hesk_notifyCustomer($email_template = 'new_ticket') // Format email subject and message $subject = hesk_getEmailSubject($email_template,$ticket); $message = hesk_getEmailMessage($email_template,$ticket); + $htmlMessage = hesk_getHtmlMessage($email_template,$ticket); // Add Cc / Bcc recipents if needed $ccEmails = array(); @@ -122,7 +122,7 @@ function hesk_notifyCustomer($email_template = 'new_ticket') } // Send e-mail - hesk_mail($ticket['email'], $subject, $message, $ccEmails, $bccEmails); + hesk_mail($ticket['email'], $subject, $message, $htmlMessage, $ccEmails, $bccEmails); // Reset the language if it was changed if ($changedLanguage) @@ -168,9 +168,10 @@ function hesk_notifyAssignedStaff($autoassign_owner, $email_template, $type = 'n /* Format email subject and message for staff */ $subject = hesk_getEmailSubject($email_template,$ticket); $message = hesk_getEmailMessage($email_template,$ticket,1); + $htmlMessage = hesk_getHtmlMessage($email_template,$ticket,1); /* Send email to staff */ - hesk_mail($autoassign_owner['email'], $subject, $message); + hesk_mail($autoassign_owner['email'], $subject, $message, $htmlMessage); /* Reset language to original one */ hesk_resetLanguage(); @@ -238,7 +239,7 @@ function hesk_notifyStaff($email_template,$sql_where,$is_ticket=1) if ($current_language != 'NONE') { /* Send e-mail to staff */ - hesk_mail(implode(',',$recipients), $subject, $message ); + hesk_mail(implode(',',$recipients), $subject, $message, $htmlMessage ); /* Reset list of email addresses */ $recipients = array(); @@ -250,6 +251,7 @@ function hesk_notifyStaff($email_template,$sql_where,$is_ticket=1) /* Format staff email subject and message for this language */ $subject = hesk_getEmailSubject($email_template,$ticket); $message = hesk_getEmailMessage($email_template,$ticket,$is_ticket); + $htmlMessage = hesk_getHtmlMessage($email_template,$ticket,$is_ticket); /* Add email to the recipients list */ $recipients[] = $admin['email']; @@ -260,7 +262,7 @@ function hesk_notifyStaff($email_template,$sql_where,$is_ticket=1) } /* Send email messages to the remaining staff */ - hesk_mail(implode(',',$recipients), $subject, $message ); + hesk_mail(implode(',',$recipients), $subject, $message, $htmlMessage); /* Reset language to original one */ hesk_resetLanguage(); @@ -322,7 +324,7 @@ function hesk_validEmails() } // END hesk_validEmails() -function hesk_mail($to,$subject,$message,$cc=array(),$bcc=array()) +function hesk_mail($to,$subject,$message,$htmlMessage,$cc=array(),$bcc=array()) { global $hesk_settings, $hesklang, $modsForHesk_settings; @@ -366,14 +368,27 @@ function hesk_mail($to,$subject,$message,$cc=array(),$bcc=array()) curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_POSTFIELDS, - array( - 'from' => $hesk_settings['from_header'], - 'to' => $to, - 'h:Reply-To'=> $hesk_settings['from_header'], - 'subject' => $subject, - 'text' => $message - )); + + $postfields = array( + 'from' => $hesk_settings['from_header'], + 'to' => $to, + 'h:Reply-To'=> $hesk_settings['from_header'], + 'subject' => $subject, + 'text' => $message + ); + if (count($cc) > 0) + { + $postfields['cc'] = implode(',',$cc); + } + if (count($bcc) > 0) + { + $postfields['bcc'] = implode(',',$bcc); + } + if ($modsForHesk_settings['html_emails']) + { + $postfields['html'] = $htmlMessage; + } + curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields); $result = curl_exec($ch); curl_close($ch); @@ -383,11 +398,31 @@ function hesk_mail($to,$subject,$message,$cc=array(),$bcc=array()) return (strlen($tmp)) ? $tmp : true; } + + $boundary = sha1(uniqid()); + //Prepare the message for HTML or non-html + if ($modsForHesk_settings['html_emails']) + { + $plaintextMessage = $message; + $message = "--".$boundary."\n"; + $message .= "Content-Type: text/plain; charset=".$hesklang['ENCODING']."\n\n"; + $message .= $plaintextMessage."\n\n"; + $message .= "--".$boundary."\n"; + $message .= "Content-Type: text/html; charset=".$hesklang['ENCODING']."\n\n"; + $message .= $htmlMessage."\n\n"; + $message .= "--".$boundary."--"; + } + // Use PHP's mail function - elseif ( ! $hesk_settings['smtp']) + if ( ! $hesk_settings['smtp']) { // Set additional headers - $headers = "From: $hesk_settings[from_header]\n"; + $headers = ''; + if ($modsForHesk_settings['html_emails']) + { + $headers .= "MIME-Version: 1.0\n"; + } + $headers .= "From: $hesk_settings[from_header]\n"; if (count($cc) > 0) { $headers .= "Cc: ".implode(',',$cc); @@ -399,7 +434,10 @@ function hesk_mail($to,$subject,$message,$cc=array(),$bcc=array()) $headers.= "Reply-To: $hesk_settings[from_header]\n"; $headers.= "Return-Path: $hesk_settings[webmaster_mail]\n"; $headers.= "Date: " . date(DATE_RFC2822) . "\n"; - $headers.= "Content-Type: text/plain; charset=" . $hesklang['ENCODING']; + if ($modsForHesk_settings['html_emails']) + { + $headers.= "Content-Type: multipart/alternative;boundary=".$boundary; + } // Send using PHP mail() function ob_start(); @@ -427,16 +465,22 @@ function hesk_mail($to,$subject,$message,$cc=array(),$bcc=array()) // Send the e-mail using SMTP $to_arr = explode(',',$to); - $headersArray = array( "From: $hesk_settings[from_header]", "To: $to", "Reply-To: $hesk_settings[from_header]", "Return-Path: $hesk_settings[webmaster_mail]", "Subject: " . $subject, - "Date: " . date(DATE_RFC2822), - "Content-Type: text/plain; charset=" . $hesklang['ENCODING'] + "Date: " . date(DATE_RFC2822) ); + if ($modsForHesk_settings['html_emails']) + { + array_push($headersArray,"MIME-Version: 1.0\n"); + array_push($headersArray,"Content-Type: multipart/alternative;boundary=".$boundary."\n"); + } else + { + array_push($headersArray,"Content-Type: text/plain; charset=" . $hesklang['ENCODING']); + } if (count($cc) > 0) { array_push($headersArray,"Cc: ".implode(',',$cc)); @@ -548,6 +592,40 @@ function hesk_getEmailSubject($eml_file, $ticket='', $is_ticket=1, $strip=0) } // hesk_getEmailSubject() +function hesk_getHtmlMessage($eml_file, $ticket, $is_admin=0, $is_ticket=1, $just_message=0) +{ + global $hesk_settings, $hesklang, $modsForHesk_settings; + + // Demo mode + if ( defined('HESK_DEMO') || !$modsForHesk_settings['html_emails']) + { + return ''; + } + + // We won't do validation here, as hesk_getEmailMessage will be called which handles validation. + + // Get email template + $original_eml_file = $eml_file; + $eml_file = 'language/'.$hesk_settings['languages'][$hesk_settings['language']]['folder'].'/emails/html/'.$original_eml_file.'.txt'; + $plain_eml_file = 'language/'.$hesk_settings['languages'][$hesk_settings['language']]['folder'].'/emails/'.$original_eml_file.'.txt'; + + if (file_exists(HESK_PATH.$eml_file)) + { + $msg = file_get_contents(HESK_PATH.$eml_file); + } + elseif (file_exists(HESK_PATH.$plain_eml_file)) + { + $msg = file_get_contents(HESK_PATH.$plain_eml_file); + } + else + { + hesk_error($hesklang['emfm'].': '.$eml_file); + } + + //Perform logic common between hesk_getEmailMessage and hesk_getHtmlMessage + $msg = hesk_processMessage($msg, $ticket, $is_admin, $is_ticket, $just_message); + return $msg; +} function hesk_getEmailMessage($eml_file, $ticket, $is_admin=0, $is_ticket=1, $just_message=0) { @@ -580,62 +658,71 @@ function hesk_getEmailMessage($eml_file, $ticket, $is_admin=0, $is_ticket=1, $ju hesk_error($hesklang['emfm'].': '.$eml_file); } + $msg = hesk_processMessage($msg, $ticket, $is_admin, $is_ticket, $just_message); + return $msg; + +} // END hesk_getEmailMessage + +function hesk_processMessage($msg, $ticket, $is_admin, $is_ticket, $just_message) +{ + global $hesk_settings, $hesklang; + /* Return just the message without any processing? */ if ($just_message) { - return $msg; + return $msg; } - // Convert any entities in site title to plain text - $hesk_settings['site_title'] = hesk_msgToPlain($hesk_settings['site_title'], 1); + // Convert any entities in site title to plain text + $hesk_settings['site_title'] = hesk_msgToPlain($hesk_settings['site_title'], 1); /* If it's not a ticket-related mail (like "a new PM") just process quickly */ if ( ! $is_ticket) { - $trackingURL = $hesk_settings['hesk_url'] . '/' . $hesk_settings['admin_dir'] . '/mail.php?a=read&id=' . intval($ticket['id']); + $trackingURL = $hesk_settings['hesk_url'] . '/' . $hesk_settings['admin_dir'] . '/mail.php?a=read&id=' . intval($ticket['id']); - $msg = str_replace('%%NAME%%', $ticket['name'] ,$msg); - $msg = str_replace('%%SUBJECT%%', $ticket['subject'] ,$msg); - $msg = str_replace('%%TRACK_URL%%', $trackingURL ,$msg); - $msg = str_replace('%%SITE_TITLE%%',$hesk_settings['site_title'] ,$msg); - $msg = str_replace('%%SITE_URL%%', $hesk_settings['site_url'] ,$msg); + $msg = str_replace('%%NAME%%', $ticket['name'] ,$msg); + $msg = str_replace('%%SUBJECT%%', $ticket['subject'] ,$msg); + $msg = str_replace('%%TRACK_URL%%', $trackingURL ,$msg); + $msg = str_replace('%%SITE_TITLE%%',$hesk_settings['site_title'] ,$msg); + $msg = str_replace('%%SITE_URL%%', $hesk_settings['site_url'] ,$msg); - if ( isset($ticket['message']) ) - { - return str_replace('%%MESSAGE%%', $ticket['message'], $msg); - } - else - { - return $msg; - } + if ( isset($ticket['message']) ) + { + return str_replace('%%MESSAGE%%', $ticket['message'], $msg); + } + else + { + return $msg; + } } // Is email required to view ticket (for customers only)? - $hesk_settings['e_param'] = $hesk_settings['email_view_ticket'] ? '&e=' . rawurlencode($ticket['email']) : ''; + $hesk_settings['e_param'] = $hesk_settings['email_view_ticket'] ? '&e=' . rawurlencode($ticket['email']) : ''; /* Generate the ticket URLs */ $trackingURL = $hesk_settings['hesk_url']; - $trackingURL.= $is_admin ? '/' . $hesk_settings['admin_dir'] . '/admin_ticket.php' : '/ticket.php'; + $trackingURL.= $is_admin ? '/' . $hesk_settings['admin_dir'] . '/admin_ticket.php' : '/ticket.php'; $trackingURL.= '?track='.$ticket['trackid'].($is_admin ? '' : $hesk_settings['e_param']).'&Refresh='.rand(10000,99999); - /* Set category title */ - $ticket['category'] = hesk_msgToPlain(hesk_getCategoryName($ticket['category']), 1); + /* Set category title */ + $ticket['category'] = hesk_msgToPlain(hesk_getCategoryName($ticket['category']), 1); - /* Set priority title */ - switch ($ticket['priority']) - { - case 0: - $ticket['priority'] = $hesklang['critical']; - break; - case 1: - $ticket['priority'] = $hesklang['high']; - break; - case 2: - $ticket['priority'] = $hesklang['medium']; - break; - default: - $ticket['priority'] = $hesklang['low']; - } + /* Set priority title */ + switch ($ticket['priority']) + { + case 0: + $ticket['priority'] = $hesklang['critical']; + break; + case 1: + $ticket['priority'] = $hesklang['high']; + break; + case 2: + $ticket['priority'] = $hesklang['medium']; + break; + default: + $ticket['priority'] = $hesklang['low']; + } /* Get owner name */ $ticket['owner'] = hesk_msgToPlain( hesk_getOwnerName($ticket['owner']), 1); @@ -645,15 +732,15 @@ function hesk_getEmailMessage($eml_file, $ticket, $is_admin=0, $is_ticket=1, $ju $row = hesk_dbFetchAssoc($statusRs); $ticket['status'] = $hesklang[$row['ShortNameContentKey']]; - /* Replace all special tags */ - $msg = str_replace('%%NAME%%', $ticket['name'] ,$msg); - $msg = str_replace('%%SUBJECT%%', $ticket['subject'] ,$msg); - $msg = str_replace('%%TRACK_ID%%', $ticket['trackid'] ,$msg); - $msg = str_replace('%%TRACK_URL%%', $trackingURL ,$msg); - $msg = str_replace('%%SITE_TITLE%%',$hesk_settings['site_title'],$msg); - $msg = str_replace('%%SITE_URL%%', $hesk_settings['site_url'] ,$msg); - $msg = str_replace('%%CATEGORY%%', $ticket['category'] ,$msg); - $msg = str_replace('%%PRIORITY%%', $ticket['priority'] ,$msg); + /* Replace all special tags */ + $msg = str_replace('%%NAME%%', $ticket['name'] ,$msg); + $msg = str_replace('%%SUBJECT%%', $ticket['subject'] ,$msg); + $msg = str_replace('%%TRACK_ID%%', $ticket['trackid'] ,$msg); + $msg = str_replace('%%TRACK_URL%%', $trackingURL ,$msg); + $msg = str_replace('%%SITE_TITLE%%',$hesk_settings['site_title'],$msg); + $msg = str_replace('%%SITE_URL%%', $hesk_settings['site_url'] ,$msg); + $msg = str_replace('%%CATEGORY%%', $ticket['category'] ,$msg); + $msg = str_replace('%%PRIORITY%%', $ticket['priority'] ,$msg); $msg = str_replace('%%OWNER%%', $ticket['owner'] ,$msg); $msg = str_replace('%%STATUS%%', $ticket['status'] ,$msg); $msg = str_replace('%%EMAIL%%', $ticket['email'] ,$msg); @@ -661,51 +748,50 @@ function hesk_getEmailMessage($eml_file, $ticket, $is_admin=0, $is_ticket=1, $ju $msg = str_replace('%%UPDATED%%', $ticket['lastchange'] ,$msg); $msg = str_replace('%%ID%%', $ticket['id'] ,$msg); - /* All custom fields */ - foreach ($hesk_settings['custom_fields'] as $k=>$v) - { - if ($v['use']) - { - if ($v['type'] == 'checkbox') + /* All custom fields */ + foreach ($hesk_settings['custom_fields'] as $k=>$v) + { + if ($v['use']) + { + if ($v['type'] == 'checkbox') { - $ticket[$k] = str_replace("
","\n",$ticket[$k]); + $ticket[$k] = str_replace("
","\n",$ticket[$k]); } - $msg = str_replace('%%'.strtoupper($k).'%%',stripslashes($ticket[$k]),$msg); - } + $msg = str_replace('%%'.strtoupper($k).'%%',stripslashes($ticket[$k]),$msg); + } else { - $msg = str_replace('%%'.strtoupper($k).'%%','',$msg); + $msg = str_replace('%%'.strtoupper($k).'%%','',$msg); } - } + } - // Is message tag in email template? - if (strpos($msg, '%%MESSAGE%%') !== false) - { - // Replace message - $msg = str_replace('%%MESSAGE%%',$ticket['message'],$msg); + // Is message tag in email template? + if (strpos($msg, '%%MESSAGE%%') !== false) + { + // Replace message + $msg = str_replace('%%MESSAGE%%',$ticket['message'],$msg); - // Add direct links to any attachments at the bottom of the email message - if ($hesk_settings['attachments']['use'] && isset($ticket['attachments']) && strlen($ticket['attachments']) ) - { - $msg .= "\n\n\n" . $hesklang['fatt']; - - $att = explode(',', substr($ticket['attachments'], 0, -1)); - foreach ($att as $myatt) - { - list($att_id, $att_name) = explode('#', $myatt); - $msg .= "\n\n" . $att_name . "\n" . $hesk_settings['hesk_url'] . '/download_attachment.php?att_id='.$att_id.'&track='.$ticket['trackid'].$hesk_settings['e_param']; - } - } + // Add direct links to any attachments at the bottom of the email message + if ($hesk_settings['attachments']['use'] && isset($ticket['attachments']) && strlen($ticket['attachments']) ) + { + $msg .= "\n\n\n" . $hesklang['fatt']; - // For customer notifications: if we allow email piping/pop 3 fetching and - // stripping quoted replies add an "reply above this line" tag - if ( ! $is_admin && ($hesk_settings['email_piping'] || $hesk_settings['pop3']) && $hesk_settings['strip_quoted']) - { - $msg = $hesklang['EMAIL_HR'] . "\n\n" . $msg; - } - } + $att = explode(',', substr($ticket['attachments'], 0, -1)); + foreach ($att as $myatt) + { + list($att_id, $att_name) = explode('#', $myatt); + $msg .= "\n\n" . $att_name . "\n" . $hesk_settings['hesk_url'] . '/download_attachment.php?att_id='.$att_id.'&track='.$ticket['trackid'].$hesk_settings['e_param']; + } + } - return $msg; + // For customer notifications: if we allow email piping/pop 3 fetching and + // stripping quoted replies add an "reply above this line" tag + if ( ! $is_admin && ($hesk_settings['email_piping'] || $hesk_settings['pop3']) && $hesk_settings['strip_quoted']) + { + $msg = $hesklang['EMAIL_HR'] . "\n\n" . $msg; + } + } -} // END hesk_getEmailMessage + return $msg; +} diff --git a/index.php b/index.php index 35e76f37..10f1728e 100644 --- a/index.php +++ b/index.php @@ -37,6 +37,7 @@ define('HESK_PATH','./'); // Get all the required files and functions require(HESK_PATH . 'hesk_settings.inc.php'); +require(HESK_PATH . 'modsForHesk_settings.inc.php'); require(HESK_PATH . 'inc/common.inc.php'); // Are we in maintenance mode? @@ -1160,6 +1161,10 @@ function forgot_tid() require(HESK_PATH . 'inc/email_functions.inc.php'); + /* Get ticket(s) from database */ + hesk_load_database_functions(); + hesk_dbConnect(); + $email = hesk_validateEmail( hesk_POST('email'), 'ERR' ,0) or hesk_process_messages($hesklang['enter_valid_email'],'ticket.php?remind=1'); if ( isset($_POST['open_only']) ) @@ -1175,10 +1180,6 @@ function forgot_tid() $my_status[$myStatusRow['ID']] = $hesklang[$myStatusRow['TicketViewContentKey']]; } - /* Get ticket(s) from database */ - hesk_load_database_functions(); - hesk_dbConnect(); - // Get tickets from the database $res = hesk_dbQuery('SELECT * FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'tickets` FORCE KEY (`statuses`) WHERE ' . ($hesk_settings['open_only'] ? "`status` IN (SELECT `ID` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."statuses` WHERE `IsClosed` = 0) AND " : '') . ' ' . hesk_dbFormatEmail($email) . ' ORDER BY `status` ASC, `lastchange` DESC '); @@ -1213,16 +1214,17 @@ $hesk_settings[hesk_url]/ticket.php?track={$my_ticket['trackid']}{$email_param} /* Get e-mail message for customer */ $msg = hesk_getEmailMessage('forgot_ticket_id','',0,0,1); - $msg = str_replace('%%NAME%%', $name, $msg); - $msg = str_replace('%%NUM%%', $num, $msg); - $msg = str_replace('%%LIST_TICKETS%%', $tid_list, $msg); - $msg = str_replace('%%SITE_TITLE%%', hesk_msgToPlain($hesk_settings['site_title'], 1), $msg); - $msg = str_replace('%%SITE_URL%%', $hesk_settings['site_url'], $msg); + $msg = processEmail($msg, $name, $num, $tid_list); + + // Get HTML message for customer + $htmlMsg = hesk_getHtmlMessage('forgot_ticket_id','',0,0,1); + $htmlMsg = processEmail($htmlMsg, $name, $num, $tid_list); + $subject = hesk_getEmailSubject('forgot_ticket_id'); /* Send e-mail */ - hesk_mail($email, $subject, $msg); + hesk_mail($email, $subject, $msg, $htmlMsg); /* Show success message */ $tmp = ''.$hesklang['tid_sent'].'!'; @@ -1248,4 +1250,15 @@ $hesk_settings[hesk_url]/ticket.php?track={$my_ticket['trackid']}{$email_param} } // End forgot_tid() + function processEmail($msg, $name, $num, $tid_list) + { + global $hesk_settings; + + $msg = str_replace('%%NAME%%', $name, $msg); + $msg = str_replace('%%NUM%%', $num, $msg); + $msg = str_replace('%%LIST_TICKETS%%', $tid_list, $msg); + $msg = str_replace('%%SITE_TITLE%%', hesk_msgToPlain($hesk_settings['site_title'], 1), $msg); + $msg = str_replace('%%SITE_URL%%', $hesk_settings['site_url'], $msg); + return $msg; + } ?> diff --git a/language/en/emails/html/category_moved.txt b/language/en/emails/html/category_moved.txt new file mode 100644 index 00000000..a2d87b36 --- /dev/null +++ b/language/en/emails/html/category_moved.txt @@ -0,0 +1,10 @@ +

Hello,

+

A new support ticket has been moved to your category. Ticket details:

+

Ticket subject: %%SUBJECT%%
+Tracking ID: %%TRACK_ID%%

+

You can manage this ticket here: +%%TRACK_URL%%

+
+

Regards,

+%%SITE_TITLE%%
+%%SITE_URL%% \ No newline at end of file diff --git a/language/en/emails/html/forgot_ticket_id.txt b/language/en/emails/html/forgot_ticket_id.txt new file mode 100644 index 00000000..81d1798b --- /dev/null +++ b/language/en/emails/html/forgot_ticket_id.txt @@ -0,0 +1,6 @@ +

Dear %%NAME%%,

+

This email contains a list of support tickets submitted with your email address. Number of support tickets found: %%NUM%%

+

%%LIST_TICKETS%%

+

Sincerely,

+%%SITE_TITLE%%
+%%SITE_URL%% \ No newline at end of file diff --git a/language/en/emails/html/index.htm b/language/en/emails/html/index.htm new file mode 100644 index 00000000..4ff7e4a8 --- /dev/null +++ b/language/en/emails/html/index.htm @@ -0,0 +1,8 @@ + + +403 Forbidden + +

Forbidden

+You don't have permission to access this folder.

+


+ \ No newline at end of file diff --git a/language/en/emails/html/new_note.txt b/language/en/emails/html/new_note.txt new file mode 100644 index 00000000..c0b1de5f --- /dev/null +++ b/language/en/emails/html/new_note.txt @@ -0,0 +1,9 @@ +

Hello,

+

A new note has been added to ticket "%%SUBJECT%%".

+

Note by %%NAME%%:

+

%%MESSAGE%%

+

You can manage this ticket here: +%%TRACK_URL%%

+

Regards,

+%%SITE_TITLE%%
+%%SITE_URL%% \ No newline at end of file diff --git a/language/en/emails/html/new_pm.txt b/language/en/emails/html/new_pm.txt new file mode 100644 index 00000000..d30a537f --- /dev/null +++ b/language/en/emails/html/new_pm.txt @@ -0,0 +1,8 @@ +

Hello,

+

You have received a new private message from %%NAME%% with the following subject:

+

%%SUBJECT%%

+

You can view your new message by clicking on the following link: +%%TRACK_URL%%

+

Sincerely,

+%%SITE_TITLE%%
+%%SITE_URL%% \ No newline at end of file diff --git a/language/en/emails/html/new_reply_by_customer.txt b/language/en/emails/html/new_reply_by_customer.txt new file mode 100644 index 00000000..f0eb563d --- /dev/null +++ b/language/en/emails/html/new_reply_by_customer.txt @@ -0,0 +1,7 @@ +

Hello,

+

A customer has just replied to ticket "%%SUBJECT%%".

+

You can manage this ticket here: +%%TRACK_URL%%

+

Regards,

+%%SITE_TITLE%%
+%%SITE_URL%% \ No newline at end of file diff --git a/language/en/emails/html/new_reply_by_staff.txt b/language/en/emails/html/new_reply_by_staff.txt new file mode 100644 index 00000000..1287b2b8 --- /dev/null +++ b/language/en/emails/html/new_reply_by_staff.txt @@ -0,0 +1,9 @@ +

Dear %%NAME%%,

+

Our staff has just replied to your ticket "%%SUBJECT%%".

+

You can view the ticket here:

+%%TRACK_URL%% +

+

Sincerely,

+%%SITE_TITLE%% +
+%%SITE_URL%% \ No newline at end of file diff --git a/language/en/emails/html/new_ticket.txt b/language/en/emails/html/new_ticket.txt new file mode 100644 index 00000000..4b2816a6 --- /dev/null +++ b/language/en/emails/html/new_ticket.txt @@ -0,0 +1,10 @@ +

Dear %%NAME%%,

+

Your support ticket "%%SUBJECT%%" has been submitted.

+

We reply to all tickets as soon as possible, within 24 to 48 hours. If we expect your ticket will take additional time, we will update you by sending you an email.

+

Ticket tracking ID: %%TRACK_ID%%

+

You can view the status of your ticket here: +%%TRACK_URL%%

+

You will receive an email notification when our staff replies to your ticket.

+

Sincerely,

+%%SITE_TITLE%%
+%%SITE_URL%% \ No newline at end of file diff --git a/language/en/emails/html/new_ticket_staff.txt b/language/en/emails/html/new_ticket_staff.txt new file mode 100644 index 00000000..8b96ae00 --- /dev/null +++ b/language/en/emails/html/new_ticket_staff.txt @@ -0,0 +1,9 @@ +

Hello,

+

A new support ticket has been submitted. Ticket details:

+

Ticket subject: %%SUBJECT%%

+

Tracking ID: %%TRACK_ID%%

+

You can manage this ticket here: +%%TRACK_URL%%

+

Regards,

+%%SITE_TITLE%%
+%%SITE_URL%% \ No newline at end of file diff --git a/language/en/emails/html/reset_password.txt b/language/en/emails/html/reset_password.txt new file mode 100644 index 00000000..74d3b49a --- /dev/null +++ b/language/en/emails/html/reset_password.txt @@ -0,0 +1,7 @@ +

Hi %%NAME%%,

+

We were told that you forgot your help desk password. It happens to everyone!

+

To reset your password visit the link below (expires in 2 hours): +%%PASSWORD_RESET%%

+

Thanks,

+%%SITE_TITLE%%
+%%SITE_URL%% \ No newline at end of file diff --git a/language/en/emails/html/ticket_assigned_to_you.txt b/language/en/emails/html/ticket_assigned_to_you.txt new file mode 100644 index 00000000..135c6e72 --- /dev/null +++ b/language/en/emails/html/ticket_assigned_to_you.txt @@ -0,0 +1,9 @@ +

Hello,

+

A new support ticket has been assigned to you. Ticket details:

+

Ticket subject: %%SUBJECT%%

+

Tracking ID: %%TRACK_ID%%

+

You can manage this ticket here: +%%TRACK_URL%%

+

Regards,

+%%SITE_TITLE%%
+%%SITE_URL%% \ No newline at end of file diff --git a/language/en/emails/html/ticket_closed.txt b/language/en/emails/html/ticket_closed.txt new file mode 100644 index 00000000..f547ba76 --- /dev/null +++ b/language/en/emails/html/ticket_closed.txt @@ -0,0 +1,8 @@ +

Dear %%NAME%%,

+

Your support ticket "%%SUBJECT%%" has been updated to a closed/resolved status.

+

Ticket tracking ID: %%TRACK_ID%%

+

You can view the status of your ticket here: +%%TRACK_URL%%

+

Sincerely,

+%%SITE_TITLE%%
+%%SITE_URL%% \ No newline at end of file diff --git a/language/en/emails/html/ticket_reopen_assigned.txt b/language/en/emails/html/ticket_reopen_assigned.txt new file mode 100644 index 00000000..feab821e --- /dev/null +++ b/language/en/emails/html/ticket_reopen_assigned.txt @@ -0,0 +1,9 @@ +

Hello,

+

A support ticket assigned to you has been re-opened.

+

%%NAME%% has just re-opened the ticket "%%SUBJECT%%".

+

Tracking ID: %%TRACK_ID%%

+

You can manage this ticket here: +%%TRACK_URL%%

+

Regards,

+%%SITE_TITLE%%
+%%SITE_URL%% \ No newline at end of file diff --git a/language/en/emails/html/verify_email.txt b/language/en/emails/html/verify_email.txt new file mode 100644 index 00000000..5ffeb045 --- /dev/null +++ b/language/en/emails/html/verify_email.txt @@ -0,0 +1,6 @@ +

Dear %%NAME%%,

+

Your email needs to be verified before your ticket can be submitted. Please click the link below to verify your email.

+

%%VERIFYURL%%

+

Sincerely,

+%%SITE_TITLE%%
+%%SITE_URL%% \ No newline at end of file