📄 ticketactions.php
字号:
<?php
// +-------------------------------------------------------------+
// | DeskPRO v [2.0.1 Production]
// | Copyright (C) 2001 - 2004 Headstart Solutions Limited
// | Supplied by WTN-WDYL
// | Nullified by WTN-WDYL
// | Distribution via WebForum, ForumRU and associated file dumps
// +-------------------------------------------------------------+
// | DESKPRO IS NOT FREE SOFTWARE
// +-------------------------------------------------------------+
// | License ID : Full Enterprise License =) ...
// | License Owner : WTN-WDYL Team
// +-------------------------------------------------------------+
// | $RCSfile: ticketactions.php,v $
// | $Date: 2004/02/10 01:34:30 $
// | $Revision: 1.72 $
// +-------------------------------------------------------------+
// | File Details:
// | - Ticket actions handler.
// +-------------------------------------------------------------+
error_reporting(E_ALL ^ E_NOTICE);
// start file
require("./../global.php");
// globalise variables
$global = array (
array('id') // ticketid
);
rg($global);
/***********************************************************
MASS TICKET PROCESSING
************************************************************/
############################### PROCESS TICKETS ###############################
$now_ = mktime();
if ($_REQUEST['do'] == "process") {
new_db_class('2');
/***********************************************************
GET SOME DATA
************************************************************/
$db->query("SELECT id, name FROM ticket_cat");
while ($result = $db->row_array()) {
$cats[] = $result[id];
$catsname[$result[id]] = $result[name];
}
$db->query("SELECT id, name FROM ticket_pri");
while ($result = $db->row_array()) {
$pris[] = $result[id];
$prisname[$result[id]] = $result[name];
}
$db->query("SELECT id, username FROM tech");
while ($result = $db->row_array()) {
$techs[] = $result[id];
$techsname[$result[id]] = $result[username];
}
/***********************************************************
PROCESS TICKETS
************************************************************/
// build up list of ticket ids
foreach ($_REQUEST AS $key => $var) {
$tmp = strpos($key, 'OPT');
if (($tmp !== false) AND ($var != 'Select one')) {
$ticketid = substr($key, 3); // get ticketid
$tickets[] = $ticketid;
$toprocess[$ticketid] = array(
'type' => $var,
'value' => $_REQUEST['SO' . $ticketid]
);
}
}
if (!is_array($tickets)) {
form_jump('ticketsearch.php', 'You did not make any changes to tickets', array('searchtype' => $_REQUEST['searchtype'], 'variables' => $_REQUEST['variables']));
}
// get ticket data
$tickets = $db->query_return_array("SELECT ticket.*, user.email AS email FROM ticket LEFT JOIN user ON user.id = ticket.userid WHERE ticket.id IN " . array2sql($tickets) . "");
if ($db->num_rows()) {
foreach($tickets AS $ticket) {
if ($toprocess[$ticket[id]]['type'] == 'category') { // category
if (p_ticket('edit') AND in_array($toprocess[$ticket[id]]['value'], $cats)) {
$tlog = $db->query_return("SELECT category FROM ticket WHERE id = '$ticket[id]'");
$db->query("UPDATE ticket SET category = '" . $toprocess[$ticket[id]]['value'] . "' WHERE id = '$ticket[id]'");
if ($db->affected_rows()) {
$message .= "Ticket $ticket[id] category changed to " . $catsname[$toprocess[$ticket[id]]['value']] . '\\n';
ticketlog($id, 'category', $tlog[category], $toprocess[$ticket[id]]['value']);
} else {
$message .= "Ticket $ticket[id] category already " . $catsname[$toprocess[$ticket[id]]['value']] . '\\n';
}
}
} elseif ($toprocess[$ticket[id]]['type'] == 'priority') { // priority
if (p_ticket('edit') AND in_array($toprocess[$ticket[id]]['value'], $pris)) {
$tlog = $db->query_return("SELECT priority FROM ticket WHERE id = '$ticket[id]'");
$db->query("UPDATE ticket SET priority = '" . $toprocess[$ticket[id]]['value'] . "' WHERE id = '$ticket[id]'");
if ($db->affected_rows()) {
$message .= "Ticket $ticket[id] priority changed to " . $prisname[$toprocess[$ticket[id]]['value']] . '\\n';
ticketlog($id, 'priority', $tlog[priority], $toprocess[$ticket[id]]['value']);
} else {
$message .= "Ticket $ticket[id] priority already " . $prisname[$toprocess[$ticket[id]]['value']] . '\\n';
}
}
} elseif ($toprocess[$ticket[id]]['type'] == 'tech') { // tech
if (p_ticket('edit') AND in_array($toprocess[$ticket[id]]['value'], $techs)) {
$tlog = $db->query_return("SELECT tech FROM ticket WHERE id = '$ticket[id]'");
$db->query("UPDATE ticket SET tech = '" . $toprocess[$ticket[id]]['value'] . "' WHERE id = '$ticket[id]'");
if ($db->affected_rows()) {
$message .= "Ticket $ticket[id] assigned to " . $techsname[$toprocess[$ticket[id]]['value']] . '\\n';
ticketlog($id, 'tech', $tlog[tech], $toprocess[$ticket[id]]['value']);
notify_technicians('assigned', $ticket, $user, NULL, NULL);
} else {
$message .= "Ticket $ticket[id] is already assigned to " . $techsname[$toprocess[$ticket[id]]['value']]. '\\n';
}
}
} elseif ($toprocess[$ticket[id]]['type'] == 'open') { // open
if (p_ticket('open')) {
$open_tickets[] = $ticket[id];
$message .= "Ticket $ticket[id] reopened\\n";
}
} elseif ($toprocess[$ticket[id]]['type'] == 'close') { // close
if (p_ticket('close')) {
$close_tickets[] = $ticket[id];
$message .= "Ticket $ticket[id] closed\\n";
}
} elseif ($toprocess[$ticket[id]]['type'] == 'awaiting_user') { // awaiting_user
if (p_ticket('edit')) {
$awaiting_user[] = $ticket[id];
$message .= "Ticket $ticket[id] set as awaiting user response\\n";
}
} elseif ($toprocess[$ticket[id]]['type'] == 'awaiting_tech') { // awaiting_tech
if (p_ticket('edit')) {
$awaiting_tech[] = $ticket[id];
$message .= "Ticket $ticket[id] set as awaiting tech response\\n";
}
} elseif ($toprocess[$ticket[id]]['type'] == 'nospam') { // awaiting_tech
if (p_ticket('edit')) {
$db->query("UPDATE ticket SET nodisplay = 0 WHERE id = '$ticket[id]'");
$message .= "Ticket $ticket[id]'s spam flag removed\\n";
}
} elseif ($toprocess[$ticket[id]]['type'] == 'spam') { // awaiting_tech
if (p_ticket('edit')) {
$db->query("UPDATE ticket SET nodisplay = 1 WHERE id = '$ticket[id]'");
$message .= "Ticket $ticket[id]'s spam flag set\\n";
}
} elseif ($toprocess[$ticket[id]]['type'] == 'delete') { // delete (permission check is done by ticket_delete())
$delete_tickets[] = $ticket[id];
if ($toprocess[$ticket[id]]['value'] == '2') { // Ban e-mail as well
ban_email($_REQUEST['email']);
}
} elseif ($toprocess[$ticket[id]]['type'] == 'nuke') { // Delete ticket, delete user, and ban e-mail
if (p_ticket('delete') AND ($user['p_delete_users'] OR $user['admin'])) {
$nukes[] = array('userid' => $ticket[userid], 'email' => $ticket[email]);
$message .= "$ticket[email] deleted/banned; tickets purged\\n";
}
} elseif ($toprocess[$ticket[id]]['type'] == 'quickreply') { // awaiting_tech
if (p_ticket('edit')) {
if ($reply = $db->query_return("SELECT quickreply.*, quickreply_cat.global FROM quickreply LEFT JOIN quickreply_cat ON quickreply.category = quickreply_cat.id WHERE quickreply.id = '" . $toprocess[$ticket[id]]['value'] . "' AND (quickreply_cat.global OR quickreply.techid = '$user[id]')")) {
$reply_body = $reply['response'] . iff($user['signature'], "\n\n--\n$user[signature]");
$db->query("INSERT INTO ticket_message SET
ticketid = '$ticket[id]',
message = '" . mysql_escape_string($reply_body) . "',
date = '$now_',
techid = '$user[id]'
");
$db->query("UPDATE ticket SET
date_lastreply_tech = '$now_',
awaiting_tech = 0, date_awaiting_toggled = '" . mktime() . "'
WHERE id = '$ticket[id]'");
ticketlog($ticket[id], 'tech_replied');
$user_data = $db->query_return("SELECT * FROM user WHERE id = '$ticket[userid]'");
notify_user('reply_user', $ticket, $user_data, $reply_body);
$replied = $ticket[id];
$message .= "Replied to $ticket[id]\\n";
}
}
}
}
}
/***********************************************************
UPDATE TICKETS
************************************************************/
// open / close / awaiting tech / awaiting user
if (is_array($open_tickets)) {
$db->query("UPDATE ticket SET is_open = '1' WHERE id IN " . array2sql($open_tickets) . "");
foreach ($open_tickets AS $key => $val) {
ticketlog($val, 'reopen');
}
}
if (is_array($close_tickets)){
$db->query("UPDATE ticket SET is_open = '0', date_closed = '" . mktime() . "' WHERE id IN " . array2sql($close_tickets) . "");
foreach ($close_tickets AS $key => $val) {
ticketlog($val, 'close');
}
}
if (is_array($awaiting_tech)) {
$db->query("UPDATE ticket SET awaiting_tech = '1', date_awaiting_toggled = '" . mktime() . "' WHERE id IN " . array2sql($awaiting_tech) . "");
foreach ($awaiting_tech AS $key => $val) {
ticketlog($val, 'awaiting_tech');
}
}
if (is_array($awaiting_user)) {
$db->query("UPDATE ticket SET awaiting_tech = '0', date_awaiting_toggled = '" . mktime() . "' WHERE id IN " . array2sql($awaiting_user) . "");
foreach ($awaiting_user AS $key => $val) {
ticketlog($val, 'awaiting_user');
}
}
if (is_array($delete_tickets)) {
$res = ticket_delete($delete_tickets);
if (count($res[0])) {
foreach ($res[0] AS $val) {
$message .= "No permission to delete ticket #$val.\\n";
}
}
if (count($res[1])) {
foreach ($res[1] AS $val) {
$message .= "Ticket #$val deleted.\\n";
}
} else {
$message .= "No tickets deleted.\\n";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -