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. --- admin-addusers.php | 226 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100644 admin-addusers.php (limited to 'admin-addusers.php') diff --git a/admin-addusers.php b/admin-addusers.php new file mode 100644 index 0000000..880a535 --- /dev/null +++ b/admin-addusers.php @@ -0,0 +1,226 @@ + + + + +

Add Users

+ + + + + + +
+ Add students + + Show students + + Logout +
+ +

Die Teilnehmer werden aus dem Moodlekurs der Veranstaltung übernommen. + Dazu die Teilnehmer als csv exportieren. Die csv Datei + dann mit den Angaben zum Kurs und zum Semester hier hochladen. Die + csv Datei enthält die Namen, Matrikelnummer und die Gruppen. +

+ + $teilnehmerliste) { + if (in_array($matrikelnummer, $teilnehmerliste)) { + return $gname; + } + } +} + +function parseuserfile($fname) { + global $pfach,$psemester,$newstudents,$newgroups,$students,$groups; + if (($fh = fopen($fname, "r")) !== FALSE) { + while (($line = fgetcsv($fh, 1000, ",", "\"", ""))) { + $vorname = $line[0]; + $nachname = $line[1]; + $matrikelnummer = is_numeric($line[2]) ? $line[2] : ""; + $student = array ( + "vorname" => $vorname, + "nachname" => $nachname, + "noten" => array ( + $pfach => [] + ) + ); + $newgruppe = ""; + if (!empty($line[4])) { + $gruppen = str_getcsv($line[4],",","\"",""); + foreach ($gruppen as $gruppe) { + if (preg_match("/.*-G[0-9].*/u", $gruppe) or + preg_match("/G[0-9].*/u", $gruppe) ) { + $newgruppe = trim($gruppe); + } + } + } + + if (empty($newgruppe) or empty($matrikelnummer)) { + echo "

WARNING: $vorname $nachname has no group or no matrikelnummer.

"; + } elseif (!empty($groups[$psemester][$pfach]) and + $gname = is_student_in_any_group($matrikelnummer, $groups[$psemester][$pfach])) { + echo "

WARNING: $matrikelnummer is already in $gname in database.

"; + } elseif ($gname = is_student_in_any_group($matrikelnummer, $newgroups)) { + echo "

WARNING: $matrikelnummer is already in $gname in this file

"; + } else { + if (empty($students[$matrikelnummer])) { + //db_student_new($matrikelnummer,$student); + echo "

Adding student $matrikelnummer

"; + $newstudents[$matrikelnummer] = $student; + } elseif (!array_key_exists($pfach,$students[$matrikelnummer]["noten"])) { + echo "

Adding $pfach to student $matrikelnummer

"; + $newstudents[$matrikelnummer] = $student; + } else { + echo "

WARNING: student $matrikelnummer is already in database.

"; + } + if (empty($groups[$psemester][$pfach][$newgruppe])) { + if (empty($newgroups[$newgruppe])) { + $newgroups[$newgruppe] = [$matrikelnummer]; + } elseif (!in_array($matrikelnummer,$newgroups[$newgruppe])) { + $newgroups[$newgruppe][] = $matrikelnummer; + } else { + echo "

WARNING: student $matrikelnummer is already in group $newgruppe

"; + } + } elseif (!in_array($matrikelnummer,$groups[$psemester][$pfach][$newgruppe])) { + echo "

ERROR: TODO group $newgruppe without $matrikelnummer already in database but

"; + } else { + echo "

WARNING: group $newgruppe with $matrikelnummer already in database

"; + } + } + //echo "

",$vorname,$nachname,$matrikelnummer,$newgruppe,"

"; + } + ksort($newgroups); + $_SESSION["newstudents"] = $newstudents; + $_SESSION["newgroups"] = $newgroups; + $_SESSION["fach"] = $pfach; + $_SESSION["semester"] = $psemester; + } else { + echo "

Error: Could not open file

"; + return FALSE; + } + return; +} + +echo "
"; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; + +if (!empty($_POST["save"]) and $_POST["save"] === "save") { + foreach ($newstudents as $matrikelnummer => $student) { + if (empty($students[$matrikelnummer])) { + db_student_new($matrikelnummer,$student); + } elseif (empty($students[$matrikelnummer]["noten"][$pfach])) { + db_student_add_fach($matrikelnummer,$pfach); + } else { + echo "

ERROR: $matrikelnummer with $pfach already in database.

"; + } + } + foreach ($newgroups as $gname => $teilnehmerarray) { + db_group_new($psemester,$pfach,$gname,$teilnehmerarray); + } + $newstudents = []; + $newgroups = []; + echo "

Saved.

"; +} elseif (!empty($_POST["cancel"]) and $_POST["cancel"] === "cancel") { + $newstudents = []; + $newgroups = []; + echo "

Canceled.

"; +} elseif (!empty($_POST["upload"]) and $_POST["upload"] === "upload") { + $fname = $_FILES["csvfile"]["tmp_name"]; + $ftype = $_FILES["csvfile"]["type"]; + + if (!empty($fname)) { + if ($ftype !== "text/csv") { + echo "

ERROR: Filetype must be csv

"; + } else { + parseuserfile($fname); + } + } +} +if (!empty($newstudents) or !empty($newgroups)) { + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + foreach ($newgroups as $gname => $teilnehmera) { + foreach ($teilnehmera as $matrikelnummer) { + if (!empty($newstudents[$matrikelnummer])) { + $vorname = $newstudents[$matrikelnummer]["vorname"]; + $nachname = $newstudents[$matrikelnummer]["nachname"]; + } else { + $vorname = $students[$matrikelnummer]["vorname"]; + $nachname = $students[$matrikelnummer]["nachname"]; + } + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + } + } + echo "
SemesterPrüfungGruppeNachnameVorname
",$psemester,"",$pfach,"",$gname,"",$nachname,"",$vorname,"
"; + + echo ""; + echo ""; +} + +echo "
"; + +?> + + + \ No newline at end of file -- cgit v1.2.3