<?php
session_start();
date_default_timezone_set('Europe/Brussels');
include 'connect.php';

//Creating variables
$letters     = array('A', 'Z', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'Q', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'W', 'X', 'C', 'V', 'B', 'N');
$specialchar = array('-', ' ');
//First startup

if (!isset($_SESSION["guessme"])) {
    $_SESSION["score"] = 0;
//get words from SQL
    $sql = "
            SELECT words.id,words.name,categorys.category FROM words,categorys

            WHERE words.cat_id = categorys.id";
    $result = $conn->query($sql);
    while ($row = $result->fetch_assoc()) {
        $_SESSION["words"][$row['id'] - 1] = array('id' => $row['id'], 'word' => $row['name'], 'category' => $row['category']);
    }
//mysql_close($conn);
    startGame();
}
//POST
if ($_SERVER["REQUEST_METHOD"] == "POST") {
//When letter is clicked
    if (!empty($_POST["letter"])) {
//Save chosen letter
        array_push($_SESSION["chosenletters"], $_POST["letter"]);
//Check letter
        foreach (str_split($_SESSION["guessme"]) as $i) {
            if (in_array($i, $_SESSION["chosenletters"])) {
                $correct++;
                if (strlen(str_replace($specialchar, '', $_SESSION["guessme"])) == $correct) {
                    $_SESSION["score"]++;
                    $geradenwoord = $_SESSION["guessme"];
                    unset($_SESSION["correct"]);
                    unset($_SESSION["lifes"]);
                    unset($_SESSION["chosenletters"]);
                    updateScoreSQL();
                    startGame();
                    if ($_SESSION["score"] == 1) {
                        redirect($geradenwoord." gevonden, je hebt nu " . $_SESSION["score"] . " woord gevonden!");
                    } else {
                        redirect($geradenwoord." gevonden, je hebt nu " . $_SESSION["score"] . " woorden gevonden!");
                    }
                }
            }
        }
        if (!in_array($_POST["letter"], str_split($_SESSION["guessme"])) && $_POST["letter"] != $_SESSION["prevletter"]) {
            $_SESSION["prevletter"] = $_POST["letter"];
            $_SESSION["lifes"]--;
        }
        if ($_SESSION["lifes"] == 0) {
            deleteUserSQL();
            updateScoreSQL();

            $geradenwoord = $_SESSION["guessme"];
            unsetExcept("index");
            redirect("Spel verloren, het geraden woord was " . $geradenwoord . ".");

        }
    }
//Reset game
    if (!empty($_POST["reset"])) {
        deleteUserSQL();
        updateScoreSQL();
        session_destroy();
        redirect();
    }
}
//Functions
function startGame()
{
    if ($_SESSION["words"] == array()) {
        deleteUserSQL();
        updateScoreSQL();
        switch ($_SESSION["score"]) {
            case 0:
                redirect("Game over, je hebt geen woorden kunnen vinden!");
                break;
            case 1:
                redirect("Game over, je hebt in totaal " . $_SESSION["score"] . " woord kunnen vinden!");
                break;
            default:
                redirect("Game over, je hebt in totaal " . $_SESSION["score"] . " woorden kunnen vinden!");
        }
        die();
    }
    $_SESSION["lifes"]         = 6;
    $_SESSION["chosenletters"] = array();
    $randwordnr                = rand(0, count($_SESSION["words"]) - 1);
    $_SESSION["guessme"]       = strtoupper($_SESSION["words"][$randwordnr]["word"]);
    $_SESSION["category"]      = $_SESSION["words"][$randwordnr]["category"];
    array_splice($_SESSION["words"], $randwordnr, 1);
}

function deleteUserSQL()
{
    $sql = "
                    DELETE FROM `active_users` WHERE username='" . $_SESSION['name'] . "'
                    ";
    $result = $GLOBALS['conn']->query($sql);
}

function updateScoreSQL()
{

    if (in_array($_SESSION['name'], array_column($_SESSION['scoreboard'], 'username'))) {
        $sql = "
                            UPDATE scoreboard
                            SET username='" . $_SESSION['name'] . "',score=" . $_SESSION['score'] . "
                            WHERE username = '" . $_SESSION['name'] . "' AND score < " . $_SESSION['score'] . "
                            ";
    } elseif ($_SESSION["score"] > 0) {
        $sql = "
                            INSERT INTO scoreboard (username,score)
                            VALUES ('" . $_SESSION['name'] . "','" . $_SESSION['score'] . "')
                            ";
    }
    $result = $GLOBALS['conn']->query($sql);
}
function redirect($indextmp)
{
    $_SESSION["index"] = $indextmp;
    header("Location: index.php");
    exit;
}
function unsetExcept($input)
{
    foreach ($_SESSION as $key => $value) {
        if ($key != $input) {
            unset($_SESSION[$key]);
        }
    }
}
//Print debugging
?>
<!DOCTYPE HTML>
<html>
    <head>
        <title>Hangman</title>
        <link rel='stylesheet' type='text/css' href='style.php' />
    </head>
    <body>
    <div class="wrapper">
        <h1>Hangman</h1>
        <img src="hangman_<?echo 6 - $_SESSION["lifes"]; ?>.gif" width="100" height="100" alt="">
        <p>Welkom <?echo $_SESSION["name"]; ?>!
        Je hebt <?
echo $_SESSION["lifes"];
if ($_SESSION["lifes"] == 1) {
    echo " leven.";
} else {
    echo " levens.";
}
?>
</p>

        <p>De categorie is <?echo $_SESSION["category"]; ?>. Geraden woorden: <?echo $_SESSION["score"]; ?></p>
        <div class="word">
            <?
//Display guessing game letters

foreach (str_split($_SESSION["guessme"]) as $i) {
    if (in_array($i, $_SESSION["chosenletters"])) {
        echo "<div class='letters underscore'>" . $i . "</div>";
    } elseif ($i == " ") {
        echo "<div class='letters'></div>";
    } elseif ($i == "-") {
        echo "<div class='letters'>-</div>";
    } else {
        echo "<div class='letters underscore'></div>";
    }
}
?>

        </div>
        <div class="keyboard">
            <form action="<?echo $_SERVER["PHP_SELF"]; ?>" method="post">

            <?
//Display alphabet
foreach ($letters as $letter) {
    if (in_array($letter, $_SESSION["chosenletters"])) {
        echo "<input type='submit' name='letter' value='&nbsp;' disabled>";
    } else {
        echo "<input type='submit' name='letter' value='" . $letter . "'>";
    }
}
?>
<input type='submit' name='reset' value='reset'>

             </form>
         </div>
     </div>
    </body>
</html>