diff options
Diffstat (limited to 'admin-addusers.php')
| -rw-r--r-- | admin-addusers.php | 226 |
1 files changed, 226 insertions, 0 deletions
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 @@ +<?php +include "setup.php"; +my_session_start(); +$login=false; +if (isset($_SESSION["login"])) { + $login = $_SESSION["login"]; +} +if ($login !== "admin") { + header("Location: index.php"); + exit; +} +?> +<!DOCTYPE html> +<html> +<body> +<h1>Add Users</h1> +<table> +<tr> +<td> + <a href="admin-addusers.php">Add students</a> +</td> +<td> + <a href="admin-show.php">Show students</a> +</td> +<td> + <a href="logout.php">Logout</a> +</td> +</tr> +</table> + +<p> 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. +</p> + +<?php + +if (!empty($_POST["upload"]) and $_POST["upload"] === "upload") { + $pfach = $_POST["fach"]; + $psemester = $_POST["semester"]; + $newstudents = []; + $newgroups = []; +} else { + $pfach = empty($_SESSION["fach"]) ? "" :$_SESSION["fach"]; + $psemester = empty($_SESSION["semester"]) ? "" :$_SESSION["semester"]; + $newstudents = empty($_SESSION["newstudents"]) ? [] :$_SESSION["newstudents"]; + $newgroups = empty($_SESSION["newgroups"]) ? [] :$_SESSION["newgroups"]; +} + +unset($_SESSION["newstudents"]); +unset($_SESSION["newgroups"]); +unset($_SESSION["fach"]); +unset($_SESSION["semester"]); + + +// Check if student is in any group. If the student is found +// return the first groupname, otherwise FALSE +function is_student_in_any_group($matrikelnummer, $grouplist) { + if (empty($grouplist) or empty($matrikelnummer)) { + return FALSE; + } + foreach ($grouplist as $gname => $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 "<p>WARNING: $vorname $nachname has no group or no matrikelnummer.</p>"; + } elseif (!empty($groups[$psemester][$pfach]) and + $gname = is_student_in_any_group($matrikelnummer, $groups[$psemester][$pfach])) { + echo "<p>WARNING: $matrikelnummer is already in $gname in database.</p>"; + } elseif ($gname = is_student_in_any_group($matrikelnummer, $newgroups)) { + echo "<p>WARNING: $matrikelnummer is already in $gname in this file</p>"; + } else { + if (empty($students[$matrikelnummer])) { + //db_student_new($matrikelnummer,$student); + echo "<p>Adding student $matrikelnummer</p>"; + $newstudents[$matrikelnummer] = $student; + } elseif (!array_key_exists($pfach,$students[$matrikelnummer]["noten"])) { + echo "<p>Adding $pfach to student $matrikelnummer</p>"; + $newstudents[$matrikelnummer] = $student; + } else { + echo "<p>WARNING: student $matrikelnummer is already in database.</p>"; + } + if (empty($groups[$psemester][$pfach][$newgruppe])) { + if (empty($newgroups[$newgruppe])) { + $newgroups[$newgruppe] = [$matrikelnummer]; + } elseif (!in_array($matrikelnummer,$newgroups[$newgruppe])) { + $newgroups[$newgruppe][] = $matrikelnummer; + } else { + echo "<p>WARNING: student $matrikelnummer is already in group $newgruppe</p>"; + } + } elseif (!in_array($matrikelnummer,$groups[$psemester][$pfach][$newgruppe])) { + echo "<p>ERROR: TODO group $newgruppe without $matrikelnummer already in database but </p>"; + } else { + echo "<p>WARNING: group $newgruppe with $matrikelnummer already in database</p>"; + } + } + //echo "<p>",$vorname,$nachname,$matrikelnummer,$newgruppe,"</p>"; + } + ksort($newgroups); + $_SESSION["newstudents"] = $newstudents; + $_SESSION["newgroups"] = $newgroups; + $_SESSION["fach"] = $pfach; + $_SESSION["semester"] = $psemester; + } else { + echo "<p>Error: Could not open file</p>"; + return FALSE; + } + return; +} + +echo "<form action=\"admin-addusers.php\" method=\"post\" enctype=\"multipart/form-data\">"; +echo "<label for \"fach\">Fach: </label>"; +echo "<select name=\"fach\">"; +foreach ($pfp as $fach => $value) { + echo "<option value=\"$fach\">$fach</option>"; +} +echo "</select>"; +echo "<select name=\"semester\">"; +foreach ($semester as $semestername) { + echo "<option value=\"$semestername\">$semestername</option>"; +} +echo "</select>"; +echo "<input type=\"file\" name=\"csvfile\" id=\"csvfile\">"; +echo "<input type=\"submit\" name=\"upload\" value=\"upload\">"; + +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 "<p>ERROR: $matrikelnummer with $pfach already in database.</p>"; + } + } + foreach ($newgroups as $gname => $teilnehmerarray) { + db_group_new($psemester,$pfach,$gname,$teilnehmerarray); + } + $newstudents = []; + $newgroups = []; + echo "<h1>Saved.</h1>"; +} elseif (!empty($_POST["cancel"]) and $_POST["cancel"] === "cancel") { + $newstudents = []; + $newgroups = []; + echo "<h1>Canceled.</h1>"; +} 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 "<p>ERROR: Filetype must be csv</p>"; + } else { + parseuserfile($fname); + } + } +} +if (!empty($newstudents) or !empty($newgroups)) { + echo "<table>"; + echo "<tr>"; + echo "<th>Semester</th>"; + echo "<th>Prüfung</th>"; + echo "<th>Gruppe</th>"; + echo "<th>Nachname</th>"; + echo "<th>Vorname</th>"; + echo "</tr>"; + 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 "<tr>"; + echo "<td>",$psemester,"</td>"; + echo "<td>",$pfach,"</td>"; + echo "<td>",$gname,"</td>"; + echo "<td>",$nachname,"</td>"; + echo "<td>",$vorname,"</td>"; + echo "</tr>"; + } + } + echo "</table>"; + + echo "<input type=\"submit\" name=\"save\" value=\"save\">"; + echo "<input type=\"submit\" name=\"cancel\" value=\"cancel\">"; +} + +echo "</form>"; + +?> + +</body> +</html>
\ No newline at end of file |
