From f9068434309bff3e055c987eb4c098bc1790e662 Mon Sep 17 00:00:00 2001 From: Stefan Puraner Date: Wed, 5 Mar 2014 13:31:49 +0000 Subject: [PATCH] =?UTF-8?q?Pr=C3=BCfungsverwaltung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/lehre/pruefung/pruefung.js | 140 +++ .../pruefung/pruefungsfenster_anlegen.php | 449 +++++++++ .../pruefung/pruefungstermin_festlegen.php | 873 ++++++++++++++++++ include/pruefungCis.class.php | 504 ++++++++++ include/pruefungsfenster.class.php | 310 +++++++ include/pruefungstermin.class.php | 120 +++ 6 files changed, 2396 insertions(+) create mode 100644 cis/private/lehre/pruefung/pruefung.js create mode 100644 cis/private/lehre/pruefung/pruefungsfenster_anlegen.php create mode 100644 cis/private/lehre/pruefung/pruefungstermin_festlegen.php create mode 100644 include/pruefungCis.class.php create mode 100644 include/pruefungsfenster.class.php create mode 100644 include/pruefungstermin.class.php diff --git a/cis/private/lehre/pruefung/pruefung.js b/cis/private/lehre/pruefung/pruefung.js new file mode 100644 index 000000000..aa9f4f075 --- /dev/null +++ b/cis/private/lehre/pruefung/pruefung.js @@ -0,0 +1,140 @@ +/* Copyright (C) 2013 fhcomplete.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + * + * Authors: Stefan Puraner + */ + +function getUrlVars() { + var vars = {}; + var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { + vars[key] = value; + }); + return vars; +} + +function setDatePicker(ele) +{ + var start = $("#pruefungsfenster option:selected").attr("start"); +// console.log(start); + start = start.split('-'); +// console.log(start); +// console.log(new Date(start[0],start[1]-1,start[2])); + var ende = $("#pruefungsfenster option:selected").attr("ende"); +// console.log(ende); + ende = ende.split('-'); +// console.log(ende); +// console.log(new Date(ende[0],ende[1]-1,ende[2])); + $("#prfTermin input[type=text]").each(function(i,v){ + $("#"+v.id).datepicker("destroy"); + $("#"+v.id).datepicker({ + minDate: new Date(start[0],start[1]-1,start[2]), + maxDate: new Date(ende[0],ende[1]-1,ende[2]) + }); + }); + $("#pruefungsfenster").attr("onchange", "setDatePicker()"); +} + +function terminHinzufuegen(inputTag) +{ + inputTag = (inputTag===undefined ? "" : inputTag); +// var start = $("#pruefungsfenster option:selected").attr("start"); +// start = start.split('-'); +// var ende = $("#pruefungsfenster option:selected").attr("ende"); +// ende = ende.split('-'); + var count = $("#prfTermin tr").length+1; + $("#prfTermin").append(''); +// $("#termin"+count).datepicker({ +// minDate: new Date(start[0],start[1]-1,start[2]), +// maxDate: new Date(ende[0],ende[1]-1,ende[2]) +// }); + setDatePicker(); +} + +function lehrveranstaltungDropdownhinzufuegen(element, isChanged) +{ + if(!isChanged) + { + var newSelect = $("#lvDropdown1").clone(); + var id = $("#lvDropdowns select").length+1; + newSelect.attr("id", "lvDropdown"+id); + element.setAttribute("onchange", "lehrveranstaltungDropdownhinzufuegen(this, true);"); + newSelect.appendTo("#lvDropdowns"); + $("#lvDropdowns").append("
"); + } + +} + +/** + * Error-Behandlung bei Ajax Requests + */ +function loadError(xhr, textStatus, errorThrown) +{ + if(xhr.status==200) + alert('Fehler:'+xhr.responseText); + else + alert('Fehler beim Laden der Daten. ErrorNr:'+xhr.status); +} + +function loadPruefungsfenster() +{ + var studiensemester_kurzbz = $("#studiensemester option:selected").val(); + $.ajax({ + dataType: 'json', + url: "../../../../soap/fhcomplete.php", + data: { + typ: "json", + class: "pruefungsfenster", + method: "getByStudiensemester", + parameter_0: studiensemester_kurzbz + }, + error: loadError + }).success(function(data){ + writePruefungsfenster(data); + setDatePicker(); + }); +} + +function writePruefungsfenster(data) +{ + var prfFensterId = getUrlVars()["prfFensterId"]; + $("#pruefungsfenster").empty(); +// $("#pruefungsfenster").append(""); + $.each(data.result, function(i, v) + { + if(v.oe_kurzbz !== null) + { + if(v.pruefungsfenster_id === prfFensterId) + { + $("#pruefungsfenster").append(""); + } + else + { + $("#pruefungsfenster").append(""); + } + } + else + { + $("#pruefungsfenster").html(""); + } + + }); +} + + + + + + diff --git a/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php b/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php new file mode 100644 index 000000000..a3c1cc9f2 --- /dev/null +++ b/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php @@ -0,0 +1,449 @@ + + + */ + +require_once('../../../../config/cis.config.inc.php'); +require_once('../../../../include/functions.inc.php'); +require_once('../../../../include/benutzerberechtigung.class.php'); +require_once('../../../../include/organisationseinheit.class.php'); +require_once('../../../../include/studiensemester.class.php'); +require_once('../../../../include/datum.class.php'); +require_once('../../../../include/pruefungsfenster.class.php'); + +$uid = get_uid(); +$db = new basis_db(); +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($uid); + +/** + * TODO + */ +if(!$rechte->isBerechtigt('lehre/pruefungsfenster')) + die('Sie haben keine Berechtigung für diese Seite'); + +function compareOe($a, $b) +{ + if($a->organisationseinheittyp_kurzbz == $b->organisationseinheittyp_kurzbz) + return 0; + + return ($a->organisationseinheittyp_kurzbz < $b->organisationseinheittyp_kurzbz) ? -1 : 1; +} + +?> + + + + Prüfungsfenster anlegen + + + + + + + + + +getOEkurzbz("lehre/pruefungsfenster"); + +$studiensemester = new studiensemester(); +$studiensemester->getAll(); + +if (isset($_POST["method"]) && $_POST["method"] == "save") +{ + $method = $_POST["method"]; + $studiensemester_selected = (isset($_POST["studiensemester"]) ? $_POST["studiensemester"] : ""); + $oe_kurzbz = (isset($_POST["oe_kurzbz"]) ? $_POST["oe_kurzbz"] : ""); + $startDate = (isset($_POST["startDate"]) ? $datum->formatDatum($_POST["startDate"], "Y-m-d") : ""); + $endDate = (isset($_POST["endDate"]) ? $datum->formatDatum($_POST["endDate"], "Y-m-d") : ""); + + if ($endDate != false && $startDate != false) + { + if ($datum->DateDiff($startDate, $endDate) >= 0) + { + if ($datum->DateDiff(date("Y-m-d"), $endDate) >= 0) + { +// if ($datum->DateDiff($startDate, date("Y-m-d")) <= 0) +// { + $pruefungsfenster = new pruefungsfenster(); + $pruefungsfenster->new = true; + $pruefungsfenster->studiensemester_kurzbz = $studiensemester_selected; + $pruefungsfenster->oe_kurzbz = $oe_kurzbz; + $pruefungsfenster->start = $startDate; + $pruefungsfenster->ende = $endDate; + if ($pruefungsfenster->save()) + { + echo "Datensatz erfolgreich gespeichert"; + } + else { + echo "Fehler: ".$pruefungsfenster->errormsg; + } +// } +// else +// { +// echo "Fehler: Startdatum liegt in der Vergangenheit."; +// } + } + else + { + echo "Fehler: Enddatum liegt in der Vergangenheit."; + } + } + else + { + echo "Fehler: Enddatum liegt nicht nach dem Startdatum."; + } + } + else + { + echo "Fehler: Datumseingabe nicht korrekt."; + } +} +else if(isset($_POST["method"]) && $_POST["method"] == "update") +{ + $studiensemester_selected = (isset($_POST["studiensemester"]) ? $_POST["studiensemester"] : ""); + $oe_kurzbz = (isset($_POST["oe_kurzbz"]) ? $_POST["oe_kurzbz"] : ""); + $startDate = (isset($_POST["startDate"]) ? $datum->formatDatum($_POST["startDate"], "Y-m-d") : ""); + $endDate = (isset($_POST["endDate"]) ? $datum->formatDatum($_POST["endDate"], "Y-m-d") : ""); + + if ($endDate != false && $startDate != false) + { + if ($datum->DateDiff($startDate, $endDate) >= 0) + { + if ($datum->DateDiff(date("Y-m-d"), $endDate) >= 0) + { +// if ($datum->DateDiff($startDate, date("Y-m-d")) <= 0) +// { + if(in_array($pruefungsfenster->oe_kurzbz, $oe)) + { + $pruefungsfenster_id = $_POST["id"]; + $pruefungsfenster = new pruefungsfenster(); + $pruefungsfenster->load($pruefungsfenster_id); + $pruefungsfenster->studiensemester_kurzbz = $studiensemester_selected; + $pruefungsfenster->oe_kurzbz = $oe_kurzbz; + $pruefungsfenster->start = $startDate; + $pruefungsfenster->ende = $endDate; + if ($pruefungsfenster->save()) + { + echo "Datensatz erfolgreich geändert."; + } + else { + echo "Fehler: ".$pruefungsfenster->errormsg; + } + } + else + { + echo "Keine Berechtigung zum Ändern dieses Datensatzes."; + } +// } +// else +// { +// echo "Fehler: Startdatum liegt in der Vergangenheit."; +// } + } + else + { + echo "Fehler: Enddatum liegt in der Vergangenheit."; + } + } + else + { + echo "Fehler: Enddatum liegt nicht nach dem Startdatum."; + } + } + else + { + echo "Fehler: Datumseingabe nicht korrekt."; + } +} +else if(isset($_GET["id"]) && $_GET["id"]!= null && isset($_GET["method"]) && $_GET["method"]=="update") +{ + $pruefungsfenster_id = $_GET["id"]; + $pruefungsfenster = new pruefungsfenster(); + $pruefungsfenster->load($pruefungsfenster_id); + if(!in_array($pruefungsfenster->oe_kurzbz, $oe)) + { + echo "Keine Berechtigung zum Anzeigen dieses Datensatzes."; + $pruefungsfenster = new pruefungsfenster(); + } + $method = $_GET["method"]; +} +else if(isset($_GET["id"]) && $_GET["id"]!= null && isset($_GET["method"]) && $_GET["method"]=="delete") +{ + $pruefungsfenster_id = $_GET["id"]; + $pruefungsfenster = new pruefungsfenster(); + $pruefungsfenster->load($pruefungsfenster_id); + + if(in_array($pruefungsfenster->oe_kurzbz, $oe)) + { + if(!$pruefungsfenster->hasPruefungen($pruefungsfenster_id) && $pruefungsfenster->errormsg === null) + { + + if($pruefungsfenster->delete($pruefungsfenster_id)) + { + echo "Datensatz erfolgreich gelöscht."; + } + else + { + echo "Fehler: ".$pruefungsfenster->errormsg; + } + + } + else + { + echo "Prüfungsfenster konnte nicht gelöscht werden, da Prüfungen verknüpft sind."; + } + $method = $_GET["method"]; + } + else + { + echo "Keine Berechtigung zum Löschen dieses Datensatzes."; + } +} + +$prfFenster = new pruefungsfenster(); +$prfFenster->getAll("start"); +if($method != "update") +{ +?> +

Prüfungsfenster-Verwaltung

+

Neues Prüfungsfenster anlegen

+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
Studiensemester: + +
Organisationseinheit: + +
Start:
Ende:
+
+
+ +

Prüfungsfenster-Verwaltung

+

Prüfungsfenster bearbeiten

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Studiensemester: + +
Organisationseinheit: + +
Start:
Ende:
+
+
+ +

Prüfungsfenster bearbeiten

+
+ result)){ + + ?> + + + + + + + + + + + + + result as $result) + { + if(in_array($result->oe_kurzbz, $oe)) + { + $organisationseinheit->load($result->oe_kurzbz); + echo + ' + + + + + + + '; + } + } + ?> + +
StudiensemesterOrganisationseinheitStartdatumEnddatumBearbeitenLöschen
'.$result->studiensemester_kurzbz.''.$organisationseinheit->organisationseinheittyp_kurzbz." ".$organisationseinheit->bezeichnung.''.$result->start.''.$result->ende.'bearbeitenlöschen
+ + Keine Prüfungsfenster gespeichert. + '; + } + ?> +
+ + + diff --git a/cis/private/lehre/pruefung/pruefungstermin_festlegen.php b/cis/private/lehre/pruefung/pruefungstermin_festlegen.php new file mode 100644 index 000000000..ac52bf875 --- /dev/null +++ b/cis/private/lehre/pruefung/pruefungstermin_festlegen.php @@ -0,0 +1,873 @@ + + + */ + +require_once('../../../../config/cis.config.inc.php'); +require_once('../../../../include/functions.inc.php'); +require_once('../../../../include/benutzerberechtigung.class.php'); +require_once('../../../../include/studiensemester.class.php'); +require_once('../../../../include/datum.class.php'); +require_once('../../../../include/pruefungsfenster.class.php'); +require_once('../../../../include/lehrveranstaltung.class.php'); +require_once('../../../../include/pruefungstermin.class.php'); +require_once('../../../../include/studiengang.class.php'); +require_once('../../../../include/pruefungCis.class.php'); +require_once('../../../../include/mail.class.php'); + +$uid = get_uid(); +$db = new basis_db(); +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($uid); + +if(!$rechte->isBerechtigt('lehre/pruefungstermin')) + die('Sie haben keine Berechtigung für diese Seite'); + +function compareLvIDs($a, $b) +{ + if($a->lehrveranstaltung_id == $b->lehrveranstaltung_id) + return 0; + + return -1; +} + +$studiensemester = new studiensemester(); +$studiensemester->getAll(); + +$pruefungsfenster = new pruefungsfenster(); +$pruefungsfenster->getAll("start"); + +$lehrveranstaltung = new lehrveranstaltung(); +//TODO +$lehrveranstaltung->getLVByMitarbeiter($uid, $studiensemester->getSemesterFromDatum(date("Y-m-d"))); +$lehrveranstaltung->getLVByMitarbeiter("leutgeb", $studiensemester->getSemesterFromDatum(date("Y-m-d"))); + + +$pruefungstermin = new pruefungstermin(); +$pruefungstypen = $pruefungstermin->getAllPruefungstypen(); + +if($_POST["method"] == "save") +{ + $studiensemester_kurzbz = isset($_POST["studiensemester"])?$_POST["studiensemester"]:null; + $pruefungsfenster_id = isset($_POST["pruefungsfenster"])?$_POST["pruefungsfenster"]:null; + $pruefungstyp_kurzbz = isset($_POST["pruefungsTyp"])?$_POST["pruefungsTyp"]:null; + $titel = isset($_POST["titel"])?$_POST["titel"]:null; + $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; + $methode = isset($_POST["methode"])?$_POST["methode"]:null; + $einzeln = isset($_POST["einzelpruefung"])?true:false; + $lehrveranstaltungen = isset($_POST["lv"]) ? $_POST["lv"] : null; + $termine = array(); + $error = false; + if($pruefungsfenster_id === "null") + { + $error = true; + echo "Bitte geben Sie ein Prüfungsfenster an."; + } + + if(isset($_POST["termin"])) + { + if(!$error) + { + $pruefungsfenster = new pruefungsfenster(); + $pruefungsfenster->load($pruefungsfenster_id); + $datum = new datum(); + } + for($i = 0; $i< sizeof($_POST["termin"]); $i++) + { + if(!$error) + { + $termin = new stdClass(); + $datum = new datum(); + $date = (isset($_POST["termin"][$i]) && $datum->checkDatum($_POST["termin"][$i])) ? $_POST["termin"][$i] : null; + $beginn = (isset($_POST["terminBeginn"][$i]) && $datum->checkUhrzeit($_POST["terminBeginn"][$i])) ? $_POST["terminBeginn"][$i] : null; + $ende = (isset($_POST["terminEnde"][$i]) && $datum->checkUhrzeit($_POST["terminEnde"][$i])) ? $_POST["terminEnde"][$i] : null; + $termin->min = (isset($_POST["minTeilnehmer"][$i]) && is_numeric($_POST["minTeilnehmer"][$i]) && strlen($_POST["minTeilnehmer"][$i]) > 0) ? $_POST["minTeilnehmer"][$i] : 0; + $termin->max = (isset($_POST["maxTeilnehmer"][$i]) && is_numeric($_POST["maxTeilnehmer"][$i]) && strlen($_POST["maxTeilnehmer"][$i]) > 0) ? $_POST["maxTeilnehmer"][$i] : null; + + if($datum == null) + { + echo "Fehler: Ungültiges Datum angegeben.
"; + $error = true; + } + if($beginn == null) + { + echo "Fehler: Ungültige Beginnzeit angegeben.
"; + $error = true; + } + if($ende == null) + { + echo "Fehler: Ungültige Endzeit angegeben.
"; + $error = true; + } + if($termin->min === null) + { + echo "Fehler: Ungültige Mindestteilnehmerzahl angegeben.
"; + $error = true; + } + if(!(mktime(substr($beginn,0,2), substr($beginn,-2)) < mktime(substr($ende,0,2), substr($ende,-2)))) + { + echo "Endzeit liegt vor der Startzeit!
"; + $error = true; + } + if(!($termin->min < $termin->max) && $termin->max !== null) + { + echo "Maximalteilnehmerzahlt ist kleiner der Mindestteilnehmerzahl.
"; + $error = true; + } + if(!$datum->between($pruefungsfenster->start, $pruefungsfenster->ende, $date)) + { + echo "Prüfungstermin liegt nicht innheralb des Prüfungsfensters.
"; + $error = true; + } + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); + array_push($termine, $termin); + } + } + } + + if(!$error) + { + $pruefung = new pruefungCis(); + $pruefung->termine = $termine; + $pruefung->mitarbeiter_uid = $uid; + $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; + $pruefung->pruefungsfenster_id = $pruefungsfenster_id; + $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; + $pruefung->titel = $titel; + $pruefung->beschreibung = $beschreibung; + $pruefung->methode = $methode; + $pruefung->einzeln = $einzeln; + $pruefung->insertvon = $uid; + + if(mb_strlen($pruefung->titel) > 0) + { + if($pruefung->pruefungstyp_kurzbz != "undefiniert") + { + if($lehrveranstaltungen != null && sizeof($lehrveranstaltungen) > 0) + { + $i=0; + foreach ($lehrveranstaltungen as $lv) { + if($lv != "null") + { + array_push($pruefung->lehrveranstaltungen, $lv); + } + } + if($pruefung->save(true)) + { + //TODO Absender und Inhalt fehlen + foreach ($pruefung->lehrveranstaltungen as $lvId) + { + $lv = new lehrveranstaltung($lvId); + $text = "Ein Prüfungstermin zu Ihrer Lehrveranstaltung ".$lv->bezeichnung." wurde angelegt.\n" + . "Die Prüfung kann am " + .date('d.m.Y', strtotime($pruefung->termine[0]->beginn))." " + . "in der Zeit von " + .date('H:i', strtotime($pruefung->termine[0]->beginn))." bis " + .date('H:i', strtotime($pruefung->termine[0]->ende))." abgelegt werden."; + //$text = "test"; + $empfaenger = $lv->getStudentsOfLv($lvId, $pruefung->studiensemester_kurzbz); + $mailto = ""; + foreach ($empfaenger as $e) { + $mailto .= $e.'@'.DOMAIN.', '; + } + $email = new mail($mailto, "unknown", "Prüfungstermin für ".$lv->bezeichnung, $text); + var_dump($email); + echo $email->send(); + } + + echo "Datensatz erfolgreich gespeichert!"; + } + else + { + echo "Fehler: ".$pruefung->errormsg; + } + } + else + { + echo "Bitte Lehrveranstaltungen angeben."; + } + + } + else + { + echo "Bitte einen Prüfungstyp auswählen"; + } + } + else + { + echo "Bitte einen Titel angeben."; + } + } + +} +else if($_POST["method"] == "update") +{ + $studiensemester_kurzbz = isset($_POST["studiensemester"])?$_POST["studiensemester"]:null; + $pruefungsfenster_id = isset($_POST["pruefungsfenster"])?$_POST["pruefungsfenster"]:null; + $pruefungstyp_kurzbz = isset($_POST["pruefungsTyp"])?$_POST["pruefungsTyp"]:null; + $titel = isset($_POST["titel"])?$_POST["titel"]:null; + $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; + $methode = isset($_POST["methode"])?$_POST["methode"]:null; + $einzeln = isset($_POST["einzelpruefung"])?true:false; + $lehrveranstaltungen = isset($_POST["lv"]) ? $_POST["lv"] : null; + $termine = array(); + $termineNeu = array(); + $error = false; + if(!$error) + { + $pruefungsfenster = new pruefungsfenster(); + $pruefungsfenster->load($pruefungsfenster_id); + $datum = new datum(); + } + + if(isset($_POST["terminNeu"])) + { + + for($i = 0; $i< sizeof($_POST["terminNeu"]); $i++) + { + if(!$error) + { + $termin = new stdClass(); + $datum = new datum(); + $date = (isset($_POST["terminNeu"][$i]) && $datum->checkDatum($_POST["terminNeu"][$i])) ? $_POST["terminNeu"][$i] : null; + $beginn = (isset($_POST["terminBeginnNeu"][$i]) && $datum->checkUhrzeit($_POST["terminBeginnNeu"][$i])) ? $_POST["terminBeginnNeu"][$i] : null; + $ende = (isset($_POST["terminEndeNeu"][$i]) && $datum->checkUhrzeit($_POST["terminEndeNeu"][$i])) ? $_POST["terminEndeNeu"][$i] : null; + $termin->min = (isset($_POST["minTeilnehmerNeu"][$i]) && is_numeric($_POST["minTeilnehmerNeu"][$i]) && strlen($_POST["minTeilnehmerNeu"][$i]) > 0) ? $_POST["minTeilnehmerNeu"][$i] : 0; + $termin->max = (isset($_POST["maxTeilnehmerNeu"][$i]) && is_numeric($_POST["maxTeilnehmerNeu"][$i]) && strlen($_POST["maxTeilnehmerNeu"][$i]) > 0) ? $_POST["maxTeilnehmerNeu"][$i] : null; + + if($datum == null) + { + echo "Fehler: Ungültiges Datum angegeben.
"; + $error = true; + } + if($beginn == null) + { + echo "Fehler: Ungültige Beginnzeit angegeben.
"; + $error = true; + } + if($ende == null) + { + echo "Fehler: Ungültige Endzeit angegeben.
"; + $error = true; + } + if($termin->min === null) + { + echo "Fehler: Ungültige Mindestteilnehmerzahl angegeben.
"; + $error = true; + } + if(!(mktime(substr($beginn,0,2), substr($beginn,-2)) < mktime(substr($ende,0,2), substr($ende,-2)))) + { + echo "Endzeit liegt vor der Startzeit!
"; + $error = true; + } + if(!($termin->min < $termin->max) && $termin->max !== null) + { + echo "Maximalteilnehmerzahlt ist kleiner der Mindestteilnehmerzahl.
"; + $error = true; + } + if(!$datum->between($pruefungsfenster->start, $pruefungsfenster->ende, $date)) + { + echo "Prüfungstermin liegt nicht innheralb des Prüfungsfensters.
"; + $error = true; + } + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); + array_push($termineNeu, $termin); + } + } + } + + if(isset($_POST["termin"])) + { + $error = false; + for($i = 0; $i< sizeof($_POST["termin"]); $i++) + { + if(!$error) + { + $termin = new stdClass(); + $datum = new datum(); + $terminId = (isset($_POST["termin_id"][$i])) ? $_POST["termin_id"][$i] : null; + $date = (isset($_POST["termin"][$i]) && $datum->checkDatum($_POST["termin"][$i])) ? $_POST["termin"][$i] : null; + $beginn = (isset($_POST["terminBeginn"][$i]) && $datum->checkUhrzeit($_POST["terminBeginn"][$i])) ? $_POST["terminBeginn"][$i] : null; + $ende = (isset($_POST["terminEnde"][$i]) && $datum->checkUhrzeit($_POST["terminEnde"][$i])) ? $_POST["terminEnde"][$i] : null; + $termin->min = (isset($_POST["minTeilnehmer"][$i]) && is_numeric($_POST["minTeilnehmer"][$i]) && strlen($_POST["minTeilnehmer"][$i]) > 0) ? $_POST["minTeilnehmer"][$i] : 0; + $termin->max = (isset($_POST["maxTeilnehmer"][$i]) && is_numeric($_POST["maxTeilnehmer"][$i]) && strlen($_POST["maxTeilnehmer"][$i]) > 0) ? $_POST["maxTeilnehmer"][$i] : null; + + if($datum == null) + { + echo "Fehler: Ungültiges Datum angegeben.
"; + $error = true; + } + if($beginn == null) + { + echo "Fehler: Ungültige Beginnzeit angegeben.
"; + $error = true; + } + if($ende == null) + { + echo "Fehler: Ungültige Endzeit angegeben.
"; + $error = true; + } + if($termin->min === null) + { + echo "Fehler: Ungültige Mindestteilnehmerzahl angegeben.
"; + $error = true; + } + if(!(mktime(substr($beginn,0,2), substr($beginn,-2)) < mktime(substr($ende,0,2), substr($ende,-2)))) + { + echo "Endzeit liegt vor der Startzeit!
"; + $error = true; + } + if(!($termin->min < $termin->max) && $termin->max !== null) + { + echo "Maximalteilnehmerzahlt ist kleiner der Mindestteilnehmerzahl.
"; + $error = true; + } + if(!$datum->between($pruefungsfenster->start, $pruefungsfenster->ende, $date)) + { + echo "Prüfungstermin liegt nicht innheralb des Prüfungsfensters.
"; + $error = true; + } + $termin->pruefungstermin_id = $terminId; + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); + array_push($termine, $termin); + } + } + } + + if(!$error) + { + $pruefung = new pruefungCis(); + $pruefung_id = $_POST["id"]; + $pruefung->load($pruefung_id); + $pruefung->termine = $termine; + foreach ($termineNeu as $t) + { + $pruefung->saveTerminPruefung($pruefung_id, $t->beginn, $t->ende, $t->max, $t->min); + } + $pruefung->mitarbeiter_uid = $uid; + $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; + $pruefung->pruefungsfenster_id = $pruefungsfenster_id; + $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; + $pruefung->titel = $titel; + $pruefung->beschreibung = $beschreibung; + $pruefung->methode = $methode; + $pruefung->einzeln = $einzeln; + $pruefung->updatevon = $uid; + + if(mb_strlen($pruefung->titel) > 0) + { + if($pruefung->pruefungstyp_kurzbz != "undefiniert") + { + if($lehrveranstaltungen != null && sizeof($lehrveranstaltungen) > 0) + { + $i=0; + foreach ($lehrveranstaltungen as $lv) + { + if($lv != "null") + { + array_push($pruefung->lehrveranstaltungen, $lv); + } + } + if($pruefung->save(false)) + { + echo "Datensatz erfolgreich gespeichert!"; + } + else + { + echo "Fehler: ".$pruefung->errormsg; + } + } + else + { + echo "Bitte Lehrveranstaltungen angeben."; + } + + } + else + { + echo "Bitte einen Prüfungstyp auswählen"; + } + } + else + { + echo "Bitte einen Titel angeben."; + } + } + +} +else if(isset ($_GET["method"]) && $_GET["action"] === "deleteTermin") +{ + $pruefungstermin_id = $_GET["termin_id"]; + $pruefung_id = $_GET["id"]; + $pruefung = new pruefungCis(); + $pruefung->load($pruefung_id); + $pruefung->deleteTerminPruefung($pruefungstermin_id); +} + +else if(isset ($_GET["method"]) && $_GET["action"] === "deleteLv") +{ + $lvId = $_GET["lvId"]; + $pruefung_id = $_GET["id"]; + $pruefung = new pruefungCis(); + $pruefung->load($pruefung_id); + $pruefung->deleteLehrveranstaltungPruefung($lvId, $pruefung_id); +} + +else if(isset ($_GET["action"]) && $_GET["action"] === "storno") +{ + $pruefung_id = $_GET["id"]; + $pruefung = new pruefungCis(); +// $pruefung->load($pruefung_id); + $pruefung->pruefungStornieren($pruefung_id); + header("Location: pruefungstermin_festlegen.php"); +} + +$pruefungen = new pruefungCis(); +$pruefungen->getPruefungByMitarbeiter($uid, $studiensemester_kurzbz); + +foreach($pruefungen->result as $tempPrf) +{ + $tempPrf->getLehrveranstaltungenByPruefung(); + $tempPrf->getTermineByPruefung(); +} + +?> + + + + Prüfungstermin festlegen + + + + + + + + + + + +

Prüfungen verwalten

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Titel: + +
Beschreibung: + +
Studiensemester: + +
Prüfungsfenster: + +
Prüfungstyp: + +
Methode:
Einzelprüfung:
Lehrveranstaltungen: +
+
+
+
Termin: +
+ + + + + + + + + + + + + + + + + +
DatumVonbis
+ + + + + + + + + +
+
+ Termin hinzufügen +
 
+
+
+
+

Prüfungen

+
+ + + + + + + + + + + + + + + + result as $prf) + { + echo + 'storniert == true) ? "style='text-decoration: line-through'" : "").'> + + + + + + + + + + '; + } + ?> + +
TitelStudiensemesterLehrveranstaltungenTermineMethodePrüfungstypEinzelprüfungMitarbeiterstorniert
'.$prf->titel.''.$prf->studiensemester_kurzbz.''; + foreach($prf->lehrveranstaltungen as $lv) + { + $lehrveranstaltung = new lehrveranstaltung(); + $lehrveranstaltung->load($lv->lehrveranstaltung_id); + echo $lehrveranstaltung->bezeichnung.'
'; + } + echo '
+ + '; + foreach($prf->termine as $termine) + { + echo ''; + //date('Y-m-d H:i', strtotime($termine->von)); + } + echo ' +
'.date('d.m.Y H:i', strtotime($termine->von))."".date('d.m.Y H:i', strtotime($termine->bis)).'
+
'.(($prf->methode == null) ? "keine Methode angegeben" : $prf->methode).''.$prf->pruefungstyp_kurzbz.''.(($prf->einzeln == true) ? "TRUE" : "FALSE").''.$prf->mitarbeiter_uid.''.(($prf->storniert == true) ? "TRUE" : "FALSE").'
+
+
+ load($pruefung_id); + $pruefung->getLehrveranstaltungenByPruefung(); + $pruefung->getTermineByPruefung(); + } + else + { + header("Location: pruefungstermin_festlegen.php"); + } + + + ?> +

