id = $id; $this->name = $name; $this->club = $club; $this->course = $course; $this->email = $email; $this->phone = $phone; $this->is_student = $is_student; $this->line_in_csv = $line_in_csv; $this->splits = [false, false, false]; } function set_split($control, $timestamp) { $this->splits[$control] = $timestamp; } function get_control(){ if ($this->splits[2] != false) { return 2; } elseif ($this->splits[1] != false) { return 1; } elseif ($this->splits[0] != false) { return 0; } else { return -1; } } } //find runner by id in list of Runner objects function get_runner($runnner_list, int $id) { for ($i = 0; $i < count($runnner_list); $i++) { if ($runnner_list[$i]->id == $id) { return $runnner_list[$i]; } } return false; } function search_for_runner($runner_list, $search_term) { $filtered_runners = []; for ($i = 0; $i < count($runner_list); $i++) { $runner = $runner_list[$i]; if (str_contains(strtolower($runner->name), strtolower($search_term))){ array_push($filtered_runners, $runner); } elseif (str_contains($runner->id, $search_term)){ array_push($filtered_runners, $runner); } elseif (str_contains(strtolower($runner->club), strtolower($search_term))){ array_push($filtered_runners, $runner); } } return $filtered_runners; } function cmp(Runner $a, Runner $b) { $a_control = $a->get_control(); $b_control = $b->get_control(); if ($a_control > $b_control){ return -1; } if ($a_control < $b_control){ return 1; } if ($a_control == -1) { return 1; } if ($b_control == -1) { return -1; } if ($a->splits[$a_control]->getTimestamp() < $b->splits[$b_control]->getTimestamp()){ return -1; } if ($a->splits[$a_control]->getTimestamp() > $b->splits[$b_control]->getTimestamp()){ return 1; } return 0; } function cmp_course(Runner $a, Runner $b) { return strcmp($a->course, $b->course); } function filter_runners(Runner $runner, $id) { if ($runner->id == $id) { return True; } else { return False; } } function time_diff(DateTime $date_1, DateTime $date_2) { return $date_2->getTimestamp() - $date_1->getTimestamp(); } function read_runners_from_csv(){ $documentRoot = $_SERVER['DOCUMENT_ROOT']; $runners = []; $csv_runners = file_get_contents("$documentRoot/data/db.csv"); $csv_runners = str_getcsv($csv_runners, "\n"); for ($i = 1; $i < count($csv_runners); $i++) { $line = str_getcsv($csv_runners[$i], ";"); array_push($runners, new Runner($line[0], $line[2], $line[5], $line[6], $line[3], $line[4], $line[7], $i)); } $timings = file_get_contents("$documentRoot/data/passering.csv"); $timings = str_getcsv($timings, "\n"); for ($i = 0; $i < count($timings); $i++) { $line = str_getcsv($timings[$i]); $time = DateTime::createFromFormat("Y-m-d\TH:i:sp", $line[2]); if (!$time) { //error continue; } $runner = get_runner($runners, (int) $line[1]); if (!$runner) { //error continue; } $runner->set_split($line[0]-1, $time); } return $runners; }