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

📄 newticket.php

📁 jsp程序开发系统
💻 PHP
📖 第 1 页 / 共 2 页
字号:
	} else {
		$_REQUEST['do'] = "create";
	}
}

############################### CREATE NEW TICKET ###############################

if ($_REQUEST['do'] == "start") {

	if (!$email) {
		$email = $user[email];
	}

	// sort emails
	if ($session[userid]) {
		$email_array[] = $user[email];
		$db->query("SELECT email FROM user_email WHERE userid = '$session[userid]' AND validated");
		while ($result = $db->row_array()) {
			$email_array[] = $result[email];
		}

		if (count($email_array) > 1) {
			$email_html = form_select('email', $email_array, $email, '', 1);
		}

	} else {
		$email_html = form_input('email', $email);
	}

	// categories
	$categories = user_category_array('new');
	if (is_array($categories)) {
		$category_html = form_select('category', $categories, $_REQUEST[category]);
	}

	// priorities
	$priorities = user_priority_array('new');
	if (is_array($priorities)) {
		$priority_html = form_select('priority', $priorities, $_REQUEST[priority]);
	}
	
	// get rest of ticket data
	$db->query(
	"SELECT * from ticket_def
	WHERE ticket_start
	ORDER by displayorder"
	);

	$custom = array();
	while ($result = $db->row_array()) {

		unset($name, $description, $error, $html);

		$tmp = unserialize($result[display_name]);
		$name = $tmp[$session[language]];

		$tmp = unserialize($result[description]);
		$description = $tmp[$session[language]];

		if ($stop OR $redo) {
			$html = field_def($result, 'redo', $_REQUEST[custom_fields][$result[name]], $_REQUEST[custom_fields]["extra" . $result[name]]);
		} else {
			$html = field_def($result);
		}

		$tmp = unserialize($result[error_message]);
		$error = $tmp[$session[language]];

		// two arrays, one for loop and one to allow custom form design
		$custom[] = array(
			'name' => $name,
			'description' => $description,
			'html' => $html,
			'error' => iff(@in_array($result[name], $custom_errors), $error, '')

		);

		${$result[name]} = array(
			'name' => $name,
			'description' => $description,
			'html' => $html,
			'error' => iff(@in_array($result[name], $custom_errors), $error, '')
		);
	}

	$attach = array();
		
	$db->query("	SELECT * FROM ticket_attachments 
					WHERE temporaryid = '" . mysql_escape_string($tempticketid) . "' 
					AND temporaryid
			");
		
	while ($result = $db->row_array()) {
		$attach[] = array(
			'id' => $result[id],
			'name' => $result[filename],
			'filesize' => filesize_display($result[filesize])
		);
	}

	eval(makeeval('header', 'HF_header'));
	eval(makeeval('footer', 'HF_footer'));
	eval(makeeval('echo', 'NEW_newticket'));

}

############################### ADD TICKET TO DATABASE AND PROCESS ################################

if ($_REQUEST['do'] == "create") {	

	/////////////////////// CHECK / CREATE USER ///////////////////////

	// logged in
	if (!$session[userid]) {

		// old user who is not logged in
		if ($user[id] = userid_from_email($email)) {
			
			$loggedout_user = 1;
			$user = $db->query_return("SELECT * FROM user WHERE id = '$user[id]'");

		} else {
			
			// create user
			$new_user = 1;

			// passwords
			$password = make_pass(8);
			$password_cookie = md5($session[sessionid] . $password . uniqid(rand(),1));
			$password_cookie = substr($password_cookie, 0, 8);
			$password_url = md5($password . uniqid(rand(),1) . $session[sessionid]);
			$password_url = substr($password_url, 0, 8);

			// create username and check valid
			$username = make_username($email);
	
			// validate number
			$validate_number = substr(md5(time()),0,6);
			
			$db->query("	
				INSERT into user SET
				password = '" . mysql_escape_string($password) . "',
				password_cookie = '" . mysql_escape_string($password_cookie) . "',
				password_url = '" . mysql_escape_string($password_url) . "',
				email = '" . mysql_escape_string($email) . "',
				name = '" . mysql_escape_string($_REQUEST[name]) . "',
				date_registered = '" . mktime() . "',
				validate_key = '" . addslashes($validate_number) . "',
				username = '" . mysql_escape_string($username) . "'" .
				iff($settings['manual_validation'], ", awaiting_manual_validation = '1'") .
				iff($settings['validate_email'], ", awaiting_validation = '1'") . "
			");

			$user[id] = $db->last_id();

			$user = $db->query_return("SELECT * FROM user WHERE id = '$user[id]'");
			$user_details = $user;	// needed for email to admins

			update_session('user', $user[id]);
			dp_setcookie('dp_user_userid', $user[id], 'ever');
			dp_setcookie('dp_user_password', $password_cookie, 'ever');

			$send_emails = explode(',', $settings[email_registeradmin]);
			if (is_array($send_emails)) {
				foreach ($send_emails AS $key => $var) {
					$var = trim($var);
					if (validate_email($var)) {
						$toemail = $var;
						eval(makeemaileval('message', 'TECHBODY_newuser', $subject));
						dp_mail($var, $subject, $message);
					}
				}	
			}
		}	

	} else {
		$loggedin_user = 1;
	}

	/////////////////////// CREATE TICKET ///////////////////////
	
	$ticketref = make_ticket_ref();

	$authcode = substr(md5(rand(0,100000) . mktime()), 0, 8);

	// start the sql statment (including custom fields
	$query = "
		INSERT into ticket SET 
		$query2
		subject = '" . mysql_escape_string($_REQUEST[subject]) . "',
		language = '$session[language]', 
		category = '" . mysql_escape_string($_REQUEST[category]) . "',
		priority = '" . mysql_escape_string($_REQUEST[priority]) . "',
		userid = '$user[id]',
		is_open = '1',
		awaiting_tech = '1',
		date_awaiting_toggled = '" . mktime() . "',
		date_opened = '" . mktime() . "',
		authcode = '$authcode',
		ref = '$ticketref'
	";

	// set ticket to hidden if the user is awaiting a form of validation
		// i) new users and and settings to validate
		// ii) already awaiting a form of validation

	// tech must validate themselves
	if ($user[awaiting_manual_validation] OR ($settings[manual_validation] AND $new_user)) {
		$query .= ", nodisplay = '3'";
	} elseif ($user[awaiting_validation] OR ($settings[validate_email] AND $new_user)) {
	// user must validate themselves
		$query .= ", nodisplay = '2'";
	}

	// user e-mail
	if ($_REQUEST['email']) {
		$query .= ", email = '". mysql_escape_string($_REQUEST['email']) . "'";
	}
	
	// auto assignemnt (category overrides priority)
	if ($pri_data[auto_assign_tech]) {
		$query .= ", tech = '$pri_data[auto_assign_tech]'";
	} elseif ($cat_data[auto_assign_tech]) {
		$query .= ", tech = '$cat_data[auto_assign_tech]'";
	}

	// add new thread to database and get back id
	$db->query($query);
	$id = $db->last_id();

	ticketlog($id, 'created');

	/////////////////////// ATTACHMENTS ///////////////////////

	if ($attachment) {
		$attach = add_attachment();
		
		$db->query("
			INSERT INTO ticket_attachments SET
			blobid = '$attach[blobid]',
			filename = '" . mysql_escape_string($attach[name]) . "',
			filesize = '" . mysql_escape_string($attach[size]) . "',
			extension = '" . mysql_escape_string($attach[extension]) . "',
			ticketid = '" . mysql_escape_string($id) . "',
			userid = '$user[id]',
			timestamp = '" . mktime() . "'
		");

		$attachment_id = $db->last_id();

		// attachments to send
		$attach['id'] = $attachment_id;	
		// to link to an attachment for those techs that don't want to download it
		$email_attachment[] = $attach;
	}

	// any previous attachments
	if ($_REQUEST[tempticketid]) {

		$db->query("SELECT blobs.blobdata, ticket_attachments.id, filename, extension
					FROM ticket_attachments
					LEFT JOIN blobs ON (blobs.id = ticket_attachments.blobid)
				");

		// get the attachments to email
		while ($result = $db->row_array()) {
			$email_attachments[] = array(
				'data' => $result[blobdata],
				'name' => $result[filename],
				'extension' => $result[extension]
			);
		}

		$db->query("UPDATE ticket_attachments SET
					ticketid = '" . mysql_escape_string($id) . "',
					userid = '$user[id]',
					temporaryid = ''
					WHERE temporaryid = '" . mysql_escape_string($_REQUEST[tempticketid]) . "'
			");
	}

	/////////////////////// ADD REPLY TO DATABASE ///////////////////////
	
	// add the new post to database
	$db->query("
		INSERT into ticket_message SET
		message = '" . mysql_escape_string($_REQUEST[message]) . "',
		ticketid = '" . intval($id) . "',
		userid = '$user[id]',
		date = '" . mktime() . "',
		ipaddress =	'" . mysql_escape_string($ipaddress) . "'
	");

	/////////////////////// CLEAN VARIABLES TO USE IN EMAIL ///////////////////////

	$ticket = $db->query_return("
		SELECT ticket.*
		FROM ticket
		WHERE ticket.id = '" . intval($id) . "'
	");

	// logged in
	if (!$user) {
		global $user;
		$user = array(
			'id' => $user[id],
			'password' => $password,
			'password_cookie' => $password_cookie,
			'password_url' => $password_url,
			'subject' => $subject,
			'email' => $email,
			'username' => $username
		);
	}

	$message = $_REQUEST['message'];
	$ticket['body'] = $message;

	/////////////////////// SEND EMAILS ///////////////////////

	notify_user('new_user', $ticket, $user, $_REQUEST[message], $email_attachment);
	notify_technicians('new', $ticket, $user, $_REQUEST[message], $email_attachment);

	/////////////////////// JUMP DEPENDING ON USER STATUS ///////////////////////

	if ($loggedin_user) {
		jump("view.php?ticketref=$ticketref", 'redirect_new_ticket');
	} elseif ($loggedout_user) {
		jump("view.php?ticketref=$ticketref&newticket=1", 'redirect_new_ticket');
	} elseif ($new_user) {
		jump("view.php?ticketref=$ticketref", 'redirect_new_ticket');
	}

}
?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -