site-accueil-insa/admin/ville.php

412 lines
18 KiB
PHP
Raw Permalink Normal View History

2022-07-24 19:54:06 +02:00
<?php
include "script.php";
2022-08-03 14:19:19 +02:00
$refresh_rate = 15; //refresh rate en seconde (en gros on refresh la page toute les 15sec)
2022-07-24 19:54:06 +02:00
if($user['perm'] < 1) {
header('Location: deco.php');
}
2022-07-30 23:20:40 +02:00
if(isset($_POST['start1'])) {
$req = $db->prepare("UPDATE ville SET state = ?, time_begin = ? WHERE session = 1");
$req->execute(array(1, time()));
header('Refresh: 0');
}
if(isset($_POST['start2'])) {
$req = $db->prepare("UPDATE ville SET state = ?, time_begin = ? WHERE session = 2");
$req->execute(array(1, time()));
header('Refresh: 0');
}
if(isset($_POST['stop1'])) {
$req = $db->query("UPDATE ville SET state = 2 WHERE session = 1");
header('Refresh: 0');
}
if(isset($_POST['stop2'])) {
$req = $db->query("UPDATE ville SET state = 2 WHERE session = 2");
header('Refresh: 0');
}
if(isset($_POST['reset1'])) {
if(htmlspecialchars($_POST['code']) == "anti-missclick") {
$req = $db->query("UPDATE ville SET state = 0, time_begin = 0 WHERE session = 1");
$req = $db->query("UPDATE ville_equipe SET temps = NULL WHERE id < 17");
header('Refresh: 0');
}
}
if(isset($_POST['reset2'])) {
if(htmlspecialchars($_POST['code']) == "anti-missclick") {
$req = $db->query("UPDATE ville SET state = 0, time_begin = 0 WHERE session = 2");
$req = $db->query("UPDATE ville_equipe SET temps = NULL WHERE id > 16");
header('Refresh: 0');
}
}
2022-07-24 19:54:06 +02:00
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Admin / Com'ville</title>
2022-08-03 14:19:19 +02:00
<link rel="stylesheet" type="text/css" href="com_ville.css" />
2022-07-24 19:54:06 +02:00
</head>
<body>
<main>
2022-07-30 23:20:40 +02:00
<?php
if(isset($_GET['session']) AND !empty($_GET['session']))
{
$session = (int) htmlspecialchars($_GET['session']);
if($session == 1) {
?>
<a href="ville.php?session=1" class="href_session_selected">Session matin</a>
<a href="ville.php?session=2" class="href_session">Session aprem</a>
<br>
<?php
$req = $db->query("SELECT state FROM ville WHERE session = 1");
$r = $req -> fetchAll(PDO::FETCH_ASSOC);
if($r[0]['state'] == 0) {
?>
<font color="green">Session non demarré, </font>
<form method="POST">
2022-08-03 14:19:19 +02:00
<input type="submit" name="start1" value="Démarrer la session" class="submit_inline"></form>
2022-07-30 23:20:40 +02:00
</form>
<?php
2022-08-03 14:19:19 +02:00
} elseif($r[0]['state'] >= 1) {
if($r[0]['state'] == 1) {
?>
<font color="orange">Session en cours, </font>
<form method="POST">
<input type="submit" name="stop1" value="Stopper la session" class="submit_inline"></form>
</form>
2022-07-30 23:20:40 +02:00
2022-08-03 14:19:19 +02:00
<META HTTP-EQUIV="Refresh" CONTENT="<?= $refresh_rate ?>">
2022-07-30 23:20:40 +02:00
2022-08-03 14:19:19 +02:00
<?php
} elseif($r[0]['state'] == 2) {
?>
<font color="red">Session terminé, </font>
<form method="POST">
<input type="text" name="code" placeholder="anti-missclick" class="input_inline">
<input type="submit" name="reset1" value="Reset la session" class="submit_inline"></form>
</form>
<?php
}
echo "<br><br><br>";
$reqsession = $db->query("SELECT state, time_begin FROM ville WHERE session = 1");
$rs = $reqsession -> fetchAll(PDO::FETCH_ASSOC);
$reqe = $db->query('SELECT * FROM ville_equipe WHERE id < 17');
while($e = $reqe->fetch()) {
$temps_init = $e["temps"];
$tab_time = NULL;
$tab_time = explode(";", $temps_init);
$temps_begin = date("H:i:s",$rs[0]['time_begin']);
if($temps_init == NULL) {
$avancement = (int) 0;
$delta_time_0 = gmdate("H:i:s",time()-$rs[0]['time_begin']);
} else {
$avancement = count($tab_time);
$def_time = $tab_time[$avancement-1] - $rs[0]['time_begin'];
$delta_time_0 = gmdate("H:i:s",$tab_time['0']-$rs[0]['time_begin']);
}
//node 0
2022-07-30 23:20:40 +02:00
?>
2022-08-03 14:19:19 +02:00
<div class="cmv-progress">
<h5 id="cmv-title" class="cmv-title">Equipe <?= $e['nom'] ?></h5>
<div class="cmv-container">
<div class="cmv-step fait">0
<div class="cmv-fixed"><?= $temps_begin ?></div> <!-- avec "--:--" = heure de départ -->
</div>
<div class="cmv-way fait">
<div class="cmv-relative"><?= $delta_time_0 ?></div>
</div>
<?php
/** Pour une équipe donnée */
/** $depart : Le point de départ de cette équipe */
$depart = $e['begin'];
/** $etape : À quelle étape en est cette équipe, si on l'utilise il faut décommenter quelques ligne plus bas : "$current = $etape - $depart + 1;" et commenter "$current = $avancement+1;" */
//$etape = 1;
/** $i va de 1 à 17 (inclus), 17 étant le nombre d'étapes */
for ($i = 1; $i <= 17; $i++) {
2022-07-30 23:20:40 +02:00
2022-08-03 14:19:19 +02:00
/** $node : Le numéro dans la node à l'emplacement $i
* exemple : si une équipe commence au point 7 alors la première node ($i = 1)
* va contenir $node = 7 À UTILISER POUR LES TEMPS ! */
$node = ($i + $depart - 2) % 17 + 1;
/** $current : À quel index est placé la node correspondante à l'$etape
* exemple : une équipe qui commence au point 17 en est au point 3,
* elle est donc affichée comme étant au niveau de la node d'index 4 ($i = 4)
* puisque de gauche à droite les premières nodes sont 17 - 1 - 2 - 3 */
//$current = $etape - $depart + 1;
$current = $avancement+1;
if ($current < 0) {
$current = $current + 17;
}
/** Si le point $i a été fait (fait), est en train d'être fait (actuel), ou n'a pas encore été atteint */
$state = '';
if ($i < $current) {
$state = ' fait';
} elseif ($i === $current) {
$state = ' active';
}
echo '<div class="cmv-step'.$state.'">';
echo $node;
if ($i <= $current) {
// --:-- doit être remplacé par l'heure à laquelle le point $node a été atteint
if($i == $current) {
echo '<div class="cmv-fixed">'.date("H:i:s",time()).'</div>';
} else {
echo '<div class="cmv-fixed">'.date("H:i:s",$tab_time[$i-1]).'</div>';
}
}
echo '</div>';
if ($i < 17) {
echo '<div class="cmv-way'.$state.'">';
if ($i < $current) {
if($i < $current-1) {
echo '<div class="cmv-relative">'.gmdate("H:i:s",$tab_time[$i]-$tab_time[$i-1]).'</div>'; // --mn doit être remplacé par le deltaT entre les points $node et $node+1
} else {
echo '<div class="cmv-relative">'.gmdate("H:i:s",time()-$tab_time[$i-1]).'</div>';
}
}
echo '</div>';
}
}
?>
</div>
</div>
2022-07-30 23:20:40 +02:00
<?php
2022-08-03 14:19:19 +02:00
} //fin du while e
2022-07-30 23:20:40 +02:00
}
2022-08-03 14:19:19 +02:00
2022-07-30 23:20:40 +02:00
} elseif($session == 2) {
2022-08-03 14:19:19 +02:00
2022-07-30 23:20:40 +02:00
?>
<a href="ville.php?session=1" class="href_session">Session matin</a>
<a href="ville.php?session=2" class="href_session_selected">Session aprem</a>
<br>
<?php
$req = $db->query("SELECT state FROM ville WHERE session = 2");
$r = $req -> fetchAll(PDO::FETCH_ASSOC);
if($r[0]['state'] == 0) {
?>
<font color="green">Session non demarré, </font>
<form method="POST">
2022-08-03 14:19:19 +02:00
<input type="submit" name="start2" value="Démarrer la session" class="submit_inline"></form>
2022-07-30 23:20:40 +02:00
</form>
<?php
2022-08-03 14:19:19 +02:00
} elseif($r[0]['state'] >= 1) {
if($r[0]['state'] == 1) {
?>
<font color="orange">Session en cours, </font>
<form method="POST">
<input type="submit" name="stop2" value="Stopper la session" class="submit_inline"></form>
</form>
<META HTTP-EQUIV="Refresh" CONTENT="<?= $refresh_rate ?>">
<?php
} elseif($r[0]['state'] == 2) {
?>
<font color="red">Session terminé, </font>
<form method="POST">
<input type="text" name="code" placeholder="anti-missclick" class="input_inline">
<input type="submit" name="reset2" value="Reset la session" class="submit_inline"></form>
</form>
<?php
}
echo "<br><br><br>";
$reqsession = $db->query("SELECT state, time_begin FROM ville WHERE session = 2");
$rs = $reqsession -> fetchAll(PDO::FETCH_ASSOC);
$reqe = $db->query('SELECT * FROM ville_equipe WHERE id > 16');
while($e = $reqe->fetch()) {
$temps_init = $e["temps"];
$tab_time = NULL;
$tab_time = explode(";", $temps_init);
$temps_begin = date("H:i:s",$rs[0]['time_begin']);
if($temps_init == NULL) {
$avancement = (int) 0;
$delta_time_0 = gmdate("H:i:s",time()-$rs[0]['time_begin']);
} else {
$avancement = count($tab_time);
$def_time = $tab_time[$avancement-1] - $rs[0]['time_begin'];
$delta_time_0 = gmdate("H:i:s",$tab_time['0']-$rs[0]['time_begin']);
}
//node 0
2022-07-30 23:20:40 +02:00
?>
2022-08-03 14:19:19 +02:00
<div class="cmv-progress">
<h5 id="cmv-title" class="cmv-title">Equipe <?= $e['nom'] ?></h5>
<div class="cmv-container">
<div class="cmv-step fait">0
<div class="cmv-fixed"><?= $temps_begin ?></div> <!-- avec "--:--" = heure de départ -->
</div>
<div class="cmv-way fait">
<div class="cmv-relative"><?= $delta_time_0 ?></div>
</div>
<?php
/** Pour une équipe donnée */
/** $depart : Le point de départ de cette équipe */
$depart = $e['begin'];
/** $etape : À quelle étape en est cette équipe, si on l'utilise il faut décommenter quelques ligne plus bas : "$current = $etape - $depart + 1;" et commenter "$current = $avancement+1;" */
//$etape = 1;
/** $i va de 1 à 17 (inclus), 17 étant le nombre d'étapes */
for ($i = 1; $i <= 17; $i++) {
/** $node : Le numéro dans la node à l'emplacement $i
* exemple : si une équipe commence au point 7 alors la première node ($i = 1)
* va contenir $node = 7 À UTILISER POUR LES TEMPS ! */
$node = ($i + $depart - 2) % 17 + 1;
/** $current : À quel index est placé la node correspondante à l'$etape
* exemple : une équipe qui commence au point 17 en est au point 3,
* elle est donc affichée comme étant au niveau de la node d'index 4 ($i = 4)
* puisque de gauche à droite les premières nodes sont 17 - 1 - 2 - 3 */
//$current = $etape - $depart + 1;
$current = $avancement+1;
if ($current < 0) {
$current = $current + 17;
}
/** Si le point $i a été fait (fait), est en train d'être fait (actuel), ou n'a pas encore été atteint */
$state = '';
if ($i < $current) {
$state = ' fait';
} elseif ($i === $current) {
$state = ' active';
}
echo '<div class="cmv-step'.$state.'">';
echo $node;
if ($i <= $current) {
// --:-- doit être remplacé par l'heure à laquelle le point $node a été atteint
if($i == $current) {
echo '<div class="cmv-fixed">'.date("H:i:s",time()).'</div>';
} else {
echo '<div class="cmv-fixed">'.date("H:i:s",$tab_time[$i-1]).'</div>';
}
}
echo '</div>';
if ($i < 17) {
echo '<div class="cmv-way'.$state.'">';
if ($i < $current) {
if($i < $current-1) {
echo '<div class="cmv-relative">'.gmdate("H:i:s",$tab_time[$i]-$tab_time[$i-1]).'</div>'; // --mn doit être remplacé par le deltaT entre les points $node et $node+1
} else {
echo '<div class="cmv-relative">'.gmdate("H:i:s",time()-$tab_time[$i-1]).'</div>';
}
}
echo '</div>';
}
}
?>
</div>
</div>
2022-07-30 23:20:40 +02:00
<?php
2022-08-03 14:19:19 +02:00
} //fin du while e
}
2022-07-30 23:20:40 +02:00
} else {
2022-08-03 14:19:19 +02:00
header('Location: ../error.php');
2022-07-30 23:20:40 +02:00
}
} else {
?>
<a href="ville.php?session=1" class="href_session">Session matin</a>
<a href="ville.php?session=2" class="href_session">Session aprem</a>
<table class="acces">
2022-07-24 23:12:31 +02:00
<tr>
2022-07-30 23:20:40 +02:00
<th width="10%">ID (db)</td>
<th width="70%">Indice</td>
<th width="10%">reponse</td>
<th width="10%">photos</td>
2022-07-24 23:12:31 +02:00
</tr>
2022-07-30 23:20:40 +02:00
<?php
$req = $db->query('SELECT id, indice, reponse, photo FROM ville_epreuve');
while($epreuve = $req->fetch()) {
?>
<tr>
<td><?= $epreuve['id'] ?></td>
<td><?= $epreuve['indice'] ?></td>
<td><?= $epreuve['reponse'] ?></td>
<td><?php if(isset($epreuve['photo'])) { ?><img src="../assets/img/com_ville/<?= $epreuve['photo'] ?>" style="height: 100px;"><?php } else { echo "<font color='red'>no photos</font>"; }?></td>
</tr>
<?php } ?>
</table>
<?php } ?>
2022-07-24 19:54:06 +02:00
</main>
</body>
</html>