Files
ps4-gametime/class.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;
}
}
?>