<?php
$dbhost = 'mysql.csail.mit.edu';
$dbuser = 'rps';
$dbpass = 'avalanche';

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die                      ('Error connecting to mysql');

$dbname = 'rpsdb';
mysql_select_db($dbname);

// CREATE TABLE feedback (
//          id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
//          feedback TEXT
// );
// 
// CREATE TABLE moves (
//          id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
//          player VARCHAR(255),
//          move VARCHAR(255)
// );
// 
// CREATE TABLE games (
//     id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
//     player1 VARCHAR(255),
//     move1 VARCHAR(255),
//     player2 VARCHAR(255),
//     move2 VARCHAR(255)
// );
// 
// CREATE TABLE players (
//     player VARCHAR(255),
//     wins INT DEFAULT 0,
// 	losses INT DEFAULT 0
// );

// GET THE TOP LEADERS
$leaderSql = "SELECT player, wins, losses, (wins - losses) as score FROM players ORDER BY score DESC LIMIT 25;";
$leaderResult = mysql_query($leaderSql);
if (!$leaderResult) {
    die('Invalid query: ' . mysql_error());
}

// GET THE LAST GAMES
$gamesSql = "SELECT * FROM games ORDER BY id DESC LIMIT 10;";
$gamesResult = mysql_query($gamesSql);
if (!$gamesResult) {
    die('Invalid query: ' . mysql_error());
}

function incUser($user, $field) {
	$playerSql = "SELECT * FROM players WHERE player = '$user';";
	$playerRes = mysql_query($playerSql);
	$sql = "";
	if ($row = mysql_fetch_assoc($playerRes)) {
		$sql = "UPDATE players SET $field = ($field + 1) WHERE player = \"$user\";";
	}
	else {
		$sql = "INSERT INTO players(player, $field) VALUES('$user', 1)";
	}
	$incResult = mysql_query($sql);
}

function sterilize ($input) {
    $input = htmlentities($input, ENT_QUOTES);
    if(get_magic_quotes_gpc ()) {
        $input = stripslashes ($input);
    }
    $input = mysql_real_escape_string ($input);
    $input = strip_tags($input);
    $input = str_replace("
", "\n", $input);
    return $input;
}

function findOpponent() {
	$oppSql = "SELECT * FROM moves ORDER BY id DESC LIMIT 1;";
	$oppResult = mysql_query($oppSql);
	if ($row = mysql_fetch_assoc($oppResult)) {
		return $row;
	}
	else {
		return array("player" => "The Computer", "move" => "rock");
	}
}

if ($_POST['feedback']) {
	$sql = "INSERT INTO feedback(feedback) VALUES ('" . sterilize($_POST["feedback"]) . "');";
	$res = mysql_query($sql);
	echo "<h1>Thank you!</h1>";
}
else if ($_GET['player'] && $_GET['move']) {
	// Register move and return the data
	$opp = findOpponent();
	
	$mine = $_GET['move'];
	$winner = "";
	$loser = "";
	if (
		(($mine == "rock") & ($opp["move"] == "scissors")) ||
		(($mine == "paper") & ($opp["move"] == "rock")) ||
		(($mine == "scissors") & ($opp["move"] == "paper"))) {
		$winner = $_GET['player'];
		$loser = $opp['player'];
	}
	else {
		$winner = $opp["player"];
		$loser = $_GET["player"];
	}

	# Add the moves
	$moveSql = "INSERT INTO moves(player, move) VALUES ('" . $_GET['player'] . "', '" . $_GET['move'] . "');";
	$moveResult = mysql_query($moveSql);
	
	# Update the user stats
	incUser($winner, 'wins');
	incUser($loser, 'losses');
	
	# Update the game
	$gameSql = "INSERT INTO games(player1, move1, player2, move2) VALUES ('" . $_GET['player'] . "', '" . $_GET['move'] . "', '" . $opp["player"] . "', '" . $opp["move"] . "');";
	$gameResult = mysql_query($gameSql);
	echo '<?xml version="1.0" encoding="UTF-8"?>';
	echo '<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">';
?>
<plist version="1.0">
<dict>
	<key>opponent</key>
	<string><? echo $opp["player"] ?></string>
	<key>opponentMove</key>
	<string><? echo $opp["move"] ?></string>
</dict>
</plist>
<?php
}
else {
	// Display the web page
?>	

<html>
<head>
    <link href='style/rps.css' media='screen' rel='Stylesheet' type='text/css' />
</head>
<body>
	<div id="header_wrapper">

	    <div id="header">
	      <div class="left">
			<h1>Rock Paper Scissors</h1>
	      </div>
	      <div class="right">
	      </div>
	      <div class="clear"></div>
	    </div>

	  </div>

	  <div id="wrapper">

	    <div id="content_wrapper">

	      <div id="content">
			<br />
	
	<h2>Please leave Course Feedback</h2>
	<p>Let me know your thoughts both on the course and my teaching, and how to improve any bits you didn't like.</p>
	<form method=POST>
	<textarea cols=40 rows=10 name="feedback"></textarea>
	<input type="submit" />
	</form>
	<br />
		 <br />
		<br />
		<br />
		<br />
		
	<h2>Play a New Game from the Web</h2>
	<form method=GET>
		<table>
			<tr>
				<td>Name: </td>
				<td><input name="player" /></td>
			</tr>
			<tr>
				<td>Throw:</td>
				<td><select name="move">
					<option selected>rock</option>
					<option>paper</option>
					<option>scissors</option>
					</select>
				</td>
			</tr>
			<tr>
				<td colspan="2"><input type="submit" /></td>
			</tr>
		</table>
	</form>
	<br />

	<br />
	<br />
	<br />
	<br />
	<br />
	<h2>Leader Board</h2>
	<table>
		<tr><th>Player</th><th>Score</th><th>Wins</th><th>Losses</th></tr>
<?php
		while ($row = mysql_fetch_assoc($leaderResult)) {
		    echo "<tr><td>" . $row['player'] . "</td>";
		    echo "<td>" . $row['score'] . "</td>";
		    echo "<td>" . $row['wins'] . "</td>";
		    echo "<td>" . $row['losses'] . "</td></tr>";
		}
?>
</table>
<br />
<br />
<br />
<br />
<br />

	<h2>Most Recent Games</h2>
	<table>
		<tr><th>Player 1</th><th>Player 2</th></tr>
<?php
		while ($row = mysql_fetch_assoc($gamesResult)) {
		    echo "<tr><td><b>" . $row['player1'] . "</b><br />" . $row['move1'] . "</td>";
		    echo "<td><b>" . $row['player2'] . "</b><br />" . $row['move2'] . "</td></tr>";
		}
?>
</table>
    </div>

    <div id="sidebar">
    </div>

    <div class="clear"></div>

  </div>

</div>
</body>
</html>
<?php
}
?>