2025-02-10 17:16:17 +01:00
< ? php
session_start ();
require " config.php " ;
require " leaderboardtools.php " ;
if ( ! isset ( $_GET [ " event_code " ])) {
die ( " No event code = no leaderboard " );
}
$event_code = $_GET [ " event_code " ];
$event_code = mysqli_real_escape_string ( $con , $event_code );
$event_datas = getEventData ( $con , $event_code );
if ( $event_datas === false ) {
die ( " Event not found " );
}
if ( isset ( $_GET [ " admin " ])) {
if ( isset ( $_POST [ " pass " ])) {
$sup = " &error " ;
if ( md5 ( $_POST [ " pass " ]) == $event_datas [ " admin_pass " ]) {
$_SESSION [ " admin_login " ] = true ;
$sup = " &success " ;
}
die ( header ( " Location: /?event_code= $event_code &admin $sup " ));
}
if ( ! isset ( $_SESSION [ " admin_login " ])) {
?>
< form action = " " method = " post " >
< ? = isset ( $_GET [ " error " ]) ? " <p>Mot de passe incorrect</p> " : " " ?>
< label for = pass > Mot de passe admin :< input type = password name = pass id = pass ></ label >
< input type = submit value = Valider >
</ form >
< ? php
} else {
$players_res = mysqli_query ( $con , " SELECT * FROM `event_players` WHERE event_code=' $event_code ' " );
$players = [];
while ( $player = mysqli_fetch_assoc ( $players_res )) {
$players [] = $player ;
}
$sub_events_res = mysqli_query ( $con , " SELECT * FROM `sub_events` WHERE event_code=' $event_code ' " );
$sub_events = [];
while ( $sub_event = mysqli_fetch_assoc ( $sub_events_res )) {
$sub_events [] = $sub_event ;
}
if ( $_GET [ " admin " ] === " players " ) {
if ( isset ( $_GET [ " add " ])) {
if ( isset ( $_POST [ " player_name " ])) {
$player_name = mysqli_real_escape_string ( $con , $_POST [ " player_name " ]);
$player_id = md5 ( uniqid ( $player_name ));
mysqli_query ( $con , " INSERT INTO `event_players` (event_code, player_id, player_name) VALUES (' $event_code ', ' $player_id ', ' $player_name ') " );
}
?>
< form action = " " method = " post " >
< label for = player_name > Nom du joueur :< input type = text name = player_name id = player_name ></ label >
< input type = submit value = Valider >
</ form >
< ? php
} else if ( isset ( $_GET [ " remove " ])) {
if ( isset ( $_POST [ " player_id " ])) {
$player_id = $_POST [ " player_id " ];
mysqli_query ( $con , " DELETE FROM `event_players` WHERE event_code=' $event_code ' AND player_id=' $player_id ' " );
}
foreach ( $players as $player ) {
?>
< form action = " " method = " post " >
< input type = hidden name = player_id value = " <?= $player["player_id"] ?> " >
< input type = submit value = " Supprimer <?= htmlspecialchars( $player["player_name"] ) ?> " >
</ form >
< ? php
}
}
?>
< h1 > Admin de l ' event < ? = $event_datas [ " event_name " ] ?> </h1>
< h2 >< a href = " /?event_code=<?= $event_code ?>&admin=players&add " > Ajouter un joueur </ a ></ h2 >
< h2 >< a href = " /?event_code=<?= $event_code ?>&admin=players&remove " > Supprimer un joueur </ a ></ h2 >
< p > Liste des joueurs :</ p >
< ul >
< ? php
foreach ( $players as $player ) {
?>
< li >< ? = htmlspecialchars ( $player [ " player_name " ]) ?> </li>
< ? php
}
?>
</ ul >
< ? php
} else if ( $_GET [ " admin " ] == " subevents " ){
if ( isset ( $_GET [ " add " ])){
if ( isset ( $_POST [ " sub_event_name " ])){
$sub_event_name = mysqli_real_escape_string ( $con , $_POST [ " sub_event_name " ]);
$sub_event_code = md5 ( uniqid ( $sub_event_name ));
$sub_event_type = 0 ;
if ( isset ( $_POST [ " sub_event_type " ])){
$sub_event_type = intval ( $_POST [ " sub_event_type " ]);
}
mysqli_query ( $con , " INSERT INTO `sub_events` (event_code, sub_event_code, sub_event_name, sub_event_type) VALUES (' $event_code ', ' $sub_event_code ', ' $sub_event_name ', $sub_event_type ) " );
}
?>
< form action = " " method = " post " >
< label for = sub_event_name > Nom du sous event :< input type = text name = sub_event_name id = sub_event_name ></ label >
< label for = sub_event_type > Type de sous event :< select name = sub_event_type id = sub_event_type >
< option value = 0 > Score </ option >
< option value = 1 > Speedrun </ option >
</ select ></ label >
< input type = submit value = Valider >
</ form >
< ? php
}
else if ( isset ( $_GET [ " remove " ])){
if ( isset ( $_POST [ " sub_event_code " ])){
$sub_event_code = $_POST [ " sub_event_code " ];
mysqli_query ( $con , " DELETE FROM `sub_events` WHERE event_code=' $event_code ' AND sub_event_code=' $sub_event_code ' " );
}
foreach ( $sub_events as $sub_event ){
?>
< form action = " " method = " post " >
< input type = hidden name = sub_event_code value = " <?= $sub_event["sub_event_code"] ?> " >
< input type = submit value = " Supprimer <?= htmlspecialchars( $sub_event["sub_event_name"] ) ?> " >
</ form >
< ? php
}
} else if ( isset ( $_GET [ " start " ])) {
if ( isset ( $_POST [ " sub_event_code " ])) {
$sub_event_code = $_POST [ " sub_event_code " ];
mysqli_query ( $con , " UPDATE `sub_events` SET start_time= " . time () . " WHERE event_code=' $event_code ' AND sub_event_code=' $sub_event_code ' " );
}
foreach ( $sub_events as $sub_event ) {
?>
< form action = " " method = " post " >
< input type = hidden name = sub_event_code value = " <?= $sub_event["sub_event_code"] ?> " >
< input type = submit value = " Démarrer <?= htmlspecialchars( $sub_event["sub_event_name"] ) ?> " >
</ form >
< ? php
}
}
?>
< h1 > Admin de l ' event < ? = $event_datas [ " event_name " ] ?> </h1>
< h2 >< a href = " /?event_code=<?= $event_code ?>&admin=subevents&add " > Ajouter un sous event </ a ></ h2 >
< h2 >< a href = " /?event_code=<?= $event_code ?>&admin=subevents&remove " > Supprimer un sous event </ a ></ h2 >
< h2 >< a href = " /?event_code=<?= $event_code ?>&admin=subevents&start " > Démarrer un sous event </ a ></ h2 >
< p > Liste des sous events :</ p >
< ul >
< ? php
foreach ( $sub_events as $sub_event ) {
?>
< li >< a href = " /?event_code=<?= $event_code ?>&sub_event_code=<?= $sub_event["sub_event_code"] ?> " >< ? = $sub_event [ " sub_event_name " ] ?> </a></li>
< ? php
}
?>
< ? php
}
else if ( $_GET [ " admin " ] === " score " ){
if ( isset ( $_GET [ " sub_event_code " ])){
$sub_event_code = $_GET [ " sub_event_code " ];
$sub_event_datas = getSubEventData ( $con , $event_code , $sub_event_code );
if ( $sub_event_datas === false ){
die ( " Sub event not found " );
}
$is_speedrun = $sub_event_datas [ " sub_event_type " ] == 1 ;
if ( isset ( $_POST [ " player_id " ]) and ( $is_speedrun ? isset ( $_POST [ " score_time " ]) : isset ( $_POST [ " score " ]))){
if ( $sub_event_datas [ " start_time " ] == 0 ){
die ( " WARNING ! sub event not started " );
}
$player_id = $_POST [ " player_id " ];
$score_time = strtotime ( $_POST [ " score_time " ]);
$score = 0 ;
if ( $is_speedrun ){
//TODO: check this if code block when implementing "http request speedrun" (for dev speedrun or other things that can be complete with a special http request)
// SPEEDRUN SCORE CALCULATION
$start_time = $sub_event_datas [ " start_time " ];
$timelength = $score_time - $start_time ;
$get_position_in_classment = mysqli_query ( $con , " SELECT score_time FROM `scores` WHERE event_code=' $event_code ' AND sub_event_code=' $sub_event_code ' AND score_time< $score_time ORDER BY score_time ASC " );
$position_in_classment = mysqli_num_rows ( $get_position_in_classment ) + 1 ;
$bestscore = $timelength ;
if ( $position_in_classment != 1 ){
$bestscore = $get_position_in_classment -> fetch_all ()[ 0 ][ 0 ];
}
$score = ( 20000 * $bestscore ) / ( $timelength * $position_in_classment );
} else {
$score = intval ( $_POST [ " score " ]);
}
mysqli_query ( $con , " INSERT INTO `scores` (event_code, sub_event_code, player_id, score, score_time) VALUES (' $event_code ', ' $sub_event_code ', ' $player_id ', $score , $score_time ) ON DUPLICATE KEY UPDATE score= $score , score_time= $score_time " );
}
?>
< h1 > Admin de l ' event < ? = $event_datas [ " event_name " ] ?> </h1>
< h2 > Sub event : < ? = $sub_event_datas [ " sub_event_name " ] ?> </h2>
< form action = " " method = " post " >
< label for = player_id > Joueur :< select name = player_id id = player_id >
< ? php
foreach ( $players as $player ){
?>
< option value = " <?= $player["player_id"] ?> " >< ? = htmlspecialchars ( $player [ " player_name " ]) ?> </option>
< ? php
}
?>
</ select ></ label >
< ? php
if ( $is_speedrun ){
?>
< label for = score_time > Temps :< input type = time step = " 1 " name = score_time id = score_time ></ label >
< ? php
} else {
?>
< label for = score > Score :< input type = number name = score id = score ></ label >
< ? php
}
?>
< input type = submit value = Valider >
</ form >
< ? php
}
?>
< h1 > Admin de l ' event < ? = $event_datas [ " event_name " ] ?> </h1>
< p > Liste des sous events :</ p >
< ul >
< ? php
foreach ( $sub_events as $sub_event ){
?>
< li >< a href = " /?event_code=<?= $event_code ?>&admin=score&sub_event_code=<?= $sub_event["sub_event_code"] ?> " >< ? = $sub_event [ " sub_event_name " ] ?> </a></li>
< ? php
}
?>
</ ul >
< ? php
}
?>
< a href = " /?event_code=<?= $event_code ?> " > Retour </ a >
< h1 > Admin de l ' event < ? = $event_datas [ " event_name " ] ?> </h1>
< h2 >< a href = " /?event_code=<?= $event_code ?>&admin=players " > Gestion des joueurs </ a ></ h2 >
< h2 >< a href = " /?event_code=<?= $event_code ?>&admin=subevents " > Gestion des sous events </ a ></ h2 >
< h2 >< a href = " /?event_code=<?= $event_code ?>&admin=scores " > Gestion des scores </ a ></ h2 >
< ? php
}
}
$sub_event_code = " global " ;
if ( isset ( $_GET [ " sub_event_code " ])) {
$sub_event_code = $_GET [ " sub_event_code " ];
}
if ( $sub_event_code == " global " ) {
?>
< h1 >< ? = $event_datas [ " event_name " ] ?> </h1>
< p > Liste des sous events :</ p >
2025-02-10 18:04:48 +01:00
< ? = getBuildedLeaderBoard ( $con , $event_code , " global " ); ?>
2025-02-10 17:16:17 +01:00
< ul >
< ? php
$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 ;
?>
< li >< a href = " /?event_code=<?= $event_code ?>&sub_event_code=<?= $sub_event["sub_event_code"] ?> " >< ? = $sub_event [ " sub_event_name " ] ?> </a></li>
< ? php
}
?>
</ ul >
< ? php
die ();
}
$sub_event_datas = getSubEventData ( $con , $event_code , $sub_event_code );
if ( $sub_event_datas === false ) {
die ( " Sub event not found " );
}
?>