aboutsummaryrefslogtreecommitdiff
path: root/database.php
diff options
context:
space:
mode:
Diffstat (limited to 'database.php')
-rw-r--r--database.php138
1 files changed, 138 insertions, 0 deletions
diff --git a/database.php b/database.php
new file mode 100644
index 0000000..9c14920
--- /dev/null
+++ b/database.php
@@ -0,0 +1,138 @@
+<?php
+
+function db_student_new($matrikelnummer,$student) {
+ date_default_timezone_set("UTC");
+ $json_student_add = array (
+ "time" => 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 "<p>Cannot open database.json</p>";
+ 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 "<p>ERROR: Student ",$matrikelnummer," is already in database.</p>";
+ }
+ break;
+ case "student_add_fach" :
+ $matrikelnummer = $cmd["matrikelnummer"];
+ $fach = $cmd["fach"];
+ if (empty($students[$matrikelnummer])) {
+ echo "<p>ERROR: Cannot add $fach to $matrikelnummer as student is not in database.</p>";
+ } elseif (array_key_exists($fach,$students[$matrikelnummer]["noten"])) {
+ echo "<p>ERROR: $fach already exists for $matrikelnummer in database.</p>";
+ } 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 "<p>ERROR: Group $gname for $fach in $semester is already in database.</p>";
+ }
+ 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 "<p>ERROR: database cmd ", $cmd["cmd"],"is unknown.</p>";
+ }
+ }
+ 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