function checkGlobalLogin($playerID, $pass)
{
    $pass = md5($pass);
    $db = sqlconn();
    $query = 'SELECT passwordHash, salt FROM users_data WHERE playerID = :ID LIMIT 1';
    $prepared = $db->prepare($query);
    $prepared->bindParam(':ID', $playerID, PDO::PARAM_INT);
    $prepared->execute();
    $result = $prepared->fetchAll();
    $count = count($result);
    if ($count != 0) {
        $row = $result[0];
        $passHash = $row['passwordHash'];
        $salt = $row['salt'];
        if ($passHash == '') {
            $salt = substr(md5(rand()), 0, 5);
            $prepared = $db->prepare('UPDATE users_data SET passwordHash = :passhash, salt = :salt WHERE playerID = :ID');
            $prepared->bindParam(':ID', $playerID, PDO::PARAM_INT);
            $prepared->bindParam(':passhash', hashPassword($pass, $salt), PDO::PARAM_STR);
            $prepared->bindParam(':salt', $salt, PDO::PARAM_STR);
            //random string
            $prepared->execute();
            return $prepared->rowCount() == 1;
        }
        if (hashPassword($pass, $salt) == $passHash) {
            return true;
        }
    } else {
        /*not in db*/
    }
    return false;
}
function addToDatabase($score, $playerID, $completed)
{
    global $replayID;
    $db = sqlconn();
    $query = 'INSERT INTO scores (ID, beatmapHash, playerID, score, combo, fc, mods, count300, count100, count50, countGeki, countKatu, countMiss, time, mode, completed)
				VALUES (NULL, :beatmap, :user, :score, :combo, :fc, :mods, :c300, :c100, :c50, :geki, :katu, :miss, :time, :mode, :completed)';
    $prepared = $db->prepare($query);
    $prepared->bindParam(':beatmap', $score[0], PDO::PARAM_STR);
    $prepared->bindParam(':user', $playerID, PDO::PARAM_INT);
    $prepared->bindParam(':score', $score[9], PDO::PARAM_INT);
    $prepared->bindParam(':combo', $score[10], PDO::PARAM_INT);
    $prepared->bindParam(':fc', $score[11], PDO::PARAM_INT);
    $prepared->bindParam(':mods', $score[13], PDO::PARAM_INT);
    $prepared->bindParam(':c300', $score[3], PDO::PARAM_INT);
    $prepared->bindParam(':c100', $score[4], PDO::PARAM_INT);
    $prepared->bindParam(':c50', $score[5], PDO::PARAM_INT);
    $prepared->bindParam(':geki', $score[6], PDO::PARAM_INT);
    $prepared->bindParam(':katu', $score[7], PDO::PARAM_INT);
    $prepared->bindParam(':miss', $score[8], PDO::PARAM_INT);
    $prepared->bindParam(':time', $score[16], PDO::PARAM_STR);
    $prepared->bindParam(':mode', $score[15], PDO::PARAM_INT);
    $prepared->bindParam(':completed', $completed, PDO::PARAM_INT);
    $result = $prepared->execute();
    $replayID = $db->lastInsertId();
    if (!$result) {
        displayError('beatmap');
    }
}
function getScores($beatmapHash, $mode, $playerID)
{
    $db = sqlconn();
    $personalScore = $playerID == NULL;
    if ($personalScore) {
        //global scores
        $query = 'SELECT * FROM scores WHERE beatmapHash = :beatmap AND mode = :mode ORDER BY score DESC';
        $prepared = $db->prepare($query);
        $prepared->bindParam(':beatmap', $beatmapHash, PDO::PARAM_STR);
        $prepared->bindParam(':mode', $mode, PDO::PARAM_INT);
    } else {
        //personal scores
        $query = 'SELECT * FROM scores WHERE beatmapHash = :beatmap AND playerID = :user AND mode = :mode ORDER BY score DESC LIMIT 1';
        $prepared = $db->prepare($query);
        $prepared->bindParam(':beatmap', $beatmapHash, PDO::PARAM_STR);
        $prepared->bindParam(':mode', $mode, PDO::PARAM_INT);
        $prepared->bindParam(':user', $playerID, PDO::PARAM_INT);
    }
    $prepared->execute();
    $i = 0;
    while ($row = $prepared->fetch()) {
        $i++;
        $playerID = $row['playerID'];
        $score = $row['score'];
        $combo = $row['combo'];
        $fc = $row['fc'];
        $mods = $row['mods'];
        $ID = $row['ID'];
        $count50 = $row['count50'];
        $count100 = $row['count100'];
        $count300 = $row['count300'];
        $countKatu = $row['countKatu'];
        $countGeki = $row['countGeki'];
        $countMiss = $row['countMiss'];
        $time = $row['time'];
        $completed = $row['completed'];
        $showScore = !isUserBanned($playerID);
        //customisation
        $avatarID = getAvatarID($playerID);
        $newUser = getUserName($playerID);
        //display play ID
        if (false) {
            $newUser = "******";
        }
        //display tries
        if (true) {
            $tries = getTries($playerID, $beatmapHash, $mode);
            $newUser = "******" . ($tries == 1 ? 'try' : 'tries') . ')';
        }
        if ($completed == 1) {
            //display quitted
            if (true) {
                $newUser = '******' . $newUser;
            } else {
                if ($personalScore) {
                    echo "\r\n";
                }
                continue;
            }
        }
        if ($completed == 0) {
            //display failed
            if (true) {
                $newUser = '******' . $newUser;
            } else {
                if ($personalScore) {
                    echo "\r\n";
                }
                continue;
            }
        }
        if ($showScore) {
            echo scoreString($ID, $newUser, $score, $combo, $count50, $count100, $count300, $countMiss, $countKatu, $countGeki, $fc, $mods, $avatarID, $i, $time);
        }
    }
    if ($i == 0) {
        //no scores recieved
        echo "\r\n";
    }
}