forked from rebillar/site-accueil-insa
437 lines
No EOL
19 KiB
PHP
437 lines
No EOL
19 KiB
PHP
<?php
|
|
include "script.php";
|
|
|
|
$refresh_rate = 15; //refresh rate en seconde (en gros on refresh la page toute les 15sec)
|
|
|
|
if($user['perm'] < 1) {
|
|
header('Location: deco.php');
|
|
}
|
|
|
|
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');
|
|
}
|
|
|
|
/*
|
|
TODO : FAIRE UN SCRIPT POUR AJOUTER DES EPREUVES ET EQUIPES DEPUIS LE PANEAU D'ADMIN
|
|
*/
|
|
|
|
// ajout d'une epreuve
|
|
if(isset($_POST['add_epreuve'])){
|
|
$req = $db->prepare("INSERT INTO ville_equipe(indice,reponse,photo) VALUES(?,?,?)");
|
|
$req->execute($_POST['indice'],$_POST['reponse'],'assets/img/ville/'.htmlspecialchars($_POST['photo']));
|
|
}
|
|
|
|
//ajout d'une equipe
|
|
if(isset($_POST['add_equipe'])){
|
|
$req = $db->prepare("INSERT INTO ville_equipe(nom,begin,temps) VALUES(?,?,?)");
|
|
$req->execute($_POST['nom'],$_POST['begin'],$_POST['temps']);
|
|
}
|
|
|
|
|
|
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');
|
|
}
|
|
}
|
|
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Admin / Com'ville</title>
|
|
<link rel="stylesheet" type="text/css" href="com_ville.css" />
|
|
</head>
|
|
<body>
|
|
<main>
|
|
|
|
|
|
|
|
<?php
|
|
|
|
|
|
|
|
if(isset($_GET['session']) AND !empty($_GET['session']))
|
|
{
|
|
$session = (int) htmlspecialchars($_GET['session']);
|
|
if($session == 1) {
|
|
?>
|
|
|
|
<form me
|
|
<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ée, </font>
|
|
<form method="POST">
|
|
<input type="submit" name="start1" value="Démarrer la session" class="submit_inline"></form>
|
|
</form>
|
|
<?php
|
|
} 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>
|
|
|
|
<META HTTP-EQUIV="Refresh" CONTENT="<?= $refresh_rate ?>">
|
|
|
|
<?php
|
|
} elseif($r[0]['state'] == 2) {
|
|
?>
|
|
<font color="red">Session terminée, </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
|
|
?>
|
|
<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>
|
|
<?php
|
|
} //fin du while e
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} elseif($session == 2) {
|
|
|
|
|
|
|
|
|
|
?>
|
|
<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ée, </font>
|
|
<form method="POST">
|
|
<input type="submit" name="start2" value="Démarrer la session" class="submit_inline"></form>
|
|
</form>
|
|
<?php
|
|
} 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ée, </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
|
|
?>
|
|
<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>
|
|
<?php
|
|
} //fin du while e
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
header('Location: ../error.php');
|
|
}
|
|
} 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">
|
|
<tr>
|
|
<th width="10%">ID (db)</td>
|
|
<th width="70%">Indice</td>
|
|
<th width="10%">reponse</td>
|
|
<th width="10%">photos</td>
|
|
</tr>
|
|
<?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 } ?>
|
|
</main>
|
|
</body>
|
|
</html>
|