leaderboard_makernight/leaderboardtools.php
2025-03-09 19:20:09 +01:00

114 lines
No EOL
3.8 KiB
PHP

<?php
function getLeaderBoard($con, $event_code,$sub_event_code){
$scores=[];
if($sub_event_code=="global"){
$scores=getScoreGlobal($con,$event_code);
}else{
$scores=getScores($con,$event_code,$sub_event_code);
}
$leaderboard = [];
foreach ($scores as $player_id => $score) {
$leaderboard[] = $score;
}
usort($leaderboard, function ($a, $b) {
return $b["score"] - $a["score"];
});
return $leaderboard;
}
function getBuildedLeaderBoard($con, $event_code,$sub_event_code){
$leaderboard=getLeaderBoard($con,$event_code,$sub_event_code);
return buildLeaderBoard($leaderboard);
}
function buildLeaderBoard($lb){
?>
<table>
<thead>
<tr>
<th>Rank</th>
<th>Player Name</th>
<th>Score</th>
</tr>
</thead>
<tbody>
<?php
$rank = 1;
foreach ($lb as $player) {
?>
<tr>
<td><?php echo $rank; ?></td>
<td><?php echo $player["player_name"]; ?></td>
<td><?php echo $player["score"]; ?></td>
</tr>
<?php
$rank++;
}
?>
</table>
<?php
}
function getScores($con, $event_code,$sub_event_code){
$score_res= mysqli_query($con, "SELECT * FROM `scores` WHERE event_code='$event_code' AND sub_event_code='$sub_event_code'");
$scores = [];
while ($score = mysqli_fetch_assoc($score_res)) {
$score["player_name"]=getPlayerName($con,$score["player_id"]);
$scores[$score["player_id"]] = $score;
}
return $scores;
}
function getPlayerName($con, $player_id){
$player_res = mysqli_query($con, "SELECT * FROM `event_players` WHERE player_id='$player_id'");
$player = mysqli_fetch_assoc($player_res);
return $player["player_name"]??"Unknown (ID: $player_id)";
}
function getScoreGlobal($con, $event_code){
$sub_event_list=getSubEventsList($con,$event_code);
$scores=[];
foreach($sub_event_list as $sub_event){
$scores_event_list=getScores($con,$event_code,$sub_event["sub_event_code"]);
foreach($scores_event_list as $player_id=>$score){
if(!isset($scores[$player_id])){
$scores[$player_id]=["player_id"=>$player_id,"score"=>0,"player_name"=>$score["player_name"],"sub_scores_list"=>[]];
}
$scores[$player_id]["score"]+=$sub_event["multiplier"]*$score["score"];
$scores[$player_id]["sub_scores_list"][$sub_event["sub_event_code"]]=$score["score"];
}
}
return $scores;
}
function getSubEventsList($con,$event_code){
$sub_events_res = mysqli_query($con, "SELECT * FROM `sub_events` WHERE event_code='$event_code'");
$sub_event_lists = [];
while ($sub_event = mysqli_fetch_assoc($sub_events_res)) {
$sub_event_lists[] = $sub_event;
}
return $sub_event_lists;
}
function getEventData($con, $event_code){
$event_datas_res = mysqli_query($con, "SELECT * FROM `events` WHERE event_code='$event_code'");
if (mysqli_num_rows($event_datas_res) == 0) {
return false;
}
$event_datas = mysqli_fetch_assoc($event_datas_res);
if(count($event_datas) == 0){
return false;
}
if($event_datas===false){
return false;
}
return $event_datas;
}
function getSubEventData($con,$event_code,$sub_event_code){
$sub_event_datas_res = mysqli_query($con, "SELECT * FROM `sub_events` WHERE event_code='$event_code' AND sub_event_code='$sub_event_code'");
if (mysqli_num_rows($sub_event_datas_res) == 0) {
return false;
}
$sub_event_datas = mysqli_fetch_assoc($sub_event_datas_res);
if(count($sub_event_datas) == 0){
return false;
}
if($sub_event_datas===false){
return false;
}
return $sub_event_datas;
}
?>