Mail if Ticket Reopened or Closed

Everything related to Hesk - helpdesk software

Moderator: mkoch227

Post Reply
Laser5000
Posts: 1
Joined: Thu Apr 03, 2008 10:44 am

Mail if Ticket Reopened or Closed

Post by Laser5000 »

/*************************************
Title:
Version: 0.94.1
Author: Mathias Schöffel

Short description: If a Customer or Staff-Member Change the Status it sends a mail

*************************************/

Description:

File: admin_change_status.php

Change Line:

Code: Select all

if ($status==3) {..... 
to this:

Code: Select all

if ($status==3) {
	$action=$hesklang['closed'];
	$fileresult = 'emails/closed_ticket_customer.txt';
	$txtlang = 'ticket_closed';
} else {
	$action=$hesklang['opened'];
	$fileresult = 'emails/reopened_ticket_customer.txt';
	$txtlang = 'ticket_reopened';
}
and after Line:

Code: Select all

$admin_trackingURL=$hesk_settings['hesk_url'].'/admin_ticket.php?track='.$trackingID.'&Refresh='.rand(10000,99999);
add this:

Code: Select all

/* Get e-mail message for customer */
$fp=fopen($fileresult,'r');
$message=fread($fp,filesize($fileresult));
fclose($fp);

$sql = "SELECT name,email,subject,message FROM `hesk_tickets` WHERE `trackid`='".$trackingID."' LIMIT 1" ;
$result = hesk_dbQuery($sql) or hesk_error("$hesklang[cant_sql]: $sql</p><p>$hesklang[mysql_said]:<br>".mysql_error()."</p><p>$hesklang[contact_webmsater] $hesk_settings[webmaster_mail]");
if (hesk_dbNumRows($result) != 1) {hesk_error($hesklang['ticket_not_found']);}
$ticket = hesk_dbFetchAssoc($result);

$trackingURL=$hesk_settings['hesk_url'].'/ticket.php?track='.$trackingID;

$message=str_replace('%%RISP%%',$ticket['message'],$message); 
$message=str_replace('%%NAME%%',$ticket['name'],$message);
$message=str_replace('%%SUBJECT%%',$ticket['subject'],$message);
$message=str_replace('%%TRACK_ID%%',$trackingID,$message);
$message=str_replace('%%TRACK_URL%%',$trackingURL,$message);
$message=str_replace('%%SITE_TITLE%%',$hesk_settings['site_title'] ,$message);
$message=str_replace('%%SITE_URL%%',$hesk_settings['site_url'] ,$message);

/* Send e-mail */
$headers="From: $hesk_settings[noreply_mail]\n";
$headers.="Reply-to: $hesk_settings[noreply_mail]\n";
@mail($ticket['email'],$hesklang[$txtlang]." Ticket: ".$trackingID,$message,$headers);

File: change_status.php

Change Line:

Code: Select all

if ($status==3) {..... 
to this:

Code: Select all

if ($status==3) {
	$action=$hesklang['closed'];
	$fileresult = 'emails/closed_ticket_staff.txt';
	$txtlang = 'closed_ticket_submitted';
} else {
	$action=$hesklang['opened'];
	$fileresult = 'emails/reopened_ticket_staff.txt';
	$txtlang = 'reopened_ticket_submitted';
}

and add after Line:

Code: Select all

$trackingURL=$hesk_settings['hesk_url'].'/ticket.php?track='.$trackingID.'&Refresh='.rand(10000,99999);
this:

Code: Select all

/* Query for Category */
$sql = "SELECT name,email,subject,message,category FROM `hesk_tickets` WHERE `trackid`='".$trackingID."' LIMIT 1" ;
$result = hesk_dbQuery($sql) or hesk_error("$hesklang[cant_sql]: $sql</p><p>$hesklang[mysql_said]:<br>".mysql_error()."</p><p>$hesklang[contact_webmsater] $hesk_settings[webmaster_mail]");
if (hesk_dbNumRows($result) != 1) {hesk_error($hesklang['ticket_not_found']);}
$ticket = hesk_dbFetchAssoc($result);

$category = $ticket['category'];

/* Need to notify any admins? */
$admins=array();
$sql = "SELECT `email`,`isadmin`,`categories` FROM `hesk_users` WHERE `notify`='1'";
$result = hesk_dbQuery($sql) or hesk_error("$hesklang[cant_sql]: $sql</p><p>$hesklang[mysql_said]:<br>".mysql_error()."</p><p>$hesklang[contact_webmsater] $hesk_settings[webmaster_mail]");
while ($myuser=hesk_dbFetchAssoc($result))
{
    /* Is this an administrator? */
    if ($myuser['isadmin']) {$admins[]=$myuser['email']; continue;}
    /* Not admin, is he allowed this category? */
    $cat=substr($myuser['categories'], 0, -1);
    $myuser['categories']=explode(',',$cat);
    if (in_array($category,$myuser['categories']))
    {
        $admins[]=$myuser['email']; continue;
    }
}
if (count($admins)>0)
{
$trackingURL_admin=$hesk_settings['hesk_url'].'/admin_ticket.php?track='.$trackingID;

/* Get e-mail message for customer */
$fp=fopen($fileresult,'r');
$message=fread($fp,filesize($fileresult));
fclose($fp);

$sql = "SELECT name,email,subject,message FROM `hesk_tickets` WHERE `trackid`='".$trackingID."' LIMIT 1" ;
$result = hesk_dbQuery($sql) or hesk_error("$hesklang[cant_sql]: $sql</p><p>$hesklang[mysql_said]:<br>".mysql_error()."</p><p>$hesklang[contact_webmsater] $hesk_settings[webmaster_mail]");
if (hesk_dbNumRows($result) != 1) {hesk_error($hesklang['ticket_not_found']);}
$ticket = hesk_dbFetchAssoc($result);

$message=str_replace('%%RISP%%',$ticket['message'],$message); 
$message=str_replace('%%NAME%%',$ticket['name'],$message);
$message=str_replace('%%SUBJECT%%',$ticket['subject'],$message);
$message=str_replace('%%TRACK_ID%%',$trackingID,$message);
$message=str_replace('%%TRACK_URL%%',$trackingURL,$message);
$message=str_replace('%%SITE_TITLE%%',$hesk_settings['site_title'] ,$message);
$message=str_replace('%%SITE_URL%%',$hesk_settings['site_url'] ,$message);

/* Send e-mail to staff */
$email=implode(',',$admins);
$headers="From: $hesk_settings[noreply_mail]\n";
$headers.="Reply-to: $hesk_settings[noreply_mail]\n";
@mail($email,$hesklang[$txtlang]." Ticket: ".$trackingID,$message,$headers);
} // End if

make under folder "emails" some new files (maybe a copy of other files with your own text):
closed_ticket_customer.txt
closed_ticket_staff.txt
reopened_ticket_customer.txt
reopened_ticket_staff.txt

You can use %%RISP%% to get the original Text Message in this Mails! (added from another ADD-On)

and the last change in your language (english.inc.php) file add:

Code: Select all

$hesklang['reopened_ticket_submitted']='Wiedereröffnetes Support';
$hesklang['closed_ticket_submitted']='Geschlossenes Support';
$hesklang['ticket_reopened']='Support-Ticket wieder geöffnet.';
$hesklang['ticket_closed']='Support-Ticket geschlossen.';
of course with your own language Text! ;-)
I hope i forgot nothing to copy...

br,
Mathias

EDIT: Sorry...i have a Error in change_status.php... only Admins notified... but error cleaned now!
Last edited by Laser5000 on Wed Apr 16, 2008 6:27 am, edited 2 times in total.
Klemen
Site Admin
Posts: 10136
Joined: Fri Feb 11, 2005 4:04 pm

Post by Klemen »

Thanks for sharing!
Klemen, creator of HESK and PHPJunkyardWas this helpful? You can buy me a drink here Image

Image You should follow me on Twitter here

Help desk software | Cloud help desk | Guestbook | Link manager | Click counter | more PHP Scripts ...

Also browse for php hosting companies, read php books, find php resources and use webmaster tools
Post Reply