Prüfung bearbeiten

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Titel: + +
Beschreibung: + +
Studiensemester: + +
Prüfungsfenster: + +
Prüfungstyp: + +
Methode:
Einzelprüfung:einzeln == true) ? " checked ": "") ?> name="einzelpruefung">
Lehrveranstaltungen: +
+ lehrveranstaltungen as $lv) + { + array_push($lv_temp, $lv->lehrveranstaltung_id); + } + foreach($lehrveranstaltung->lehrveranstaltungen as $result) + { + $studiengang->load($result->studiengang_kz); + + if(in_array($result->lehrveranstaltung_id, $lv_temp)) + { + echo ''.$studiengang->kurzbzlang.' | '.$result->bezeichnung.' ('.$result->lehrform_kurzbz.') löschen
'; + } + } + ?> +
+
+
+
+
Termin: +
+ + + + + + + + + + + + + termine as $prfTermin) + { + echo ' + + + + + + + + '; + } + ?> + + +
DatumVonbismin. Teilnehmermax. TeilnehmerAktion
+ von)).'"> + + von)).'"> + + bis)).'"> + + + + + + löschen +
+
+ Termin hinzufügen +
  + Prüfung stornieren +
  + + +
+
+
+ + + diff --git a/include/pruefungCis.class.php b/include/pruefungCis.class.php new file mode 100644 index 000000000..040a4613f --- /dev/null +++ b/include/pruefungCis.class.php @@ -0,0 +1,504 @@ + + */ + +require_once(dirname(__FILE__) . '/basis_db.class.php'); + +class pruefungCis extends basis_db +{ + public $new; + public $result = array(); + + public $pruefung_id; //bigint + public $mitarbeiter_uid; //varchar(32) + public $studiensemester_kurzbz; //varchar(16) + public $pruefungsfenster_id; //bigint + public $pruefungstyp_kurzbz; //varchar(16) + public $titel; //varchar(256) + public $beschreibung; //beschreibung(text) + public $methode; //varchar(64) + public $einzeln; //boolean + public $storniert = false; //boolean + public $insertvon; //varcahr(32) + public $insertamum; //timestamp without timezone + public $updatevon; //varcahr(32) + public $updateamum; //timestamp without timezone + + public $lehrveranstaltungen = array(); //Lehrveranstaltungen zur Prüfung + public $termine = array(); //Termine zur Prüfung + + /** + * Konstruktor + * @param pruefung_id ID der zu ladenden Prüfung + */ + public function __construct($pruefung_id = null) + { + parent::__construct(); + + if ($pruefung_id != null) + $this->load($pruefung_id); + } + + public function __set($name, $value) + { + switch ($name) { + case 'pruefung_id': + if (!is_numeric($value)) + throw new Exception('Attribute pruefung_id must be numeric!"'); + $this->$name = $value; + break; + case 'methode': + if(mb_strlen($value) > 64) + throw new Exception('Attribute methode must not be longer than 64 characters!"'); + $this->$name = $value; + break; + case 'titel': + if(mb_strlen($value) > 256) + throw new Exception('Attribute methode must not be longer than 256 characters!"'); + $this->$name = $value; + break; + default: + $this->$name = $value; + } + } + + public function __get($name) + { + return $this->$name; + } + + public function validate() + { + if(!is_numeric($this->pruefungsfenster_id) && $this->pruefungsfenster_id != null) + { + $this->errormsg = "pruefungsfenster_id muss eine gültige Zahl sein."; + return false; + } + + if(mb_strlen($this->mitarbeiter_uid) > 32) + { + $this->errormsg = "mitarbeiter_uid darf nicht länger als 32 Zeichen sein."; + return false; + } + + if(mb_strlen($this->studiensemester_kurzbz) > 16 && $this->studiensemester_kurzbz != null) + { + $this->errormsg = "studiensemester_kurzbz darf nicht länger als 16 Zeichen sein."; + return false; + } + + if(mb_strlen($this->pruefungstyp_kurzbz) > 16 && $this->pruefungstyp_kurzbz != null) + { + $this->errormsg = "pruefungstyp_kurzbz darf nicht länger als 16 Zeichen sein."; + return false; + } + + if(mb_strlen($this->titel) > 256) + { + $this->errormsg = "pruefungstyp_kurzbz darf nicht länger als 256 Zeichen sein."; + return false; + } + + if(mb_strlen($this->methode) > 64) + { + $this->errormsg = "methode darf nicht länger als 64 Zeichen sein."; + return false; + } + + return true; + } + + public function save($new = null) + { + if(!$this->validate()) + { + return false; + } + else if($new) + { + $qry = 'BEGIN; INSERT INTO campus.tbl_pruefung (mitarbeiter_uid, studiensemester_kurzbz, pruefungsfenster_id, pruefungstyp_kurzbz, titel, beschreibung, methode, einzeln, storniert, insertvon, insertamum) ' + . 'VALUES ('.$this->db_add_param($this->mitarbeiter_uid).', ' + . $this->db_add_param($this->studiensemester_kurzbz).', ' + . $this->db_add_param($this->pruefungsfenster_id).', ' + . $this->db_add_param($this->pruefungstyp_kurzbz).', ' + . $this->db_add_param($this->titel).', ' + . $this->db_add_param($this->beschreibung).', ' + . $this->db_add_param($this->methode).', ' + . $this->db_add_param($this->einzeln, FHC_BOOLEAN).', ' + . $this->db_add_param($this->storniert, FHC_BOOLEAN).', ' + . $this->db_add_param($this->insertvon).', ' + . 'now()' + . ');'; + } + else + { + $qry = 'UPDATE campus.tbl_pruefung SET ' + . 'mitarbeiter_uid='.$this->db_add_param($this->mitarbeiter_uid).', ' + . 'studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).', ' + . 'pruefungsfenster_id='.$this->db_add_param($this->pruefungsfenster_id).', ' + . 'pruefungstyp_kurzbz='.$this->db_add_param($this->pruefungstyp_kurzbz).', ' + . 'titel='.$this->db_add_param($this->titel).', ' + . 'beschreibung='.$this->db_add_param($this->titel).', ' + . 'methode='.$this->db_add_param($this->methode).', ' + . 'einzeln='.$this->db_add_param($this->einzeln,FHC_BOOLEAN).', ' + . 'storniert='.$this->db_add_param($this->storniert,FHC_BOOLEAN).', ' + . 'updatevon='.$this->db_add_param($this->updatevon).', ' + . 'updateamum=now() ' + . 'WHERE pruefung_id='.$this->db_add_param($this->pruefung_id).';'; + } + + if($this->db_query($qry)) + { + if ($new) + { + $qry = "SELECT currval('campus.seq_pruefung_pruefung_id') as id"; + if ($this->db_query($qry)) + { + if ($row = $this->db_fetch_object()) + { + $this->pruefung_id = $row->id; + foreach ($this->lehrveranstaltungen as $lv) + { + if(!$this->saveLehrveranstaltungPruefung($lv, $this->pruefung_id)) + { + $this->errormsg = 'Fehler beim Speichern der Lehrveranstaltungen.'; + $this->db_query('ROLLBACK'); + return false; + } + } + foreach ($this->termine as $termin) + { + if(!$this->saveTerminPruefung($this->pruefung_id, $termin->beginn, $termin->ende, $termin->max, $termin->min)) + { + $this->errormsg = 'Fehler beim Speichern der Termine.'; + $this->db_query('ROLLBACK'); + return false; + } + } + $this->db_query('COMMIT;'); + return true; + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + else + { + foreach ($this->termine as $termin) + { + if(!$this->updateTerminPruefung($termin->pruefungstermin_id, $this->pruefung_id, $termin->beginn, $termin->ende, $termin->max, $termin->min)) + { + $this->errormsg = 'Fehler beim ändern der Termine.ID'.$termin->pruefungstermin_id; + $this->db_query('ROLLBACK'); + return false; + } + } + foreach ($this->lehrveranstaltungen as $lv) + { + if(!$this->saveLehrveranstaltungPruefung($lv, $this->pruefung_id)) + { + $this->errormsg = 'Fehler beim Speichern der Lehrveranstaltungen.'; + $this->db_query('ROLLBACK'); + return false; + } + } + $this->db_query('COMMIT;'); + return true; + } + return true; + } + else + { + $this->db_query('ROLLBACK'); + $this->errormsg = 'Prüfung konnte nicht gespeichert werden.'; + return false; + } + } + + public function load($pruefung_id) + { + if(!is_numeric($pruefung_id)) + { + $this->errormsg = "Prüfung ID ist keine gültige Zahl"; + return false; + } + + $qry = 'SELECT * FROM campus.tbl_pruefung WHERE pruefung_id='.$this->db_add_param($pruefung_id).';'; + + if(!$this->db_query($qry)) + { + $this->errormsg = "Prüfung konnte nicht geladen werden"; + return false; + } + else + { + while($row = $this->db_fetch_object()) + { + $this->pruefung_id = $row->pruefung_id; + $this->mitarbeiter_uid = $row->mitarbeiter_uid; + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->pruefungsfenster_id = $row->pruefungsfenster_id; + $this->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz; + $this->titel = $row->titel; + $this->beschreibung = $row->beschreibung; + $this->methode = $row->methode; + $this->einzeln = $this->db_parse_bool($row->einzeln); + $this->storniert = $this->db_parse_bool($row->storniert); + } + return true; + } + } + + public function getPruefungByMitarbeiter($uid, $studiensemester_kurzbz=null) + { + $qry = 'SELECT * FROM campus.tbl_pruefung ' + . 'WHERE mitarbeiter_uid='.$this->db_add_param($uid); + if($studiensemester_kurzbz!=null) + { + $qry .= ' AND studiensemester_kurzbz='.$this->db_add_param($studiensemester_kurzbz).';'; + } + else + { + $qry .= ';'; + } + + + if(!$this->db_query($qry)) + { + $this->errormsg = "Prüfungen konnten nicht geladen werden"; + return false; + } + else + { + while($row = $this->db_fetch_object()) + { + $obj = new pruefungCis(); + + $obj->pruefung_id = $row->pruefung_id; + $obj->mitarbeiter_uid = $row->mitarbeiter_uid; + $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $obj->pruefungsfenster_id = $row->pruefungsfenster_id; + $obj->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz; + $obj->titel = $row->titel; + $obj->beschreibung = $row->beschreibung; + $obj->methode = $row->methode; + $obj->einzeln = $this->db_parse_bool($row->einzeln); + $obj->storniert = $this->db_parse_bool($row->storniert); + $this->result[] = $obj; + } + return true; + } + } + + protected function saveLehrveranstaltungPruefung($lehrveranstaltung_id, $pruefung_id) + { + if(!is_numeric($lehrveranstaltung_id)) + { + $this->errormsg = "Lehrveranstaltung ID muss eine gültige Zahl sein"; + return false; + } + + if(!is_numeric($pruefung_id)) + { + $this->errormsg = "Prüfung ID muss eine gültige Zahl sein"; + return false; + } + + $qry = 'INSERT INTO campus.tbl_lehrveranstaltung_pruefung (lehrveranstaltung_id, pruefung_id) VALUES (' + .$this->db_add_param($lehrveranstaltung_id).', ' + .$this->db_add_param($pruefung_id).');'; + + if(!$this->db_query($qry)) + { + $this->errormsg = "Lehrveranstaltungen konnten nicht gespeichert werden."; + return false; + } + return true; + } + + public function getLehrveranstaltungenByPruefung() + { + $qry = 'SELECT * FROM campus.tbl_lehrveranstaltung_pruefung WHERE pruefung_id='.$this->db_add_param($this->pruefung_id).';'; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new stdClass(); + $obj->lehrveranstaltung_pruefung_id = $row->lehrveranstaltung_pruefung_id; + $obj->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $obj->pruefung_id = $row->pruefung_id; + array_push($this->lehrveranstaltungen, $obj); + } + return true; + } + else + { + $this->errormsg = "Zugehörige Lehrveranstaltungen konnten nicht geladen werden."; + return false; + } + + } + + public function saveTerminPruefung($pruefung_id, $beginn, $ende, $max, $min) + { + if(!is_numeric($pruefung_id)) + { + $this->errormsg = "Pruefung ID muss eine gültige Zahl sein"; + return false; + } + + $qry = 'INSERT INTO campus.tbl_pruefungstermin (pruefung_id, von, bis, teilnehmer_max, teilnehmer_min) VALUES (' + . $this->db_add_param($pruefung_id).', ' + . $this->db_add_param($beginn).', ' + . $this->db_add_param($ende).', ' + . $this->db_add_param($max).', ' + . $this->db_add_param($min).');'; + + if(!$this->db_query($qry)) + { + $this->errormsg = "Termine konnten nicht gespeichert werden!"; + return false; + } + return true; + } + + public function getTermineByPruefung() + { + $qry = 'SELECT * FROM campus.tbl_pruefungstermin WHERE pruefung_id='.$this->db_add_param($this->pruefung_id).';'; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new stdClass(); + $obj->pruefungstermin_id = $row->pruefungstermin_id; + $obj->pruefung_id = $row->pruefung_id; + $obj->von = $row->von; + $obj->bis = $row->bis; + $obj->max = $row->teilnehmer_max; + $obj->min = $row->teilnehmer_min; + array_push($this->termine, $obj); + } + return true; + } + else + { + $this->errormsg = "Zugehörige Termine konnten nicht geladen werden."; + return false; + } + + } + + public function updateTerminPruefung($pruefungstermin_id, $pruefung_id, $beginn, $ende, $max, $min) + { + if(!is_numeric($pruefungstermin_id)) + { + $this->errormsg = "Pruefungstermin ID muss eine gültige Zahl sein."; + return false; + } + + $qry = 'UPDATE campus.tbl_pruefungstermin SET ' + . 'pruefung_id='.$this->db_add_param($pruefung_id).', ' + . 'von='.$this->db_add_param($beginn).', ' + . 'bis='.$this->db_add_param($ende).', ' + . 'teilnehmer_max='.$this->db_add_param($max).', ' + . 'teilnehmer_min='.$this->db_add_param($min).' ' + . 'WHERE pruefungstermin_id='.$this->db_add_param($pruefungstermin_id).';'; + + if(!$this->db_query($qry)) + { + $this->errormsg = "Termin konnte nicht geändert werden."; + return false; + } + return true; + } + + public function pruefungStornieren($pruefung_id) + { + if(!is_numeric($pruefung_id)) + { + $this->errormsg = "Pruefung ID muss eine gültige Zahl sein."; + return false; + } + + $qry = 'UPDATE campus.tbl_pruefung SET storniert=true WHERE pruefung_id='.$this->db_add_param($pruefung_id).';'; + + if(!$this->db_query($qry)) + { + $this->errormsg = "Prüfung konnte nicht storniert werden."; + return false; + } + return true; + } + + public function deleteLehrveranstaltungPruefung($lehrveranstaltung_id, $pruefung_id){ + if(!is_numeric($lehrveranstaltung_id)) + { + $this->errormsg = "Lehrveranstaltung ID muss eine gültige Zahl sein."; + return false; + } + if(!is_numeric($pruefung_id)) + { + $this->errormsg = "Prüfung ID muss eine gültige Zahl sein."; + return false; + } + + $qry = 'DELETE FROM campus.tbl_lehrveranstaltung_pruefung WHERE lehrveranstaltung_id='.$this->db_add_param($lehrveranstaltung_id).' AND pruefung_id='.$this->db_add_param($pruefung_id).';'; + + if(!$this->db_query($qry)) + { + $this->errormsg = 'Lehrveranstaltung konnte nicht gelöscht werden.'; + return false; + } + return true; + } + + public function deleteTerminPruefung($pruefungstermin_id) + { + if(!is_numeric($pruefungstermin_id)) + { + $this->errormsg = "Pruefungstermin ID muss eine gültige Zahl sein."; + return false; + } + + $qry = 'DELETE FROM campus.tbl_pruefungstermin WHERE pruefungstermin_id='.$this->db_add_param($pruefungstermin_id).';'; + + if(!$this->db_query($qry)) + { + $this->errormsg = 'Termin konnte nicht gelöscht werden.'; + return false; + } + return true; + } +} \ No newline at end of file diff --git a/include/pruefungsfenster.class.php b/include/pruefungsfenster.class.php new file mode 100644 index 000000000..f83365e80 --- /dev/null +++ b/include/pruefungsfenster.class.php @@ -0,0 +1,310 @@ + + */ + +require_once(dirname(__FILE__) . '/basis_db.class.php'); + +class pruefungsfenster extends basis_db { + + public $new; // boolean + public $result = array(); // pruefungsfenster Objekt + + //Tabellenspalten in DB + public $pruefungsfenster_id; //bigint + public $studiensemester_kurzbz; //varchar(16) + public $oe_kurzbz; //varchar(32) + public $start; //date + public $ende; //date + + /** + * Konstruktor + * @param pruefungsfenster_id ID des zu ladenden Pruefungfensters + */ + public function __construct($pruefungsfenster_id = null) { + parent::__construct(); + + if ($pruefungsfenster_id != null) + $this->load($pruefungsfenster_id); + } + + public function __set($name, $value) { + switch ($name) { + case 'pruefungsfenster_id': + if (!is_numeric($value)) + throw new Exception('Attribute pruefungsfenster_id must be numeric!"'); + $this->$name = $value; + break; + default: + $this->$name = $value; + } + } + + public function __get($name) { + return $this->$name; + } + + /** + * Lädt einen Pruefungsfensterdatensatz + * @param $pruefungsfenster_id ID des Prüfungsfensters + * @return true, wenn ok; false im Fehlerfall + */ + public function load($pruefungsfenster_id) { + if(!is_numeric($pruefungsfenster_id)) + { + $this->errormsg = "Prüfungsfenster ID ist keine gültige Zahl."; + return false; + } + + $qry = 'SELECT * FROM campus.tbl_pruefungsfenster' + . ' WHERE pruefungsfenster_id='.$this->db_add_param($pruefungsfenster_id).';'; + + if(!$this->db_query($qry)) + { + $this->errormsg = "Fehler beim Laden des Prüfungsfensters."; + return false; + } + + if($row = $this->db_fetch_object()) + { + $this->pruefungsfenster_id = $row->pruefungsfenster_id; + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->oe_kurzbz = $row->oe_kurzbz; + $this->start = $row->start; + $this->ende = $row->ende; + } + else + { + $this->errormsg = "Keine Datensatz mit dieser ID vorhanden."; + return false; + } + return true; + } + + /** + * speichert den aktuellen Datensatz + */ + public function save() { + if ($this->new) { + $qry = 'INSERT INTO campus.tbl_pruefungsfenster (studiensemester_kurzbz, oe_kurzbz, start, ende) VALUES (' . + $this->db_add_param($this->studiensemester_kurzbz) . ', ' . + $this->db_add_param($this->oe_kurzbz) . ', ' . + $this->db_add_param($this->start) . ', ' . + $this->db_add_param($this->ende) . ');'; + } else { + $qry = 'UPDATE campus.tbl_pruefungsfenster SET '. + 'studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).', '. + 'oe_kurzbz='.$this->db_add_param($this->oe_kurzbz).', '. + 'start='.$this->db_add_param($this->start).', '. + 'ende='.$this->db_add_param($this->ende).' '. + 'WHERE pruefungsfenster_id='.$this->db_add_param($this->pruefungsfenster_id).';'; + } + if (!$this->db_query($qry)) { + $this->errormsg = "Datensatz konnte nicht gespeichert werden"; + return false; + } + return true; + } + + /** + * lädt alle vorhandenen Prüfungsfenster + * @param Datenbankspalte nach der sortiert werden soll + * @return true, wenn ok; false im Fehlerfall + */ + public function getAll($sort=null) { + + $qry = "SELECT * FROM campus.tbl_pruefungsfenster"; + + if($sort != null) + { + $qry.= " ORDER BY ".$sort." ASC;"; + } + else + { + $qry .= ";"; + } + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new pruefungsfenster(); + + $obj->pruefungsfenster_id = $row->pruefungsfenster_id; + $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $obj->oe_kurzbz = $row->oe_kurzbz; + $obj->start = $row->start; + $obj->ende = $row->ende; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Prüfungsfenster'; + return false; + } + } + + /** + * lädt alle Prüfungsfenster zu den angebenen Organisationseinheiten + * Es kann auch ein Array mit mehreren OEs übergeben werden. + * @param type $oe_kurzbz + */ + public function getByOe($oe_kurzbz) { + + } + + /** + * löscht das Prüfungsfenster mit der angegebenen ID + * @param $pruefungsfenster_id ID des Prüfungsfensters + * @return true, wenn ok; false, im Fehlerfall + */ + public function delete($pruefungsfenster_id) + { + if(!is_numeric($pruefungsfenster_id)) + { + $this->errormsg = "Fehler: Die ID ist keine gültige Zahl."; + return false; + } + + $qry = 'DELETE FROM campus.tbl_pruefungsfenster' + . ' WHERE pruefungsfenster_id='.$this->db_add_param($pruefungsfenster_id) + . ';'; + + if(!$this->db_query($qry)) + { + $this->errormsg = 'Fehler: Datensatz konnte nicht gelöscht werden.'; + return false; + } + + return true; + } + + + /** + * prüft die Attribute dieser Klasse auf Gültigkeit + * @return true, wenn ok; false, im Fehlerfall + */ + protected function validate() { + + } + + /** + * + * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @param String $sort Spaltenname, nachdem sortiert werden soll + * @return boolean true, wenn ok; false im Fehlerfall + */ + public function getByStudiensemester($studiensemester_kurzbz, $sort=null) + { + $qry = "SELECT * FROM campus.tbl_pruefungsfenster WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + if($sort != null) + { + $qry.= " ORDER BY ".$sort." ASC;"; + } + else + { + $qry .= ";"; + } + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new pruefungsfenster(); + $obj->pruefungsfenster_id = $row->pruefungsfenster_id; + $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $obj->oe_kurzbz = $row->oe_kurzbz; + $obj->start = $row->start; + $obj->ende = $row->ende; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Prüfungsfenster'; + return false; + } + } + + /** + * Baut die Datenstruktur für senden als JSON Objekt auf + */ + public function cleanResult() + { + $data = array(); + if(count($this->result)>0) + { + foreach($this->result as $prfFenster) + { + $obj = new stdClass(); + $obj->pruefungsfenster_id = $prfFenster->pruefungsfenster_id; + $obj->studiensemester_kurzbz = $prfFenster->studiensemester_kurzbz; + $obj->oe_kurzbz = $prfFenster->oe_kurzbz; + $obj->start = $prfFenster->start; + $obj->ende = $prfFenster->ende; + $data[]=$obj; + } + } + else + { + $obj = new stdClass(); + $obj->pruefungsfenster_id = $this->pruefungsfenster_id; + $obj->studiensemester_kurzbz = $this->studiensemester_kurzbz; + $obj->oe_kurzbz = $this->oe_kurzbz; + $obj->start = $this->start; + $obj->ende = $this->ende; + $data[]=$obj; + } + return $data; + } + + public function hasPruefungen($pruefungsfenster_id) + { + if(!is_numeric($pruefungsfenster_id)) + { + $this->errormsg = "Die Prüfungsfenster ID ist keine gültige Zahl."; + return false; + } + $qry = 'SELECT * FROM campus.tbl_pruefung WHERE pruefungsfenster_id='.$this->db_add_param($pruefungsfenster_id).';'; + + if($this->db_query($qry)) + { + if($this->db_num_rows()>0) + { + return true; + } + return false; + } + else + { + $this->errormsg = 'Daten konnten nicht gelsesen werden.'; + return false; + } + + } +} + +?> diff --git a/include/pruefungstermin.class.php b/include/pruefungstermin.class.php new file mode 100644 index 000000000..13bb2bbbf --- /dev/null +++ b/include/pruefungstermin.class.php @@ -0,0 +1,120 @@ + + */ + +require_once(dirname(__FILE__) . '/basis_db.class.php'); + +class pruefungstermin extends basis_db{ + public $new; + public $result = array(); + + public $pruefungstermin_id; //bigint + public $pruefung_id; //bigint + public $von; //timestamp without timezone + public $bis; //timestamp without timezone + public $teilnehmer_max; //smallint + public $teilnehmer_min; //smallint + + /** + * Konstruktor + * @param pruefungsfenster_id ID des zu ladenden Pruefungfensters + */ + public function __construct($pruefungstermin_id = null) { + parent::__construct(); + + if ($pruefungstermin_id != null) + $this->load($pruefungstermin_id); + } + + public function __set($name, $value) { + switch ($name) { + case 'pruefungstermin_id': + if (!is_numeric($value)) + throw new Exception('Attribute pruefungstermin_id must be numeric!"'); + $this->$name = $value; + break; + default: + $this->$name = $value; + } + } + + public function __get($name) { + return $this->$name; + } + + /** + * Lädt einen Prüfungstermin + * @param Integer Prüfungstermin ID + */ + public function load($pruefungstermin_id) + { + if(!is_numeric($pruefungstermin_id)) + { + $this->errormsg = "Pruefungstermin ID muss eine gültige Zahl sein"; + return false; + } + + } + + public function save() + { + + } + + /** + * Lädt alle Prüfungstermine + */ + public function getAll() + { + + } + + /** + * Lädt alle Prüfungstypen aus der Datenbank + * @return Array/Boolean Ein Array mit den Daten, wenn ok; ansonsten false + */ + public function getAllPruefungstypen() + { + $qry = 'SELECT * FROM lehre.tbl_pruefungstyp;'; + + if($this->db_query($qry)) + { + $result = array(); + while($row = $this->db_fetch_object()) + { + $obj = new stdClass(); + $obj->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz; + $obj->beschreibung = $row->beschreibung; + $obj->abschluss = $row->abschluss; + array_push($result, $obj); + } + } + else + { + $this->errormsg = "Prüfungstypen konnten nicht geladen werden."; + return false; + } + return $result; + + } +}