From d0fce093ef2f16fc2897baf7ddf93b6f969890bf Mon Sep 17 00:00:00 2001 From: Friedrich Beckmann Date: Fri, 30 Jan 2026 17:59:23 +0100 Subject: initial commit The first prototype where you can upload student data from moodle and change the marks. In student view the results for the logged in person can be viewed. --- database.php | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 database.php (limited to 'database.php') diff --git a/database.php b/database.php new file mode 100644 index 0000000..9c14920 --- /dev/null +++ b/database.php @@ -0,0 +1,138 @@ + date('Y-m-d H:i:s', time()), + "cmd" => "student_new", + "matrikelnummer" => $matrikelnummer, + "vorname" => $student["vorname"], + "nachname" => $student["nachname"], + "noten" => $student["noten"] + ); + $json_string = json_encode($json_student_add, JSON_UNESCAPED_UNICODE)."\n"; + $fh = fopen("database.json", "a"); + fwrite($fh,$json_string); + fclose($fh); + + //echo $json_string; +} + +function db_student_add_fach($matrikelnummer,$fach) { + date_default_timezone_set("UTC"); + $cmd = array ( + "time" => date('Y-m-d H:i:s', time()), + "cmd" => "student_add_fach", + "matrikelnummer" => $matrikelnummer, + "fach" => $fach + ); + $json_string = json_encode($cmd, JSON_UNESCAPED_UNICODE)."\n"; + $fh = fopen("database.json", "a"); + fwrite($fh,$json_string); + fclose($fh); +} + +function db_student_update_note($matrikelnummer,$fach,$teilpruefung,$note) { + date_default_timezone_set("UTC"); + $cmd = array ( + "time" => date('Y-m-d H:i:s', time()), + "cmd" => "note_upd", + "fach" => $fach, + "teilpruefung" => $teilpruefung, + "note" => $note, + "matrikelnummer" => $matrikelnummer + ); + $json_string = json_encode($cmd, JSON_UNESCAPED_UNICODE)."\n"; + $fh = fopen("database.json", "a"); + fwrite($fh,$json_string); + fclose($fh); +} + +function db_group_new($semester,$fach,$gname,$teilnehmerarray) { + date_default_timezone_set("UTC"); + $cmd = array ( + "time" => date('Y-m-d H:i:s', time()), + "cmd" => "group_new", + "semester" => $semester, + "fach" => $fach, + "name" => $gname, + "teilnehmer" => $teilnehmerarray + ); + $json_string = json_encode($cmd, JSON_UNESCAPED_UNICODE)."\n"; + $fh = fopen("database.json", "a"); + fwrite($fh,$json_string); + fclose($fh); + //echo $json_string; +} + +function db_read () { + global $students,$groups,$pfp; + $fh = fopen("database.json", "r"); + if ($fh === FALSE) { + echo "

Cannot open database.json

"; + return FALSE; + } + while ($line = fgets($fh)) { + $cmd = json_decode($line,JSON_UNESCAPED_UNICODE); + switch ($cmd["cmd"]) { + case "student_new" : + $matrikelnummer = $cmd["matrikelnummer"]; + if (empty($students[$matrikelnummer])) { + $students[$matrikelnummer]["vorname"] = $cmd["vorname"]; + $students[$matrikelnummer]["nachname"] = $cmd["nachname"]; + $students[$matrikelnummer]["noten"] = $cmd["noten"]; + $fach = array_key_first($cmd["noten"]); + $students[$matrikelnummer]["history"][] = $cmd["time"]." student new with ".$fach; + } else { + echo "

ERROR: Student ",$matrikelnummer," is already in database.

"; + } + break; + case "student_add_fach" : + $matrikelnummer = $cmd["matrikelnummer"]; + $fach = $cmd["fach"]; + if (empty($students[$matrikelnummer])) { + echo "

ERROR: Cannot add $fach to $matrikelnummer as student is not in database.

"; + } elseif (array_key_exists($fach,$students[$matrikelnummer]["noten"])) { + echo "

ERROR: $fach already exists for $matrikelnummer in database.

"; + } else { + $students[$matrikelnummer]["noten"][$fach] = []; + $students[$matrikelnummer]["history"][] = $cmd["time"]." add ".$fach; + } + break; + case "group_new" : + $semester = $cmd["semester"]; + $fach = $cmd["fach"]; + $gname = $cmd["name"]; + if (empty($groups[$semester][$fach][$gname])) { + $groups[$semester][$fach][$gname] = $cmd["teilnehmer"]; + } else { + echo "

ERROR: Group $gname for $fach in $semester is already in database.

"; + } + break; + case "note_upd": + $fach = $cmd["fach"]; + $teilpruefung = $cmd["teilpruefung"]; + $matrikelnummer = $cmd["matrikelnummer"]; + $note = $cmd["note"]; + $students[$matrikelnummer]["noten"][$fach][$teilpruefung] = $note; + $students[$matrikelnummer]["history"][] = $cmd["time"]." ".$fach."/".$teilpruefung.": ".$note; + break; + default : + echo "

ERROR: database cmd ", $cmd["cmd"],"is unknown.

"; + } + } + fclose($fh); +} + +// Search user with name and return matrikelnummer if found +function db_find_user($vorname,$nachname) { + global $students; + foreach ($students as $matrikelnummer => $student) { + if ($student["vorname"] === $vorname and $student["nachname"] === $nachname) { + return $matrikelnummer; + break; + } + } + return FALSE; +} +?> \ No newline at end of file -- cgit v1.2.3