⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ticketactions.php

📁 jsp程序开发系统
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?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 + -