2014-06-25 00:13:02 -04:00
< ? php
2016-11-16 21:16:25 -05:00
/**
*
* This file is part of HESK - PHP Help Desk Software .
*
* ( c ) Copyright Klemen Stirn . All rights reserved .
2016-11-18 12:57:17 -05:00
* https :// www . hesk . com
2016-11-16 21:16:25 -05:00
*
* For the full copyright and license agreement information visit
2016-11-18 12:57:17 -05:00
* https :// www . hesk . com / eula . php
2016-11-16 21:16:25 -05:00
*
*/
2015-09-12 00:46:46 -04:00
define ( 'IN_SCRIPT' , 1 );
define ( 'HESK_PATH' , '../' );
2014-06-25 00:13:02 -04:00
/* Get all the required files and functions */
require ( HESK_PATH . 'hesk_settings.inc.php' );
require ( HESK_PATH . 'inc/common.inc.php' );
require ( HESK_PATH . 'inc/admin_functions.inc.php' );
hesk_load_database_functions ();
hesk_session_start ();
hesk_dbConnect ();
hesk_isLoggedIn ();
2015-09-03 21:58:05 -04:00
$modsForHesk_settings = mfh_getSettings ();
2014-06-25 00:13:02 -04:00
/* Check permissions for this feature */
hesk_checkPermission ( 'can_view_tickets' );
hesk_checkPermission ( 'can_reply_tickets' );
hesk_checkPermission ( 'can_edit_tickets' );
2016-10-12 13:26:28 -04:00
hesk_checkPermission ( 'can_resolve' );
2014-06-25 00:13:02 -04:00
/* A security check */
hesk_token_check ();
/* Ticket ID */
2015-09-12 00:46:46 -04:00
$trackingID = hesk_cleanID () or die ( $hesklang [ 'int_error' ] . ': ' . $hesklang [ 'no_trackID' ]);
2014-06-25 00:13:02 -04:00
2015-01-11 17:36:05 -05:00
/* New locked status */
2015-09-12 00:46:46 -04:00
if ( empty ( $_GET [ 'locked' ])) {
$status = 0 ;
$tmp = $hesklang [ 'tunlock' ];
$revision = sprintf ( $hesklang [ 'thist6' ], hesk_date (), $_SESSION [ 'name' ] . ' (' . $_SESSION [ 'user' ] . ')' );
2015-01-11 17:36:05 -05:00
$closedby_sql = ' , `closedat`=NULL, `closedby`=NULL ' ;
2015-09-12 00:46:46 -04:00
} else {
$status = 1 ;
$tmp = $hesklang [ 'tlock' ];
$revision = sprintf ( $hesklang [ 'thist5' ], hesk_date (), $_SESSION [ 'name' ] . ' (' . $_SESSION [ 'user' ] . ')' );
$closedby_sql = ' , `closedat`=NOW(), `closedby`=' . intval ( $_SESSION [ 'id' ]) . ' ' ;
2015-01-11 17:36:05 -05:00
// Notify customer of closed ticket?
2015-09-12 00:46:46 -04:00
if ( $hesk_settings [ 'notify_closed' ]) {
2015-01-11 17:36:05 -05:00
// Get ticket info
2015-09-12 00:46:46 -04:00
$result = hesk_dbQuery ( " SELECT * FROM ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " tickets` WHERE `trackid`=' " . hesk_dbEscape ( $trackingID ) . " ' LIMIT 1 " );
if ( hesk_dbNumRows ( $result ) != 1 ) {
2015-01-11 17:36:05 -05:00
hesk_error ( $hesklang [ 'ticket_not_found' ]);
}
$ticket = hesk_dbFetchAssoc ( $result );
2015-09-12 00:46:46 -04:00
$closedStatusRS = hesk_dbQuery ( 'SELECT `ID` FROM `' . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . 'statuses` WHERE `IsClosed` = 1' );
2015-01-19 23:49:35 -05:00
$ticketIsOpen = true ;
2015-09-12 00:46:46 -04:00
while ( $row = hesk_dbFetchAssoc ( $closedStatusRS )) {
if ( $ticket [ 'status' ] == $row [ 'ID' ]) {
2015-01-19 23:49:35 -05:00
$ticketIsOpen = false ;
}
}
2015-01-11 17:36:05 -05:00
// Notify customer, but only if ticket is not already closed
2015-09-12 00:46:46 -04:00
if ( $ticketIsOpen ) {
2015-01-11 17:36:05 -05:00
require ( HESK_PATH . 'inc/email_functions.inc.php' );
$ticket [ 'dt' ] = hesk_date ( $ticket [ 'dt' ], true );
$ticket [ 'lastchange' ] = hesk_date ( $ticket [ 'lastchange' ], true );
2015-09-03 21:58:05 -04:00
hesk_notifyCustomer ( $modsForHesk_settings , 'ticket_closed' );
2015-01-11 17:36:05 -05:00
}
}
2014-06-25 00:13:02 -04:00
}
/* Update database */
2015-09-12 00:46:46 -04:00
$statusSql = 'SELECT `ID` FROM `' . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . 'statuses` WHERE `LockedTicketStatus` = 1' ;
2016-06-07 12:16:17 -04:00
$statusRs = hesk_dbQuery ( $statusSql );
2016-08-10 23:57:37 -04:00
$statusRow = hesk_dbFetchAssoc ( $statusRs );
2014-06-25 00:13:02 -04:00
$statusId = $statusRow [ 'ID' ];
2016-10-12 13:26:28 -04:00
hesk_dbQuery ( " UPDATE ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " tickets` SET `status`= { $statusId } ,`locked`=' { $status } ' $closedby_sql , `history`=CONCAT(`history`,' " . hesk_dbEscape ( $revision ) . " ') WHERE `trackid`=' " . hesk_dbEscape ( $trackingID ) . " ' " );
2014-06-25 00:13:02 -04:00
/* Back to ticket page and show a success message */
2016-08-10 23:57:37 -04:00
hesk_process_messages ( $tmp , 'admin_ticket.php?track=' . $trackingID . '&Refresh=' . rand ( 10000 , 99999 ), 'SUCCESS' );