236 lines
6.3 KiB
PHP
236 lines
6.3 KiB
PHP
<?php
|
|
|
|
include_once "dbconf.php";
|
|
|
|
class ps4
|
|
{
|
|
function gameTimeDetails($gameid)
|
|
{
|
|
$result = DB::query(
|
|
"SELECT * FROM game_time WHERE game_id = '" .
|
|
$gameid .
|
|
"' ORDER BY game_start DESC;"
|
|
);
|
|
if ($result->num_rows > 0) {
|
|
$i = 0;
|
|
echo '<div class="PlaytimeDetails FontSmaller">';
|
|
echo '<div class="row"><div class="head PlaytimeStart">Start</div><div class="head PlaytimeEnd">End</div><div class="head PlaytimeTotal">Time Played</div></div>';
|
|
while ($row = $result->fetch_assoc()) {
|
|
echo '<div class="row">';
|
|
$i++;
|
|
echo '<div class="PlaytimeStart">' .
|
|
$this->secondsToDate($row["game_start"]) .
|
|
'</div>';
|
|
|
|
echo '<div class="PlaytimeEnd">';
|
|
if ($row["game_end"] == "") {
|
|
echo "<strong>now playing</strong>";
|
|
} else {
|
|
echo $this->secondsToDate($row["game_end"]);
|
|
}
|
|
echo '</div>';
|
|
|
|
echo '<div class="PlaytimeTotal">';
|
|
if ($row["game_end"] == "") {
|
|
echo $this->playtime(
|
|
(round(microtime(true) * 1000) - $row["game_start"]) / 1000,
|
|
true
|
|
);
|
|
} else {
|
|
echo $this->playtime(
|
|
($row["game_end"] - $row["game_start"]) / 1000,
|
|
true
|
|
);
|
|
}
|
|
echo '</div>';
|
|
|
|
echo '</div>';
|
|
}
|
|
echo '<div class="row"><div class="head PlaytimeStart"></div><div class="head PlaytimeEnd"></div><div class="head PlaytimeTotal">' .
|
|
$i .
|
|
' sessions</div></div>';
|
|
echo '</div>';
|
|
echo '<div class="padding-bottom-10"></div>';
|
|
}
|
|
}
|
|
|
|
function playtime($seconds, $text = false)
|
|
{
|
|
$playtime = null;
|
|
$label = null;
|
|
|
|
if ($seconds < 60) {
|
|
if ($text == true) {
|
|
$label = "second";
|
|
}
|
|
if ($seconds > 1) {
|
|
$label .= "s";
|
|
}
|
|
$playtime = $seconds;
|
|
} elseif ($seconds / 60 < 60) {
|
|
if ($text == true) {
|
|
$label = "minute";
|
|
}
|
|
if ($seconds / 60 > 1) {
|
|
$label .= "s";
|
|
}
|
|
$playtime = round($seconds / 60, 2);
|
|
} else {
|
|
if ($text == true) {
|
|
$label = "hour";
|
|
}
|
|
if ($seconds / 60 / 60 > 1) {
|
|
$label .= "s";
|
|
}
|
|
$playtime = round($seconds / 60 / 60, 2);
|
|
}
|
|
|
|
$return = $playtime;
|
|
if ($text == true) {
|
|
$return = $return . " " . $label;
|
|
}
|
|
return $return;
|
|
}
|
|
|
|
function secondsToDate($seconds)
|
|
{
|
|
return date("d M Y H:i:s", $seconds / 1000);
|
|
}
|
|
|
|
function thumbnailurl($game_id)
|
|
{
|
|
$result = DB::queryFirstField(
|
|
"SELECT thumbnail FROM game_thumbnail WHERE game_id = %s",
|
|
$game_id
|
|
);
|
|
if ($result) {
|
|
$url = $result;
|
|
} else {
|
|
$url = "images/no-thumbnail.png";
|
|
}
|
|
return $url;
|
|
}
|
|
|
|
function thumbnailupdatedb($gameid, $gamename, $url)
|
|
{
|
|
if ($url == "" or $url == "null") {
|
|
echo "<div class=\"message-error center500\"><div class=\"message-head\">ERROR</div><div class=\"message-details\">No URL specified.</div>";
|
|
} else {
|
|
if ($this->isImage($url)) {
|
|
$imageContents = file_get_contents($url);
|
|
$actualurl = $this->thumbnailurl($gameid);
|
|
if ($actualurl == "images/no-thumbnail.png") {
|
|
$result = DB::query(
|
|
"INSERT INTO game_thumbnail (game_id, thumbnail) VALUES (%s, %?)",
|
|
$gameid,
|
|
$imageContents
|
|
);
|
|
} else {
|
|
$result = DB::query(
|
|
"UPDATE game_thumbnail SET thumbnail = %? WHERE game_id = %s",
|
|
$imageContents,
|
|
$gameid
|
|
);
|
|
}
|
|
|
|
if ($result == 1) {
|
|
echo "<div class=\"message-success center500\"><div class=\"message-head\">SUCCESS</div><div class=\"message-details\">Updated image URL for <strong>" .
|
|
$gamename .
|
|
"</strong> (" .
|
|
$gameid .
|
|
")</div>";
|
|
} else {
|
|
echo "<div class=\"message-error center500\"><div class=\"message-head\">ERROR</div><div class=\"message-details\">Can't update image URL for <strong>" .
|
|
$gamename .
|
|
"</strong> (" .
|
|
$gameid .
|
|
")</div>";
|
|
}
|
|
} else {
|
|
echo "<div class=\"message-error center500\"><div class=\"message-head\">ERROR</div><div class=\"message-details\">Not an image.</div>";
|
|
}
|
|
}
|
|
}
|
|
|
|
function isImage($url)
|
|
{
|
|
$params = array(
|
|
'http' => array(
|
|
'method' => 'HEAD'
|
|
)
|
|
);
|
|
$ctx = stream_context_create($params);
|
|
$fp = @fopen($url, 'rb', false, $ctx);
|
|
if (!$fp) {
|
|
return false;
|
|
} // Problem with url
|
|
|
|
$meta = stream_get_meta_data($fp);
|
|
if ($meta === false) {
|
|
fclose($fp);
|
|
return false; // Problem reading data from url
|
|
}
|
|
|
|
$wrapper_data = $meta["wrapper_data"];
|
|
if (is_array($wrapper_data)) {
|
|
foreach (array_keys($wrapper_data) as $hh) {
|
|
if (substr($wrapper_data[$hh], 0, 19) == "Content-Type: image") {
|
|
// strlen("Content-Type: image") == 19
|
|
fclose($fp);
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
fclose($fp);
|
|
return false;
|
|
}
|
|
|
|
function games_reorder($games, $orderby = "last_played_desc")
|
|
{
|
|
function totaltime_asc($a, $b)
|
|
{
|
|
return $a["game_total_time"] <= $b["game_total_time"] ? -1 : 1;
|
|
}
|
|
function totaltime_desc($a, $b)
|
|
{
|
|
return $a["game_total_time"] >= $b["game_total_time"] ? -1 : 1;
|
|
}
|
|
|
|
function firstplayed_asc($a, $b)
|
|
{
|
|
return $a["game_played_first"] <= $b["game_played_first"] ? -1 : 1;
|
|
}
|
|
function firstplayed_desc($a, $b)
|
|
{
|
|
return $a["game_played_first"] >= $b["game_played_first"] ? -1 : 1;
|
|
}
|
|
|
|
function lastplayed_asc($a, $b)
|
|
{
|
|
if ($a["game_played_last"] == -1) {
|
|
$a["game_played_last"] = round(microtime(true) * 1000);
|
|
}
|
|
if ($b["game_played_last"] == -1) {
|
|
$b["game_played_last"] = round(microtime(true) * 1000);
|
|
}
|
|
return $a["game_played_last"] <= $b["game_played_last"] ? -1 : 1;
|
|
}
|
|
function lastplayed_desc($a, $b)
|
|
{
|
|
if ($a["game_played_last"] == -1) {
|
|
$a["game_played_last"] = round(microtime(true) * 1000);
|
|
}
|
|
if ($b["game_played_last"] == -1) {
|
|
$b["game_played_last"] = round(microtime(true) * 1000);
|
|
}
|
|
return $a["game_played_last"] >= $b["game_played_last"] ? -1 : 1;
|
|
}
|
|
|
|
usort($games, $orderby);
|
|
return $games;
|
|
}
|
|
}
|
|
|
|
?>
|