content is the same as browser cache
// So send a 304 Not Modified response header and exit
if($_SERVER['HTTP_IF_NONE_MATCH'] == $etag) {
http_response_code(304);
exit();
}
}
*/
require_once("$documentRoot/import_runners.php");
function registration_table($runners) {
parse_str($_SERVER['QUERY_STRING'], $query);
$matpost = $query["control"];
$runners_filtered = [];
if ($query["filter"]) {
for ($i = 0; $i < count($runners); $i++) {
if (filter_runners($runners[$i], $query["filter"])) {
array_push($runners_filtered, $runners[$i]);
}
}
$runners = $runners_filtered;
}
if (count($runners) == 0) {
$runner_id = $query["filter"];
$response = "
Fant ingen løper med dette startnummeret. Registrer likevell? Registrer startnummer $runner_id ✅️
";
echo($response);
} else {
echo("
#
Navn
Tid
");
for ($i = 0; $i < count($runners); $i++) {
$runner = $runners[$i];
// Klokkeslett for denne posten
if ($runner->splits[$matpost-1] != false) {
$tid_passering = $GLOBALS['start_time']->diff($runner->splits[$matpost-1])->format('%H:%I:%S');
}
else {
$tid_passering = "";
}
if ($runner->get_control() == $matpost-1) {
// Løperen har vært på denne matposten og vi farger raden grønn
$button = "id)\">☑️ ";
$cssclass = "class=\"bg-success\"";
}
elseif ($runner->get_control() > $matpost-1) {
// Løperen har vært på denne matposten og vi farger raden grønn
$button = "id)\">☑️ ";
$cssclass = "class=\"bg-active\"";
}
else {
$button = "id)\">✅️ ";
$cssclass = "";
}
echo ("$runner->id $runner->name $tid_passering $button \n");
}
echo(" ");
}
}
function participants_table($runners) {
usort($runners, "cmp_course");
$kadaverløpere = 0;
$minikadaverløpere = 0;
for ($i = 0; $i < count($runners); $i++) {
if ($runners[$i]->course == "Kadaverløpet") {
$kadaverløpere++;
}
elseif ($runners[$i]->course == "Minikadaver'n") {
$minikadaverløpere++;
}
}
echo("
$kadaverløpere påmeldt Kadaverløpet
$minikadaverløpere påmeldte i Minikadaver'n
");
echo("
S.nr
Navn
Klubb/Forening
Variant
");
for ($i = 0; $i < count($runners); $i++) {
$runner = $runners[$i];
echo ("$runner->id $runner->name $runner->club $runner->course \n");
}
echo("");
}
function liveresult_table($runners) {
usort($runners, "cmp");
usort($runners, "cmp_course");
$kadaver_table = "
#
Navn
1. matpost
2. matpost
Mål
Etter
Sprekkindeks
";
$kadaver_num = 0;
for ($i = 0; $i < count($runners); $i++) {
$runner = $runners[$i];
$tid_maal = "";
$sprekk = " ";
if ($runner->splits[2] != false) {
$tid_maal = $GLOBALS['start_time']->diff($runner->splits[2])->format('%H:%I:%S');
}
if ($runner->course == "Kadaverløpet") {
$kadaver_num++;
$tid_1_mat = "";
if ($runner->splits[0] != false) {
// https://www.php.net/manual/en/class.dateinterval.php
$tid_1_mat = $GLOBALS['start_time']->diff($runner->splits[0])->format('%H:%I:%S');
}
$tid_2_mat = "";
//tid etter vinner
$tid_etter = "";
if ($runner->splits[2] != false && $kadaver_num > 0) {
$tid_etter = $runners[0]->splits[2]->diff($runner->splits[2])->format('%I:%S');
}
//sprekkindekss
if ($runner->splits[1] != false) {
$tid_2_mat = $GLOBALS['start_time']->diff($runner->splits[1])->format('%H:%I:%S');
try {
$sprekk = "" . number_format(100*(time_diff($GLOBALS['start_time'],$runner->splits[2]) - time_diff($GLOBALS['start_time'],$runner->splits[1])) / time_diff($GLOBALS['start_time'],$runner->splits[2]), 0) . "% ";
}
catch (DivisionByZeroError $e){
$sprekk = " ";
}
catch (TypeError $e) {
$sprekk = " ";
}
}
$matposter = "$tid_1_mat $tid_2_mat ";
}
if ($runner->course == "Kadaverløpet") {
$kadaver_table .= "". $kadaver_num .". $runner->name $matposter$tid_maal $tid_etter $sprekk \n";
}
}
$kadaver_table .= "
\n";
echo($kadaver_table);
}
function minikadadvern_table($runners) {
usort($runners, "cmp");
usort($runners, "cmp_course");
$minikadaver_table = "
#
Navn
Mål
";
$kadaver_num = 0;
$mini_num = 0;
for ($i = 0; $i < count($runners); $i++) {
$runner = $runners[$i];
$tid_maal = "";
$sprekk = " ";
if ($runner->splits[2] != false) {
$tid_maal = $GLOBALS['start_time']->diff($runner->splits[2])->format('%H:%I:%S');
}
if ($runner->course == "Kadaverløpet") {
$kadaver_num++;
$tid_1_mat = "";
if ($runner->splits[0] != false) {
// https://www.php.net/manual/en/class.dateinterval.php
$tid_1_mat = $GLOBALS['start_time']->diff($runner->splits[0])->format('%H:%I:%S');
}
$tid_2_mat = "";
//tid etter vinner
$tid_etter = "";
if ($runner->splits[2] != false && $kadaver_num > 0) {
$tid_etter = $runners[0]->splits[2]->diff($runner->splits[2])->format('%I:%S');
}
//sprekkindekss
if ($runner->splits[1] != false) {
$tid_2_mat = $GLOBALS['start_time']->diff($runner->splits[1])->format('%H:%I:%S');
try {
$sprekk = "" . number_format(100*(time_diff($GLOBALS['start_time'],$runner->splits[2]) - time_diff($GLOBALS['start_time'],$runner->splits[1])) / time_diff($GLOBALS['start_time'],$runner->splits[2]), 0) . "% ";
}
catch (DivisionByZeroError $e){
$sprekk = " ";
}
catch (TypeError $e) {
$sprekk = " ";
}
}
$matposter = "$tid_1_mat $tid_2_mat ";
}
else {
$mini_num++;
}
if ($runner->course == "Kadaverløpet") {
$kadaver_table .= "". $kadaver_num .". $runner->name $matposter$tid_maal $tid_etter $sprekk \n";
}
elseif ($runner->course == "Minikadaver'n") {
$minikadaver_table .= "". "" .". $runner->name $tid_maal \n";
}
}
$minikadaver_table .= "
";
echo($minikadaver_table);
}
$runners = read_runners_from_csv();
if (!isset($query)){
parse_str($_SERVER['QUERY_STRING'], $query);
if ($query["type"] == "registrering"){
registration_table($runners);
}
elseif ($query["type"] == "paameldte") {
participants_table($runners);
}
elseif ($query["type"] == "liveresultater") {
liveresult_table($runners);
}
elseif ($query["type"] == "minikadavern") {
minikadadvern_table($runners);
}
}