<?php
require_once 'engine/init.php';
protect_page();
include 'layout/overall/header.php';

$view = (isset($_GET['view']) && (int)$_GET['view'] > 0) ? (int)$_GET['view'] : false;
if ($view !== false) {
	if (!empty($_POST['reply_text'])) {

		// Save ticket reply on database
		$query = array(
			'tid'   =>	$view,
			'username'=>	getValue($_POST['username']),
			'message' =>	getValue($_POST['reply_text']),
			'created' =>	time(),
		);
		$fields = '`'. implode('`, `', array_keys($query)) .'`';
		$data = '\''. implode('\', \'', $query) .'\'';
		mysql_insert("INSERT INTO `znote_tickets_replies` ($fields) VALUES ($data)");
		mysql_update("UPDATE `znote_tickets` SET `status`='Player-Reply' WHERE `id`='$view' LIMIT 1;");
	}
	$ticketData = mysql_select_single("SELECT * FROM znote_tickets WHERE id='$view' LIMIT 1;");

	if($ticketData['owner'] != $session_user_id) {
		echo 'You can not view this ticket!';
		include 'layout/overall/footer.php';
		die;
	}
	?>
	<h1>View Ticket #
	<?php 
		echo $ticketData['id'];
		if ($ticketData['status'] === 'CLOSED') {
			echo '<span style="color:red">[CLOSED]</SPAN>';
		}
	?></h1>
	<table class="znoteTable ThreadTable table table-striped">
		<tr class="yellow">
			<th>
				<?php
					echo getClock($ticketData['creation'], true); 
				?>
				 - Created by: 
				 <?php 
				 	echo $ticketData['username'];
				 ?>
			</th>
		</tr>
		<tr>
			<td>
				<p><?php echo nl2br($ticketData['message']); ?></p>
			</td>
		</tr>
	</table>
	<?php
	$replies = mysql_select_multi("SELECT * FROM znote_tickets_replies WHERE tid='$view' ORDER BY `created`;");
	if ($replies !== false) {
		foreach($replies as $reply) {
			?>
			<table class="znoteTable ThreadTable table table-striped">
				<tr class="yellow">
					<th>
						<?php 
							echo getClock($reply['created'], true); 
						?>
						 - Posted by: 
						 <?php 
						 	echo $reply['username'];
						 ?>
					</th>
				</tr>
				<tr>
					<td>
						<p><?php echo nl2br($reply['message']); ?></p>
					</td>
				</tr>
			</table>
			<hr class="bighr">
		<?php
		}
	}
	?>

	<?php if ($ticketData['status'] !== 'CLOSED') { ?>
		<form action="" method="post">
			<input type="hidden" name="username" value="<?php echo $ticketData['username']; ?>"><br>
			<textarea class="forumReply" name="reply_text" style="width: 610px; height: 150px"></textarea><br>
			<input name="" type="submit" value="Post Reply" class="btn btn-primary">
		</form>
	<?php } ?>
	<?php
} else {

	$account = mysql_select_single("SELECT name,email FROM accounts WHERE id = $session_user_id");
	if (!empty($_POST)) {
		$required_fields = array('username', 'email', 'subject', 'message');
		foreach($_POST as $key=>$value) {
			if (empty($value) && in_array($key, $required_fields) === true) {
				$errors[] = 'You need to fill in all fields.';
				break 1;
			}
		}
		
		// check errors (= user exist, pass long enough
		if (empty($errors) === true) {
			/* Token used for cross site scripting security */
			if (!Token::isValid($_POST['token'])) {
				$errors[] = 'Token is invalid.';
			}
			if ($config['use_captcha']) {
				$captcha = (isset($_POST['g-recaptcha-response'])) ? $_POST['g-recaptcha-response'] : false;
				if(!$captcha) {
					$errors[] = 'Please check the the captcha form.';
				} else {
					$secretKey = $config['captcha_secret_key'];
					$ip = $_SERVER['REMOTE_ADDR'];
					// curl start
					$curl_connection = curl_init("https://www.google.com/recaptcha/api/siteverify");
					$post_string = "secret=".$secretKey."&response=".$captcha."&remoteip=".$ip;
					curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 5);
					curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
					curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
					curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 0);
					curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
					$response = curl_exec($curl_connection);
					curl_close($curl_connection);
					// Curl end
					$responseKeys = json_decode($response,true);
					if(intval($responseKeys["success"]) !== 1) {
						$errors[] = 'Captcha failed.';
					}
				}
			}
			// Reversed this if, so: first check if you need to validate, then validate. 
			if ($config['validate_IP'] === true && validate_ip(getIP()) === false) {
				$errors[] = 'Failed to recognize your IP address. (Not a valid IPv4 address).';
			}
		}
	}
	?>
	<h1>Latest Tickets</h1>
	<?php
	$tickets = mysql_select_multi("SELECT id,subject,creation,status FROM znote_tickets WHERE owner=$session_user_id ORDER BY creation DESC");
	if ($tickets !== false) {
		?>
		<table>
			<tr class="yellow">
				<td>ID:</td>
				<td>Subject:</td>
				<td>Creation:</td>
				<td>Status:</td>
			</tr>
				<?php
				foreach ($tickets as $ticket) {
					echo '<tr class="special">';
						echo '<td>'. $ticket['id'] .'</td>';
						echo '<td><a href="helpdesk.php?view='. $ticket['id'] .'">'. $ticket['subject'] .'</a></td>';
						echo '<td>'. getClock($ticket['creation'], true) .'</td>';
						echo '<td>'. $ticket['status'] .'</td>';
					echo '</tr>';
				}
				?>
		</table>
		<?php
	}
	?>

	<h1>Helpdesk</h1>
	<?php
	if (isset($_GET['success']) && empty($_GET['success'])) {
		echo 'Congratulations! Your ticket has been created. We will reply up to 24 hours.';
	} else {

		if (empty($_POST) === false && empty($errors) === true) {
			if ($config['log_ip']) {
				znote_visitor_insert_detailed_data(1);
			}

			//Save ticket on database
			$query = array(
				'owner'   =>	$session_user_id,
				'username'=>	getValue($_POST['username']),
				'subject' =>	getValue($_POST['subject']),
				'message' =>	getValue($_POST['message']),
				'ip'	  =>	getIPLong(),
				'creation' =>	time(),
				'status'  =>	'Open'
			);
		
			$fields = '`'. implode('`, `', array_keys($query)) .'`';
			$data = '\''. implode('\', \'', $query) .'\'';
			mysql_insert("INSERT INTO `znote_tickets` ($fields) VALUES ($data)");

			header('Location: helpdesk.php?success');
			exit();
		
		} else if (empty($errors) === false) {
			echo '<font color="red"><b>';
			echo output_errors($errors);
			echo '</b></font>';
		}
		?>
		<form action="" method="post">
			<ul>
				<li>
					Account Name:<br>
					<input type="text" name="username" size="40" value="<?php echo $account['name']; ?>" disabled>
				</li>
				<li>
					Email:<br>
					<input type="text" name="email" size="40" value="<?php echo $account['email']; ?>" disabled>
				</li>
				<li>
					Subject:<br>
					<input type="text" name="subject" size="40">
				</li>
				<li>
					Message:<br>
					<textarea name="message" rows="7" cols="30"></textarea>
				</li>
				<?php
				if ($config['use_captcha']) {
					?>
					<li>
						 <div class="g-recaptcha" data-sitekey="<?php echo $config['captcha_site_key']; ?>"></div>
					</li>
					<?php
				}
				?>
				<?php
					/* Form file */
					Token::create();
				?>
				<li>
					<input type="hidden" name="username" value="<?php echo $account['name']; ?>">
					<input type="submit" value="Submit ticket">
				</li>
			</ul>
		</form>
		<?php 
	}
}
include 'layout/overall/footer.php';
?>