1
0
www.mikescher.com/www/internals/modules/highscores.php

108 lines
3.2 KiB
PHP
Raw Normal View History

2020-01-17 00:55:41 +01:00
<?php
class Highscores
{
/** @var Website */
private $site;
public function __construct(Website $site)
{
$this->site = $site;
}
public function generateChecksum($rand, $player, $playerid, $points, $gamesalt)
{
if ($playerid >= 0)
return md5($rand . $player . $playerid . $points . $gamesalt);
else
return md5($rand . $player . $points . $gamesalt);
}
public function insert($gameid, $points, $name, $playerid, $check, $time, $ip)
{
return $this->site->modules->Database()->sql_exec_prep('INSERT INTO highscoreentries (GAME_ID, POINTS, PLAYER, PLAYERID, CHECKSUM, TIMESTAMP, IP) VALUES (:gid, :p, :pn, :pid, :cs, :ts, :ip)',
[
[':gid', $gameid, PDO::PARAM_INT],
[':p', $points, PDO::PARAM_INT],
[':pn', $name, PDO::PARAM_STR],
[':pid', $playerid, PDO::PARAM_INT],
[':cs', $check, PDO::PARAM_STR],
[':ts', $time, PDO::PARAM_STR],
[':ip', $ip, PDO::PARAM_STR],
]);
}
public function update($gameid, $points, $name, $playerid, $check, $time, $ip)
{
return $this->site->modules->Database()->sql_exec_prep('UPDATE highscoreentries SET POINTS = :p, PLAYER = :pn, CHECKSUM = :cs, IP = :ip, TIMESTAMP = :ts WHERE GAME_ID = :gid AND PLAYERID = :pid',
[
[':gid', $gameid, PDO::PARAM_INT],
[':p', $points, PDO::PARAM_INT],
[':pn', $name, PDO::PARAM_STR],
[':pid', $playerid, PDO::PARAM_INT],
[':cs', $check, PDO::PARAM_STR],
[':ts', $time, PDO::PARAM_STR],
[':ip', $ip, PDO::PARAM_STR],
]);
}
public function getGameByID($gameid)
{
return $this->site->modules->Database()->sql_query_single_prep('SELECT * FROM highscoregames WHERE ID = :id',
[
[ ':id', $gameid, PDO::PARAM_INT ],
]);
}
public function getOrderedEntriesFromGame($gameid, $limit = null)
{
$sql = 'SELECT * FROM highscoreentries WHERE GAME_ID = :id ORDER BY POINTS DESC';
if ($limit !== null) $sql .= " LIMIT $limit";
return $this->site->modules->Database()->sql_query_assoc_prep($sql,
[
[ ':id', $gameid, PDO::PARAM_INT ]
]);
}
public function getNewestEntriesFromGame($gameid, $limit = null)
{
$sql = 'SELECT * FROM highscoreentries WHERE GAME_ID = :id ORDER BY TIMESTAMP DESC';
if ($limit !== null) $sql .= " LIMIT $limit";
return $this->site->modules->Database()->sql_query_assoc_prep($sql,
[
[ ':id', $gameid, PDO::PARAM_INT ]
]);
}
public function getEntryCountFromGame($gameid)
{
return $this->site->modules->Database()->sql_query_num_prep('SELECT COUNT(*) FROM highscoreentries WHERE GAME_ID = :id',
[
[ ':id', $gameid, PDO::PARAM_INT ]
]);
}
public function getAllGames()
{
return $this->site->modules->Database()->sql_query_assoc('SELECT * FROM highscoregames');
}
public function getNextPlayerID($gameid)
{
return $this->site->modules->Database()->sql_query_num_prep('SELECT MAX(PLAYERID)+1 AS NID FROM highscoreentries WHERE GAME_ID = :gid',
[
[ ':id', $gameid, PDO::PARAM_INT ]
]);
}
public function getSpecificScore($gameid, $playerid)
{
return $this->site->modules->Database()->sql_query_single_prep('SELECT * FROM highscoreentries WHERE GAME_ID = :gid AND PLAYERID = :pid',
[
[ ':gid', $gameid, PDO::PARAM_INT ],
[ ':pid', $playerid, PDO::PARAM_INT ],
]);
}
}