( ! ) Notice: Undefined index: player in /var/www/html/pages/wiki.php(36) : eval()'d code on line 59 | ||||
---|---|---|---|---|
Call Stack | ||||
# | Time | Memory | Function | Location |
1 | 0.0000 | 356632 | {main}( ) | .../index.php:0 |
2 | 0.0047 | 367160 | include( '/var/www/html/pages/wiki.php' ) | .../index.php:47 |
3 | 0.0099 | 430784 | includestring( ) | .../wiki.php:403 |
4 | 0.0102 | 484488 | eval( '?>
getName();
function findMaxConcurrentPlayers($days) {
$timestamps = [];
foreach ($days as $day) {
foreach ($day["sessions"] as $session) {
$timestamps[] = ["timestamp" => $session["log_date"], "type" => "start"];
$timestamps[] = ["timestamp" => $session["last_seen"], "type" => "end"];
}
}
usort($timestamps, function ($a, $b) {
if ($a["timestamp"] == $b["timestamp"]) {
return $a["type"] == "end" ? -1 : 1;
}
return $a["timestamp"] - $b["timestamp"];
});
$currentPlayers = 0;
$maxConcurrentPlayers = 0;
foreach ($timestamps as $timestamp) {
if ($timestamp["type"] == "start") {
$currentPlayers++;
$maxConcurrentPlayers = max($maxConcurrentPlayers, $currentPlayers);
} else {
$currentPlayers--;
}
}
return $maxConcurrentPlayers;
}
class DateIdConverter {
private const REFERENCE_DATE = '2019-10-30';
private const INITIAL_ID = 0;
public static function convertDateToId($date) {
$referenceDate = new DateTime(self::REFERENCE_DATE);
$givenDate = new DateTime($date);
$daysDifference = $referenceDate->diff($givenDate)->days;
return self::INITIAL_ID + $daysDifference;
}
public static function convertIdToDate($id) {
$daysDifference = $id - self::INITIAL_ID;
$referenceDate = new DateTime(self::REFERENCE_DATE);
$newDate = $referenceDate->add(new DateInterval('P' . $daysDifference . 'D'));
return $newDate->format('Y-m-d');
}
public static function convertIdToTimestamp($id) {
$daysDifference = $id - self::INITIAL_ID;
$referenceDate = new DateTime(self::REFERENCE_DATE);
$newDate = $referenceDate->add(new DateInterval('P' . $daysDifference . 'D'));
return $newDate->getTimestamp() * 1000; // Convert to milliseconds
}
public static function getCurrentDateId() {
$currentDate = new DateTime();
$referenceDate = new DateTime(self::REFERENCE_DATE);
$daysDifference = $referenceDate->diff($currentDate)->days;
return self::INITIAL_ID + $daysDifference;
}
}
function formatMilliseconds($milliseconds) {
$seconds = floor($milliseconds / 1000); // Convertir en secondes
$minutes = floor($seconds / 60); // Calculer les minutes
$hours = floor($minutes / 60); // Calculer les heures
$remainingMinutes = $minutes % 60; // Calculer les minutes restantes
$remainingSeconds = $seconds % 60; // Calculer les secondes restantes
$formattedTime = "$hours h $remainingMinutes m $remainingSeconds s";
return $formattedTime;
}
$stats = [];
$playerCount = [];
$filter = [];
$invalid = 1000000000;
$minDay = 0;
$maxDay = $invalid;
if(isset($_GET["interval"]))
{
$intervalStr = $_GET["interval"];
$arr = explode("/", $intervalStr);
$one = DateIdConverter::convertDateToId($arr[0]);
$two = DateIdConverter::convertDateToId($arr[1]);
$minDay = min($one, $two);
$maxDay = max($one, $two);
}
$filter["\$where"] = "function() { return this.day_id >= $minDay && this.day_id <= $maxDay}";
$days = Keldatabase::playerDaysDocument()->find($filter, ["sort" => ["day_id" => -1]]);
function getDay($previous, $row)
{
$infos = [];
$infos["username"] = $row["username"];
$infos["afk_time"] = (isset($previous) ? $previous["afk_time"] : 0) + $row["afk_time"];
$infos["sessions"] = $row["sessions"];
$totalTime = isset($previous) ? $previous["total_time"] : 0;
foreach ($row["sessions"] as $sess)
{
$totalTime += $sess["last_seen"] - $sess["log_date"];
}
$infos["total_time"] = $totalTime;
return $infos;
}
foreach ($days as $day)
{
if($day != null)
{
//$stat = [];
$username = $day["username"];
if($username == $playerName)
{
$dayInfos = getDay(isset($stats[$username]) ? $stats[$username] : null, $day);
$stats[$username] = $dayInfos;
$dayId = $day["day_id"];
if(!isset($playerCount[$dayId]))
{
$playerCount[$dayId]["totalplayers"] = 0;
$playerCount[$dayId]["days"] = [];
}
var_dump($day);
$playerCount[$dayId]["totalplayers"] += $dayInfos["total_time"];
$strictDay = ["sessions" => $dayInfos["sessions"]];
array_push($playerCount[$dayId]["days"], $strictDay);
}
}
}
//usort($stats, "cmp");
function cmpActiveTime($a, $b)
{
return (($b["total_time"] - $b["afk_time"]) - ($a["total_time"] - $a["afk_time"]));
}
//usort($playerCount, "cmp");
usort($stats, "cmpActiveTime");
?>
$value)
{
$tmsp = DateIdConverter::convertIdToTimestamp($key);
if($tmsp < $i)
{
$i = $tmsp;
}
$points[] = [$tmsp, findMaxConcurrentPlayers($value["days"])];
}
echo $tmsp . " )"; $points[] = [$i - (24 * (60 * 60 * 1000)), 0]; $jsonChart = ["max_players" => $points]; ?> Statistiques d'activitéDéfinir l'interval: Définir Filtres par défaut: Depuis toujours Depuis 7 jours Depuis 30 jours Ce mois Cette semaine Aujourd'hui $value) { echo $key . "/ total: " . $value["totalplayers"] . " "; //var_dump($value["days"]); echo findMaxConcurrentPlayers($value["days"]); echo " "; }*/ ?> | .../wiki.php:36 |
( ! ) Fatal error: Uncaught Error: Call to a member function getName() on null in /var/www/html/pages/wiki.php(36) : eval()'d code on line 63 | ||||
---|---|---|---|---|
( ! ) Error: Call to a member function getName() on null in /var/www/html/pages/wiki.php(36) : eval()'d code on line 63 | ||||
Call Stack | ||||
# | Time | Memory | Function | Location |
1 | 0.0000 | 356632 | {main}( ) | .../index.php:0 |
2 | 0.0047 | 367160 | include( '/var/www/html/pages/wiki.php' ) | .../index.php:47 |
3 | 0.0099 | 430784 | includestring( ) | .../wiki.php:403 |
4 | 0.0102 | 484488 | eval( '?>
getName();
function findMaxConcurrentPlayers($days) {
$timestamps = [];
foreach ($days as $day) {
foreach ($day["sessions"] as $session) {
$timestamps[] = ["timestamp" => $session["log_date"], "type" => "start"];
$timestamps[] = ["timestamp" => $session["last_seen"], "type" => "end"];
}
}
usort($timestamps, function ($a, $b) {
if ($a["timestamp"] == $b["timestamp"]) {
return $a["type"] == "end" ? -1 : 1;
}
return $a["timestamp"] - $b["timestamp"];
});
$currentPlayers = 0;
$maxConcurrentPlayers = 0;
foreach ($timestamps as $timestamp) {
if ($timestamp["type"] == "start") {
$currentPlayers++;
$maxConcurrentPlayers = max($maxConcurrentPlayers, $currentPlayers);
} else {
$currentPlayers--;
}
}
return $maxConcurrentPlayers;
}
class DateIdConverter {
private const REFERENCE_DATE = '2019-10-30';
private const INITIAL_ID = 0;
public static function convertDateToId($date) {
$referenceDate = new DateTime(self::REFERENCE_DATE);
$givenDate = new DateTime($date);
$daysDifference = $referenceDate->diff($givenDate)->days;
return self::INITIAL_ID + $daysDifference;
}
public static function convertIdToDate($id) {
$daysDifference = $id - self::INITIAL_ID;
$referenceDate = new DateTime(self::REFERENCE_DATE);
$newDate = $referenceDate->add(new DateInterval('P' . $daysDifference . 'D'));
return $newDate->format('Y-m-d');
}
public static function convertIdToTimestamp($id) {
$daysDifference = $id - self::INITIAL_ID;
$referenceDate = new DateTime(self::REFERENCE_DATE);
$newDate = $referenceDate->add(new DateInterval('P' . $daysDifference . 'D'));
return $newDate->getTimestamp() * 1000; // Convert to milliseconds
}
public static function getCurrentDateId() {
$currentDate = new DateTime();
$referenceDate = new DateTime(self::REFERENCE_DATE);
$daysDifference = $referenceDate->diff($currentDate)->days;
return self::INITIAL_ID + $daysDifference;
}
}
function formatMilliseconds($milliseconds) {
$seconds = floor($milliseconds / 1000); // Convertir en secondes
$minutes = floor($seconds / 60); // Calculer les minutes
$hours = floor($minutes / 60); // Calculer les heures
$remainingMinutes = $minutes % 60; // Calculer les minutes restantes
$remainingSeconds = $seconds % 60; // Calculer les secondes restantes
$formattedTime = "$hours h $remainingMinutes m $remainingSeconds s";
return $formattedTime;
}
$stats = [];
$playerCount = [];
$filter = [];
$invalid = 1000000000;
$minDay = 0;
$maxDay = $invalid;
if(isset($_GET["interval"]))
{
$intervalStr = $_GET["interval"];
$arr = explode("/", $intervalStr);
$one = DateIdConverter::convertDateToId($arr[0]);
$two = DateIdConverter::convertDateToId($arr[1]);
$minDay = min($one, $two);
$maxDay = max($one, $two);
}
$filter["\$where"] = "function() { return this.day_id >= $minDay && this.day_id <= $maxDay}";
$days = Keldatabase::playerDaysDocument()->find($filter, ["sort" => ["day_id" => -1]]);
function getDay($previous, $row)
{
$infos = [];
$infos["username"] = $row["username"];
$infos["afk_time"] = (isset($previous) ? $previous["afk_time"] : 0) + $row["afk_time"];
$infos["sessions"] = $row["sessions"];
$totalTime = isset($previous) ? $previous["total_time"] : 0;
foreach ($row["sessions"] as $sess)
{
$totalTime += $sess["last_seen"] - $sess["log_date"];
}
$infos["total_time"] = $totalTime;
return $infos;
}
foreach ($days as $day)
{
if($day != null)
{
//$stat = [];
$username = $day["username"];
if($username == $playerName)
{
$dayInfos = getDay(isset($stats[$username]) ? $stats[$username] : null, $day);
$stats[$username] = $dayInfos;
$dayId = $day["day_id"];
if(!isset($playerCount[$dayId]))
{
$playerCount[$dayId]["totalplayers"] = 0;
$playerCount[$dayId]["days"] = [];
}
var_dump($day);
$playerCount[$dayId]["totalplayers"] += $dayInfos["total_time"];
$strictDay = ["sessions" => $dayInfos["sessions"]];
array_push($playerCount[$dayId]["days"], $strictDay);
}
}
}
//usort($stats, "cmp");
function cmpActiveTime($a, $b)
{
return (($b["total_time"] - $b["afk_time"]) - ($a["total_time"] - $a["afk_time"]));
}
//usort($playerCount, "cmp");
usort($stats, "cmpActiveTime");
?>
$value)
{
$tmsp = DateIdConverter::convertIdToTimestamp($key);
if($tmsp < $i)
{
$i = $tmsp;
}
$points[] = [$tmsp, findMaxConcurrentPlayers($value["days"])];
}
echo $tmsp . " )"; $points[] = [$i - (24 * (60 * 60 * 1000)), 0]; $jsonChart = ["max_players" => $points]; ?> Statistiques d'activitéDéfinir l'interval: Définir Filtres par défaut: Depuis toujours Depuis 7 jours Depuis 30 jours Ce mois Cette semaine Aujourd'hui $value) { echo $key . "/ total: " . $value["totalplayers"] . " "; //var_dump($value["days"]); echo findMaxConcurrentPlayers($value["days"]); echo " "; }*/ ?> | .../wiki.php:36 |