Beim Status des Prestudenten kann nun zusaetzlich der Studienplan gespeichert werden; Erweiterung der Studienplan ansicht für Studierende inklusive Anmeldung zu Lehrveranstaltungen

This commit is contained in:
Andreas Österreicher
2013-12-17 15:30:26 +00:00
parent 28107e830e
commit efff63fa6d
17 changed files with 766 additions and 307 deletions
+2 -2
View File
@@ -74,7 +74,7 @@ class benutzergruppe extends basis_db
}
else
{
$this->errormsg = 'Es wurde keine Datensatz gefunden';
$this->errormsg = 'Es wurde kein Datensatz gefunden';
return false;
}
}
@@ -212,4 +212,4 @@ class benutzergruppe extends basis_db
}
}
}
?>
?>
+193 -167
View File
@@ -1,5 +1,4 @@
<?php
/* Copyright (C) 2006 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
@@ -152,15 +151,18 @@ class lehrveranstaltung extends basis_db
* Liefert alle Lehrveranstaltungen
* @return true wenn ok, false im Fehlerfall
*/
public function getAll() {
public function getAll()
{
$qry = "SELECT * FROM lehre.tbl_lehrveranstaltung;";
if (!$this->db_query($qry)) {
if (!$this->db_query($qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
while ($row = $this->db_fetch_object()) {
while ($row = $this->db_fetch_object())
{
$lv_obj = new lehrveranstaltung();
$lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
@@ -216,7 +218,8 @@ class lehrveranstaltung extends basis_db
* @param $semester
* @return true wenn ok, false im Fehlerfall
*/
public function load_lva($studiengang_kz, $semester = null, $lehreverzeichnis = null, $lehre = null, $aktiv = null, $sort = null, $oe_kurzbz=null, $lehrtyp=null) {
public function load_lva($studiengang_kz, $semester = null, $lehreverzeichnis = null, $lehre = null, $aktiv = null, $sort = null, $oe_kurzbz=null, $lehrtyp=null)
{
//Variablen pruefen
if($semester == "null")
$semester = null;
@@ -224,19 +227,23 @@ class lehrveranstaltung extends basis_db
if($lehreverzeichnis == "null")
$lehreverzeichnis = null;
if (!is_numeric($studiengang_kz) || $studiengang_kz == '') {
if (!is_numeric($studiengang_kz) || $studiengang_kz == '')
{
$this->errormsg = 'studiengang_kz muss eine gueltige Zahl sein';
return false;
}
if (!is_null($semester) && (!is_numeric($semester) && $semester != '')) {
if (!is_null($semester) && (!is_numeric($semester) && $semester != ''))
{
$this->errormsg = 'Semester muss eine gueltige Zahl sein';
return false;
}
if (!is_null($aktiv) && !is_bool($aktiv)) {
if (!is_null($aktiv) && !is_bool($aktiv))
{
$this->errormsg = 'Aktivkz muss ein boolscher Wert sein';
return false;
}
if (!is_null($lehre) && !is_bool($lehre)) {
if (!is_null($lehre) && !is_bool($lehre))
{
$this->errormsg = 'Lehre muss ein boolscher Wert sein';
return false;
}
@@ -264,25 +271,25 @@ class lehrveranstaltung extends basis_db
$qry .= " AND lehre ";
if(!is_null($oe_kurzbz))
$qry .= " AND oe_kurzbz='".$oe_kurzbz."'";
$qry .= " AND oe_kurzbz=".$this->db_add_param($oe_kurzbz);
if(!is_null($lehrtyp))
$qry .= " AND lehrtyp_kurzbz='".$lehrtyp."'";
$qry .= " AND lehrtyp_kurzbz=".$this->db_add_param($lehrtyp);
if ($sort == "bezeichnung")
$qry .= " ORDER BY bezeichnung";
elseif (is_null($sort) || empty($sort))
if (is_null($sort) || empty($sort))
$qry .= " ORDER BY semester, bezeichnung";
else
$qry .= " ORDER BY $sort ";
//Datensaetze laden
if (!$this->db_query($qry)) {
if (!$this->db_query($qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
while ($row = $this->db_fetch_object()) {
while ($row = $this->db_fetch_object())
{
$lv_obj = new lehrveranstaltung();
$lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
@@ -337,33 +344,44 @@ class lehrveranstaltung extends basis_db
* @param $semester
* @return true wenn ok, false im Fehlerfall
*/
public function load_lva_le($studiengang_kz, $studiensemester_kurzbz = null, $semester = null, $lehreverzeichnis = null, $lehre = null, $aktiv = null, $sort = null) {
public function load_lva_le($studiengang_kz, $studiensemester_kurzbz = null, $semester = null, $lehreverzeichnis = null, $lehre = null, $aktiv = null, $sort = null)
{
//Variablen pruefen
if (!is_numeric($studiengang_kz) || $studiengang_kz === '') {
if (!is_numeric($studiengang_kz) || $studiengang_kz === '')
{
$this->errormsg = 'studiengang_kz muss eine gueltige Zahl sein';
return false;
}
if (!is_null($semester) && (!is_numeric($semester) && $semester != '')) {
if (!is_null($semester) && (!is_numeric($semester) && $semester != ''))
{
$this->errormsg = 'Semester muss eine gueltige Zahl sein';
return false;
}
if (!is_null($aktiv) && !is_bool($aktiv)) {
if (!is_null($aktiv) && !is_bool($aktiv))
{
$this->errormsg = 'Aktiv muss ein boolscher Wert sein';
return false;
}
if (!is_null($lehre) && !is_bool($lehre)) {
if (!is_null($lehre) && !is_bool($lehre))
{
$this->errormsg = 'Lehre muss ein boolscher Wert sein';
return false;
}
$qry = "SELECT distinct lehre.tbl_lehrveranstaltung.*, tbl_lehreinheit.studiensemester_kurzbz FROM lehre.tbl_lehrveranstaltung,lehre.tbl_lehreinheit where tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id and studiengang_kz=" . $this->db_add_param($studiengang_kz, FHC_INTEGER);
$qry = "SELECT
distinct lehre.tbl_lehrveranstaltung.*, tbl_lehreinheit.studiensemester_kurzbz
FROM
lehre.tbl_lehrveranstaltung,lehre.tbl_lehreinheit
WHERE
tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id
AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
//Select Befehl zusammenbauen
if (!is_null($lehreverzeichnis))
$qry .= " AND lehreverzeichnis=" . $this->db_add_param($lehreverzeichnis);
else
$qry .= " AND lehreverzeichnis<>'' ";
//else
// $qry .= " AND lehreverzeichnis<>'' ";
if (!is_null($semester) && $semester != '')
$qry .= " AND semester=" . $this->db_add_param($semester);
@@ -383,20 +401,20 @@ class lehrveranstaltung extends basis_db
if (!is_null($lehre) && $lehre)
$qry .= " AND lehre ";
if ($sort == "bezeichnung")
$qry .= " ORDER BY bezeichnung";
elseif (is_null($sort) || empty($sort))
if (is_null($sort) || empty($sort))
$qry .= " ORDER BY semester, bezeichnung";
else
$qry .= " ORDER BY $sort ";
//Datensaetze laden
if (!$this->db_query($qry)) {
if (!$this->db_query($qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
while ($row = $this->db_fetch_object()) {
while ($row = $this->db_fetch_object())
{
$lv_obj = new lehrveranstaltung();
$lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
@@ -453,7 +471,8 @@ class lehrveranstaltung extends basis_db
* @param $student_uid
* @return true wenn ok, false im Fehlerfall
*/
public function load_lva_student($student_uid) {
public function load_lva_student($student_uid)
{
$qry = "SELECT * FROM lehre.tbl_lehrveranstaltung
WHERE lehrveranstaltung_id IN(SELECT lehrveranstaltung_id FROM campus.vw_student_lehrveranstaltung
WHERE uid=" . $this->db_add_param($student_uid) . ")
@@ -461,11 +480,13 @@ class lehrveranstaltung extends basis_db
ORDER BY semester, bezeichnung";
//Datensaetze laden
if (!$this->db_query($qry)) {
if (!$this->db_query($qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
while ($row = $this->db_fetch_object()) {
while ($row = $this->db_fetch_object())
{
$lv_obj = new lehrveranstaltung();
$lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
@@ -519,69 +540,86 @@ class lehrveranstaltung extends basis_db
* Prueft die Gueltigkeit der Variablen
* @return true wenn ok, false im Fehlerfall
*/
public function validate() {
public function validate()
{
//Laenge Pruefen
if (mb_strlen($this->bezeichnung) > 128) {
if (mb_strlen($this->bezeichnung) > 128)
{
$this->errormsg = 'Bezeichnung darf nicht laenger als 128 Zeichen sein';
return false;
}
if (mb_strlen($this->kurzbz) > 16) {
if (mb_strlen($this->kurzbz) > 16)
{
$this->errormsg = 'Kurzbez darf nicht laenger als 16 Zeichen sein';
return false;
}
if (mb_strlen($this->anmerkung) > 64) {
if (mb_strlen($this->anmerkung) > 64)
{
$this->errormsg = 'Anmerkung darf nicht laenger als 64 Zeichen sein';
return false;
}
if (mb_strlen($this->lehreverzeichnis) > 16) {
if (mb_strlen($this->lehreverzeichnis) > 16)
{
$this->errormsg = 'Lehreverzeichnis darf nicht laenger als 16 Zeichen sein';
return false;
}
if (mb_strlen($this->lvnr) > 32) {
if (mb_strlen($this->lvnr) > 32)
{
$this->errormsg = 'LVNR darf nicht laenger als 32 Zeichen sein';
return false;
}
if (!is_numeric($this->studiengang_kz)) {
if (!is_numeric($this->studiengang_kz))
{
$this->errormsg = 'Studiengang_kz ist ungueltig';
return false;
}
if ($this->semester != '' && !is_numeric($this->semester)) {
if ($this->semester != '' && !is_numeric($this->semester))
{
$this->errormsg = 'Semester ist ungueltig';
return false;
}
if ($this->planfaktor != '' && !is_numeric($this->planfaktor)) {
if ($this->planfaktor != '' && !is_numeric($this->planfaktor))
{
$this->errormsg = 'Planfaktor ist ungueltig';
return false;
}
if ($this->planlektoren != '' && !is_numeric($this->planlektoren)) {
if ($this->planlektoren != '' && !is_numeric($this->planlektoren))
{
$this->errormsg = 'Planlektoren ist ungueltig';
return false;
}
if ($this->ects != '' && !is_numeric($this->ects)) {
if ($this->ects != '' && !is_numeric($this->ects))
{
$this->errormsg = 'ECTS sind ungueltig';
return false;
}
if ($this->ects > 40) {
if ($this->ects > 40)
{
$this->errormsg = 'ECTS darf nicht groesser als 40 sein';
return false;
}
if ($this->semesterstunden != '' && !isint($this->semesterstunden)) {
if ($this->semesterstunden != '' && !isint($this->semesterstunden))
{
$this->errormsg = 'Semesterstunden muss ein eine gueltige ganze Zahl sein';
return false;
}
if ($this->sort != '' && !isint($this->sort)) {
if ($this->sort != '' && !isint($this->sort))
{
$this->errormsg = 'Sort muss ein eine gueltige ganze Zahl sein';
return false;
}
if ($this->incoming != '' && !isint($this->incoming)) {
if ($this->incoming != '' && !isint($this->incoming))
{
$this->errormsg = 'Sort muss ein eine gueltige ganze Zahl sein';
return false;
}
if ($this->anzahlsemester != '' && !isint($this->sort)) {
if ($this->anzahlsemester != '' && !isint($this->sort))
{
$this->errormsg = 'Anzahl Semester muss ein eine gueltige ganze Zahl sein';
return false;
}
if ($this->semesterwochen != '' && !isint($this->sort)) {
if ($this->semesterwochen != '' && !isint($this->sort))
{
$this->errormsg = 'Semesterwochen muss ein eine gueltige ganze Zahl sein';
return false;
}
@@ -593,7 +631,8 @@ class lehrveranstaltung extends basis_db
* Speichert den aktuellen Datensatz
* @return true wenn ok, false im Fehlerfall
*/
public function save($new = null) {
public function save($new = null)
{
if ($new == null)
$new = $this->new;
@@ -601,7 +640,8 @@ class lehrveranstaltung extends basis_db
if (!$this->validate())
return false;
if ($new) {
if ($new)
{
//Neuen Datensatz anlegen
$qry = 'BEGIN; INSERT INTO lehre.tbl_lehrveranstaltung (studiengang_kz, bezeichnung, kurzbz, lehrform_kurzbz,
semester, ects, semesterstunden, anmerkung, lehre, lehreverzeichnis, aktiv, ext_id, insertamum,
@@ -641,10 +681,13 @@ class lehrveranstaltung extends basis_db
$this->db_add_param($this->anzahlsemester) . ',' .
$this->db_add_param($this->semesterwochen) . ',' .
$this->db_add_param($this->lvnr) . ');';
} else {
}
else
{
//bestehenden Datensatz akualisieren
//Pruefen ob lehrveranstaltung_id eine gueltige Zahl ist
if (!is_numeric($this->lehrveranstaltung_id) || $this->lehrveranstaltung_id == '') {
if (!is_numeric($this->lehrveranstaltung_id) || $this->lehrveranstaltung_id == '')
{
$this->errormsg = 'lehrveranstaltung_id muss eine gueltige Zahl sein';
return false;
}
@@ -685,27 +728,37 @@ class lehrveranstaltung extends basis_db
'WHERE lehrveranstaltung_id = ' . $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER, false) . ';';
}
if ($this->db_query($qry)) {
if ($new) {
if ($this->db_query($qry))
{
if ($new)
{
$qry = "SELECT currval('lehre.tbl_lehrveranstaltung_lehrveranstaltung_id_seq') as id";
if ($this->db_query($qry)) {
if ($row = $this->db_fetch_object()) {
if ($this->db_query($qry))
{
if ($row = $this->db_fetch_object())
{
$this->lehrveranstaltung_id = $row->id;
$this->db_query('COMMIT;');
return true;
} else {
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Sequence';
$this->db_query('ROLLBACK');
return false;
}
} else {
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Sequence';
$this->db_query('ROLLBACK');
return false;
}
}
return true;
} else {
}
else
{
$this->db_query('ROLLBACK');
$this->errormsg = 'Fehler beim Speichern des Datensatzes';
return false;
@@ -718,8 +771,10 @@ class lehrveranstaltung extends basis_db
* @param studiengang_kz, uid, studiensemester_kurzbz
* @return true wenn ok, false wenn Fehler
*/
public function loadLVAfromMitarbeiter($studiengang_kz, $uid, $studiensemester_kurzbz) {
if (!is_numeric($studiengang_kz)) {
public function loadLVAfromMitarbeiter($studiengang_kz, $uid, $studiensemester_kurzbz)
{
if (!is_numeric($studiengang_kz))
{
$this->errormsg = 'Studiengang_kz ist ungueltig';
return false;
}
@@ -732,8 +787,10 @@ class lehrveranstaltung extends basis_db
tbl_lehreinheitmitarbeiter.lehreinheit_id = tbl_lehreinheit.lehreinheit_id AND
tbl_lehreinheit.studiensemester_kurzbz = " . $this->db_add_param($studiensemester_kurzbz) . " AND
tbl_lehreinheitmitarbeiter.mitarbeiter_uid=" . $this->db_add_param($uid) . ";";
if ($this->db_query($qry)) {
while ($row = $this->db_fetch_object()) {
if ($this->db_query($qry))
{
while ($row = $this->db_fetch_object())
{
$lv_obj = new lehrveranstaltung();
$lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
@@ -781,7 +838,8 @@ class lehrveranstaltung extends basis_db
}
return true;
}
else {
else
{
$this->errormsg = 'Fehler beim Lesen aus der Datenbank';
return false;
}
@@ -794,12 +852,15 @@ class lehrveranstaltung extends basis_db
* $order Sortierkriterium
* @return array mit Lehrferanstaltungen oder false=fehler
*/
public function getTab($stg = null, $sem = null, $order = 'lehrveranstaltung_id') {
if ($stg != null && !is_numeric($stg)) {
public function getTab($stg = null, $sem = null, $order = 'lehrveranstaltung_id')
{
if ($stg != null && !is_numeric($stg))
{
$this->errormsg = 'Studiengang_kz muss eine gueltige Zahl sein';
return false;
}
if ($sem != null && !is_numeric($sem)) {
if ($sem != null && !is_numeric($sem))
{
$this->errormsg = 'Semester muss eine gueltige Zahl sein';
return false;
}
@@ -809,15 +870,17 @@ class lehrveranstaltung extends basis_db
$sql_query .= " WHERE true";
if ($stg != null)
$sql_query .= " AND studiengang_kz='$stg'";
$sql_query .= " AND studiengang_kz=".$this->db_add_param($stg);
if ($sem != null)
$sql_query .= " AND semester='$sem'";
$sql_query .= " AND semester=".$this->db_add_param($sem);
$sql_query .= " ORDER BY $order";
if ($this->db_query($sql_query)) {
while ($row = $this->db_fetch_object()) {
if ($this->db_query($sql_query))
{
while ($row = $this->db_fetch_object())
{
$l = new lehrveranstaltung();
$l->lehrveranstaltung_id = $row->lehrveranstaltung_id;
@@ -862,7 +925,8 @@ class lehrveranstaltung extends basis_db
$this->lehrveranstaltungen[] = $l;
}
}
else {
else
{
$this->errormsg = $this->db_last_error();
return false;
}
@@ -875,8 +939,10 @@ class lehrveranstaltung extends basis_db
* @param $semester Semester
* @return array mit Moodlekurs Ids oder false=fehler
*/
public function getMoodleKurse($lehrveranstaltung_id, $semester) {
if ($lehrveranstaltung_id == '' || $semester == '') {
public function getMoodleKurse($lehrveranstaltung_id, $semester)
{
if ($lehrveranstaltung_id == '' || $semester == '')
{
$this->errormsg = 'Id und Semester muss übergeben werden.';
return false;
}
@@ -888,12 +954,16 @@ class lehrveranstaltung extends basis_db
$moodleArray = array();
if ($result = $this->db_query($qry)) {
while ($row = $this->db_fetch_object($result)) {
if ($result = $this->db_query($qry))
{
while ($row = $this->db_fetch_object($result))
{
$moodleArray[] = $row->mdl_course_id;
}
return $moodleArray;
} else {
}
else
{
$this->errormsg = 'Moodlekurs konnte nicht geladen werden';
return false;
}
@@ -904,7 +974,8 @@ class lehrveranstaltung extends basis_db
* @param $ids Array mit den LV ids
* @return true wenn ok, false im Fehlerfall
*/
public function loadArray($ids) {
public function loadArray($ids)
{
if (count($ids) == 0)
return true;
@@ -913,12 +984,14 @@ class lehrveranstaltung extends basis_db
$qry = 'SELECT * FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id in(' . $ids . ')';
$qry .=" ORDER BY bezeichnung";
if (!$result = $this->db_query($qry)) {
if (!$result = $this->db_query($qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
while ($row = $this->db_fetch_object($result)) {
while ($row = $this->db_fetch_object($result))
{
$lv_obj = new lehrveranstaltung();
$lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
@@ -975,8 +1048,10 @@ class lehrveranstaltung extends basis_db
* @param $semeser Semester optional
* @return boolean true wenn ok, false im Fehlerfall
*/
public function loadLehrveranstaltungStudienplan($studienplan_id, $semester = null) {
if (!is_numeric($studienplan_id) || $studienplan_id === '') {
public function loadLehrveranstaltungStudienplan($studienplan_id, $semester = null)
{
if (!is_numeric($studienplan_id) || $studienplan_id === '')
{
$this->errormsg = 'StudienplanID ist ungueltig';
return false;
}
@@ -992,13 +1067,16 @@ class lehrveranstaltung extends basis_db
USING(lehrveranstaltung_id)
WHERE tbl_studienplan_lehrveranstaltung.studienplan_id=" . $this->db_add_param($studienplan_id, FHC_INTEGER);
if (!is_null($semester)) {
if (!is_null($semester))
{
$qry.=" AND tbl_studienplan_lehrveranstaltung.semester=" . $this->db_add_param($semester, FHC_INTEGER);
}
$qry.=" ORDER BY semester, sort";
$this->lehrveranstaltungen = array();
if ($result = $this->db_query($qry)) {
while ($row = $this->db_fetch_object($result)) {
if ($result = $this->db_query($qry))
{
while ($row = $this->db_fetch_object($result))
{
$obj = new lehrveranstaltung();
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
@@ -1053,7 +1131,8 @@ class lehrveranstaltung extends basis_db
}
return true;
}
else {
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
@@ -1062,10 +1141,13 @@ class lehrveranstaltung extends basis_db
/**
* Liefert die Lehrveranstaltungen als verschachtelten Tree
*/
public function getLehrveranstaltungTree() {
public function getLehrveranstaltungTree()
{
$tree = array();
foreach ($this->lehrveranstaltungen as $row) {
if ($row->studienplan_lehrveranstaltung_id_parent == '') {
foreach ($this->lehrveranstaltungen as $row)
{
if ($row->studienplan_lehrveranstaltung_id_parent == '')
{
$tree[$row->studienplan_lehrveranstaltung_id] = $row;
$tree[$row->studienplan_lehrveranstaltung_id]->childs = $this->getLehrveranstaltungTreeChilds($row->studienplan_lehrveranstaltung_id);
}
@@ -1076,10 +1158,13 @@ class lehrveranstaltung extends basis_db
/**
* Generiert die Subtrees des Lehrveranstaltungstrees
*/
protected function getLehrveranstaltungTreeChilds($studienplan_lehrveranstaltung_id) {
protected function getLehrveranstaltungTreeChilds($studienplan_lehrveranstaltung_id)
{
$childs = array();
foreach ($this->lehrveranstaltungen as $row) {
if ($row->studienplan_lehrveranstaltung_id_parent === $studienplan_lehrveranstaltung_id) {
foreach ($this->lehrveranstaltungen as $row)
{
if ($row->studienplan_lehrveranstaltung_id_parent === $studienplan_lehrveranstaltung_id)
{
$childs[$row->studienplan_lehrveranstaltung_id] = $row;
$childs[$row->studienplan_lehrveranstaltung_id]->childs = $this->getLehrveranstaltungTreeChilds($row->studienplan_lehrveranstaltung_id);
}
@@ -1087,69 +1172,6 @@ class lehrveranstaltung extends basis_db
return $childs;
}
/**
* Speichert die Zuordnung einer Lehrveranstaltung zu einem Studienplan
* @return true wenn ok, false im Fehlerfall
*/
public function saveStudienplanLehrveranstaltung() {
if ($this->new) {
//Neuen Datensatz einfuegen
$qry = 'BEGIN;INSERT INTO lehre.tbl_studienplan_lehrveranstaltung (studienplan_id, lehrveranstaltung_id,
semester,studienplan_lehrveranstaltung_id_parent,pflicht, koordinator,
insertamum, insertvon) VALUES (' .
$this->db_add_param($this->studienplan_id, FHC_INTEGER) . ', ' .
$this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER) . ', ' .
$this->db_add_param($this->stpllv_semester, FHC_INTEGER) . ', ' .
$this->db_add_param($this->studienplan_lehrveranstaltung_id_parent, FHC_INTEGER) . ', ' .
$this->db_add_param($this->stpllv_pflicht, FHC_BOOLEAN) . ', ' .
$this->db_add_param($this->stpllv_koordinator) . ', ' .
'now(), ' .
$this->db_add_param($this->insertvon) . ');';
} else {
//Pruefen ob studienplan_id eine gueltige Zahl ist
if (!is_numeric($this->studienplan_lehrveranstaltung_id)) {
$this->errormsg = 'studienplan_lehrveranstaltung_id muss eine gueltige Zahl sein';
return false;
}
$qry = 'UPDATE lehre.tbl_studienplan_lehrveranstaltung SET' .
' studienplan_id=' . $this->db_add_param($this->studienplan_id, FHC_INTEGER) . ', ' .
' lehrveranstaltung_id=' . $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER) . ', ' .
' semester=' . $this->db_add_param($this->stpllv_semester, FHC_INTEGER) . ', ' .
' studienplan_lehrveranstaltung_id_parent=' . $this->db_add_param($this->studienplan_lehrveranstaltung_id_parent, FHC_INTEGER) . ', ' .
' pflicht=' . $this->db_add_param($this->stpllv_pflicht, FHC_BOOLEAN) . ', ' .
' koordinator=' . $this->db_add_param($this->stpllv_koordinator) . ', ' .
' updateamum= now(), ' .
' updatevon=' . $this->db_add_param($this->updatevon) . ' ' .
' WHERE studienplan_lehrveranstaltung_id=' . $this->db_add_param($this->studienplan_lehrveranstaltung_id, FHC_INTEGER, false) . ';';
}
if ($this->db_query($qry)) {
if ($this->new) {
//naechste ID aus der Sequence holen
$qry = "SELECT currval('lehre.seq_studienplan_studienplan_lehrveranstaltung_id') as id;";
if ($this->db_query($qry)) {
if ($row = $this->db_fetch_object()) {
$this->studienplan_lehrveranstaltung_id = $row->id;
$this->db_query('COMMIT');
} else {
$this->db_query('ROLLBACK');
$this->errormsg = "Fehler beim Auslesen der Sequence";
return false;
}
} else {
$this->db_query('ROLLBACK');
$this->errormsg = 'Fehler beim Auslesen der Sequence';
return false;
}
}
} else {
$this->errormsg = 'Fehler beim Speichern des Datensatzes';
return false;
}
return $this->studienplan_lehrveranstaltung_id;
}
/**
* Baut die Datenstruktur für senden als JSON Objekt auf
*/
@@ -1311,9 +1333,13 @@ class lehrveranstaltung extends basis_db
*/
public function saveKompatibleLehrveranstaltung($lehrveranstaltung_id, $lehrveranstaltung_id_kompatibel)
{
$qry = 'SELECT * FROM lehre.tbl_lehrveranstaltung_kompatibel WHERE
lehrveranstaltung_id='.$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER).' AND
lehrveranstaltung_id_kompatibel='.$this->db_add_param($lehrveranstaltung_id_kompatibel, FHC_INTEGER).';';
$qry = 'SELECT
*
FROM
lehre.tbl_lehrveranstaltung_kompatibel
WHERE
lehrveranstaltung_id='.$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER).'
AND lehrveranstaltung_id_kompatibel='.$this->db_add_param($lehrveranstaltung_id_kompatibel, FHC_INTEGER).';';
if($this->db_query($qry))
{
@@ -1397,21 +1423,21 @@ class lehrveranstaltung extends basis_db
if(!is_null($lehrtyp))
$qry .= " AND lehrtyp_kurzbz='".$lehrtyp."'";
if ($sort == "bezeichnung")
$qry .= " ORDER BY bezeichnung";
// elseif (is_null($sort) || empty($sort))
// $qry .= " ORDER BY semester, bezeichnung";
// else
// $qry .= " ORDER BY $sort ";
if (is_null($sort) || empty($sort))
$qry .= " ORDER BY semester, bezeichnung";
else
$qry .= " ORDER BY $sort ";
$qry .= ";";
//Datensaetze laden
if (!$this->db_query($qry)) {
if (!$this->db_query($qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
while ($row = $this->db_fetch_object()) {
while ($row = $this->db_fetch_object())
{
$lv_obj = new lehrveranstaltung();
$lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
+81 -7
View File
@@ -109,7 +109,7 @@ class lvangebot extends basis_db
* @param lv_id ID der LV, dessen Angebote geladen werden sollen
* @return true wenn ok, false im Fehlerfall
*/
public function getAllFromLvId($lv_id)
public function getAllFromLvId($lv_id, $studiensemester_kurzbz=null)
{
if(!is_numeric($lv_id))
{
@@ -117,10 +117,15 @@ class lvangebot extends basis_db
return false;
}
$qry='SELECT tbl_lvangebot.* FROM lehre.tbl_lvangebot, public.tbl_studiensemester as stsem
WHERE tbl_lvangebot.studiensemester_kurzbz=stsem.studiensemester_kurzbz
AND lehrveranstaltung_id='.$this->db_add_param($lv_id, FHC_INTEGER, false).
'ORDER BY stsem.start';
$qry='SELECT
tbl_lvangebot.*
FROM
lehre.tbl_lvangebot
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE lehrveranstaltung_id='.$this->db_add_param($lv_id, FHC_INTEGER, false);
if(!is_null($studiensemester_kurzbz))
$qry.=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
$qry.= ' ORDER BY start';
if($this->db_query($qry))
{
@@ -333,10 +338,10 @@ class lvangebot extends basis_db
* Laedt das LV-Angebot eines gesammten Studienplanes
* @param $studienplan_id ID des Studienplanes
*/
public function getLVAngebotFromStudienplan($studienplan_id, $studiensemester_arr=null)
public function getLVAngebotFromStudienplan($studienplan_id, $studiensemester_arr=null, $kompatible=false)
{
$qry = "SELECT
*
tbl_lvangebot.*
FROM
lehre.tbl_studienplan_lehrveranstaltung
JOIN lehre.tbl_lvangebot USING(lehrveranstaltung_id)
@@ -346,6 +351,23 @@ class lvangebot extends basis_db
if(!is_null($studiensemester_arr))
$qry.=" AND tbl_lvangebot.studiensemester_kurzbz IN(".$this->implode4SQL($studiensemester_arr).")";
if($kompatible)
{
$qry.=" UNION
SELECT
tbl_lvangebot.*
FROM
lehre.tbl_studienplan_lehrveranstaltung
JOIN lehre.tbl_lehrveranstaltung_kompatibel USING(lehrveranstaltung_id)
JOIN lehre.tbl_lvangebot ON (tbl_lvangebot.lehrveranstaltung_id=tbl_lehrveranstaltung_kompatibel.lehrveranstaltung_id_kompatibel)
WHERE
tbl_studienplan_lehrveranstaltung.studienplan_id=".$this->db_add_param($studienplan_id);
if(!is_null($studiensemester_arr))
$qry.=" AND tbl_lvangebot.studiensemester_kurzbz IN(".$this->implode4SQL($studiensemester_arr).")";
}
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
@@ -374,5 +396,57 @@ class lvangebot extends basis_db
}
return true;
}
/**
* Prueft ob eine Anmeldung zu dieser Lehrveranstaltung derzeit moeglich ist
*/
public function AnmeldungMoeglich()
{
$datum_obj = new datum();
if($this->gruppe_kurzbz!='')
{
if($datum_obj->between($this->anmeldefenster_start, $this->anmeldefenster_ende, date('Y-m-d H:i:s')))
{
if($this->gesamtplaetze!='')
{
// Gesamtplaetze pruefen
$qry = "SELECT
count(*) as anzahl
FROM
public.tbl_benutzergruppe
WHERE
gruppe_kurzbz=".$this->db_add_param($this->gruppe)."
AND studiensemester_kurzbz=".$this->db_add_param($this->studiensemester_kurzbz);
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
if($row->anzahl<$this->gesamtplaetze)
{
return true;
}
else
{
$this->errormsg = 'Es sind bereits alle Plätze für diese Lehrveranstaltung belegt';
return false;
}
}
}
}
else
return true;
}
else
{
$this->errormsg = 'Eine Anmeldung zu dieser Lehrveranstaltung ist derzeit nicht moeglich';
return false;
}
}
else
{
$this->errormsg = 'Es ist derzeit noch keine Gruppe für die Anmeldung zugeteilt';
return false;
}
}
}
?>
+104 -33
View File
@@ -27,6 +27,8 @@ require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/student.class.php');
require_once(dirname(__FILE__).'/prestudent.class.php');
require_once(dirname(__FILE__).'/studiensemester.class.php');
require_once(dirname(__FILE__).'/studienplan.class.php');
require_once(dirname(__FILE__).'/lehrveranstaltung.class.php');
class lvregel extends basis_db
{
@@ -52,6 +54,8 @@ class lvregel extends basis_db
protected $lehrveranstaltung_bezeichnung;
protected $cache;
private $debug_level=0;
/**
* Konstruktor
*/
@@ -478,10 +482,10 @@ class lvregel extends basis_db
*/
public function isZugangsberechtigt($uid, $studienplan_lehrveranstaltung_id, $studiensemester_kurzbz=null)
{
$this->debug('Teste Zugangsberechtigung für '.$uid);
$this->debug('Teste Zugangsberechtigung für '.$uid,2);
if($result = $this->getLVRegelTree($studienplan_lehrveranstaltung_id))
{
return $this->TestRegeln($uid, $result, $studiensemester_kurzbz);
return $this->TestRegeln($uid, $result, $studiensemester_kurzbz);
}
return true;
}
@@ -492,18 +496,37 @@ class lvregel extends basis_db
* @param $regel_obj Regel Baum
* @param $studiensemester_kurzbz Studiensemester das geprueft werden soll
*/
public function TestRegeln($uid, $regel_obj, $studiensemester_kurzbz=null)
public function TestRegeln($uid, $regel_obj, $studiensemester_kurzbz=null, $retval=true)
{
$retval=true;
$ects=0;
foreach($regel_obj as $regel)
{
$this->debug('<br>');
$testval = $this->Test($uid, $regel, $studiensemester_kurzbz);
list($testval,$ects_tmp) = $this->Test($uid, $regel, $studiensemester_kurzbz, $retval);
$retval = $this->Compare($regel[0]->operator, $retval, $testval);
$this->debug(' - RETVAL:'.($retval?'TRUE':'FALSE'));
if($regel[0]->operator=='x' && $ects==0 && $ects_tmp>0)
{
// Bei XOR nur hinzufügen wenn noch keine vorhanden
$this->debug('<br>Anrechnung von '.$ects_tmp.' ECTS Punkten aufgrund des XOR',3);
$ects+=$ects_tmp;
}
elseif(($regel[0]->operator=='u' || $regel[0]->operator=='o') && $ects_tmp>0)
{
// Bei AND und OR immer hinzufuegen
$this->debug('<br>Anrechnung von '.$ects_tmp.' ECTS Punkten aufgrund des AND/OR',3);
$ects+=$ects_tmp;
}
else
{
$this->debug('<br>keine Anrechnung von ECTS Punkten für diesen Eintrag',3);
}
$this->debug('<br>Zwischenergebnis :'.($retval?'TRUE':'FALSE'),5);
$this->debug('ECTS:'.$ects,5);
}
return $retval;
return array($retval,$ects);
}
/**
@@ -518,19 +541,19 @@ class lvregel extends basis_db
switch($operator)
{
case 'u':
$this->debug(($retval?'T':'F').' && '.($testval?'T':'F'));
$this->debug(($retval?'T':'F').' && '.($testval?'T':'F'),5);
$retval=($retval && $testval);
$this->debug('='.($retval?'T':'F'));
$this->debug('='.($retval?'T':'F'),5);
break;
case 'o':
$this->debug(($retval?'T':'F').' || '.($testval?'T':'F'));
$this->debug(($retval?'T':'F').' || '.($testval?'T':'F'),5);
$retval=($retval || $testval);
$this->debug('='.($retval?'T':'F'));
$this->debug('='.($retval?'T':'F'),5);
break;
case 'x':
$this->debug(($retval?'T':'F').' XOR '.($testval?'T':'F'));
$this->debug(($retval?'T':'F').' XOR '.($testval?'T':'F'),5);
$retval=($retval xor $testval);
$this->debug('='.($retval?'T':'F'));
$this->debug('='.($retval?'T':'F'),5);
break;
}
return $retval;
@@ -542,11 +565,11 @@ class lvregel extends basis_db
* @param $regel_obj
* @param $studiensemester_kurzbz
*/
public function Test($uid, $regel_obj, $studiensemester_kurzbz=null)
public function Test($uid, $regel_obj, $studiensemester_kurzbz=null, $retvalglobal)
{
$regel = $regel_obj[0];
$this->debug('Teste Regel '.$regel->lvregel_id);
$ects=0;
$this->debug('<br><b>Teste Regel '.$regel->lvregel_id.'</b>',2);
switch($regel->lvregeltyp_kurzbz)
{
@@ -554,7 +577,7 @@ class lvregel extends basis_db
/* Prueft ob das Ausbildungssemester das mindestens erforderlich ist
um die Lehrveranstaltung zu besuchen */
$this->debug('Regeltyp ausbsemmin');
$this->debug('Regeltyp ausbsemmin',2);
// Wenn das Studiensemester nicht gesetzt ist, wird das aktuelle verwendet
if($studiensemester_kurzbz=='')
@@ -581,13 +604,13 @@ class lvregel extends basis_db
// Vergleichen des Ausbildungssemesters mit dem RegelParameter
if($ausbildungssemester>=$regel->parameter)
{
$this->debug('StudSem: '.$ausbildungssemester.' >= RegelParam: '.$regel->parameter);
$this->debug('StudSem: '.$ausbildungssemester.' >= RegelParam: '.$regel->parameter,4);
$this->debug('TRUE');
$retval = true;
}
else
{
$this->debug('StudSem: '.$ausbildungssemester.' >= RegelParam: '.$regel->parameter);
$this->debug('StudSem: '.$ausbildungssemester.' >= RegelParam: '.$regel->parameter,4);
$this->debug('FALSE');
$retval = false;
}
@@ -595,12 +618,13 @@ class lvregel extends basis_db
case 'lvpositiv':
$this->debug('Regeltyp lvpositiv');
$this->debug('Regeltyp lvpositiv:'.$regel->lehrveranstaltung_id,3);
$qry = "SELECT
*
tbl_lehrveranstaltung.ects, tbl_zeugnisnote.note
FROM
lehre.tbl_zeugnisnote
JOIN lehre.tbl_note USING(note)
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
WHERE
tbl_note.positiv
AND student_uid=".$this->db_add_param($uid)."
@@ -610,20 +634,20 @@ class lvregel extends basis_db
{
if($row = $this->db_fetch_object($result))
{
$this->debug('Positive Note gefunden:'.$row->note);
$this->debug('TRUE');
$ects=$row->ects;
$this->debug('Positive Note gefunden:'.$row->note,3);
$this->debug('ECTS:'.$ects,3);
$retval = true;
}
else
{
$this->debug('Keine positive Note');
$this->debug('FALSE');
$this->debug('Keine positive Note',3);
$retval = false;
}
}
else
{
$this->debug('Fehler bei Abfrage');
$this->debug('Fehler bei Abfrage',1);
$this->errormsg = 'Fehler bei Abfrage';
$retval = false;
}
@@ -637,13 +661,26 @@ class lvregel extends basis_db
// Subregeln dieser LVRegel pruefen
if(isset($regel_obj['childs']) && count($regel_obj['childs'])>0)
{
$this->debug('<br> - Subregel '.$regel->lvregel_id.' -');
$testval = $this->TestRegeln($uid, $regel_obj['childs']);
$this->debug('<br> == <b>Subregel:'.$regel->lvregel_id.'</b> Start ==',2);
list($testval,$ects_tmp) = $this->TestRegeln($uid, $regel_obj['childs'],null, $retval);
$retval = $this->Compare($regel->operator, $retval, $testval);
$this->debug('<br> - Subregel '.$regel->lvregel_id.' Ende-');
/*
if($regel->operator=='x' && $ects==0 && $ects_tmp>0)
{
$this->debug('<br>Aufgrund des XOR Vergleichs werden '.$ects_tmp.' ECTS dazugerechnet');
$ects+=$ects_tmp;
}
if(($regel->operator=='u' || $regel->operator=='o'))
{
$this->debug('<br>Aufgrund des AND / OR Operators werden '.$ects_tmp.' ECTS dazugerechnet');
$ects+=$ects_tmp;
}
*/
$this->debug('<br> == <b>Subregel '.$regel->lvregel_id.'</b> Ende ==<br>',2);
}
return $retval;
return array($retval,$ects);
}
/**
@@ -677,9 +714,43 @@ class lvregel extends basis_db
}
}
public function debug($msg)
/**
* Prüft ob das Modul für den Studierenden abgeschlossen ist
* @param $uid UID des Studierenden
* @param $studienplan_lehrveranstaltung_id ID der Lehrveranstaltungszuordnung
*/
public function isAbgeschlossen($uid, $studienplan_lehrveranstaltung_id)
{
//echo ' '.$msg;
$this->debug('Teste Abschluss für '.$uid,2);
$ects=0;
$retval=true;
if($result = $this->getLVRegelTree($studienplan_lehrveranstaltung_id))
{
list($retval, $ects) = $this->TestRegeln($uid, $result, null);
}
else
{
// Keine Regeln vorhanden
return true;
}
$stpllv = new studienplan();
$stpllv->loadStudienplanLehrveranstaltung($studienplan_lehrveranstaltung_id);
$lv = new lehrveranstaltung();
$lv->load($stpllv->lehrveranstaltung_id);
$this->debug('Abgeschlossen:'.$retval.' ECTS:'.$ects,1);
if($ects>=$lv->ects && $retval)
return true;
else
return false;
}
public function debug($msg, $debug_level=1)
{
if($debug_level<=$this->debug_level)
echo ' '.$msg;
}
}
?>
+21 -6
View File
@@ -62,6 +62,8 @@ class prestudent extends person
public $updateamum;
public $updatevon;
public $orgform_kurzbz;
public $studienplan_id;
public $studienplan_bezeichnung;
public $studiensemester_old='';
public $ausbildungssemester_old='';
@@ -398,7 +400,12 @@ class prestudent extends person
return false;
}
$qry = "SELECT * FROM public.tbl_prestudentstatus WHERE prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER);
$qry = "SELECT
tbl_prestudentstatus.*, tbl_studienplan.bezeichnung as studienplan_bezeichnung
FROM public.tbl_prestudentstatus
LEFT JOIN lehre.tbl_studienplan USING(studienplan_id)
WHERE
prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER);
if($status_kurzbz!=null)
$qry.= " AND status_kurzbz=".$this->db_add_param($status_kurzbz);
if($studiensemester_kurzbz!=null)
@@ -425,7 +432,8 @@ class prestudent extends person
$rolle->updateamum = $row->updateamum;
$rolle->updatevon = $row->updatevon;
$rolle->orgform_kurzbz = $row->orgform_kurzbz;
$rolle->studienplan_id = $row->studienplan_id;
$rolle->studienplan_bezeichnung = $row->studienplan_bezeichnung;
$this->result[] = $rolle;
}
return true;
@@ -474,6 +482,8 @@ class prestudent extends person
$this->updatevon = $row->updatevon;
$this->ext_id_prestudent = $row->ext_id;
$this->orgform_kurzbz = $row->orgform_kurzbz;
$this->studienplan_id = $row->studienplan_id;
return true;
}
else
@@ -713,7 +723,7 @@ class prestudent extends person
$qry = 'INSERT INTO public.tbl_prestudentstatus (prestudent_id, status_kurzbz,
studiensemester_kurzbz, ausbildungssemester, datum, insertamum, insertvon,
updateamum, updatevon, ext_id, orgform_kurzbz) VALUES('.
updateamum, updatevon, ext_id, orgform_kurzbz, studienplan_id) VALUES('.
$this->db_add_param($this->prestudent_id).",".
$this->db_add_param($this->status_kurzbz).",".
$this->db_add_param($this->studiensemester_kurzbz).",".
@@ -724,7 +734,8 @@ class prestudent extends person
$this->db_add_param($this->updateamum).",".
$this->db_add_param($this->updatevon).",".
$this->db_add_param($this->ext_id_prestudent).",".
$this->db_add_param($this->orgform_kurzbz).");";
$this->db_add_param($this->orgform_kurzbz).",".
$this->db_add_param($this->studienplan_id,FHC_INTEGER).");";
}
else
{
@@ -748,6 +759,7 @@ class prestudent extends person
' datum='.$this->db_add_param($this->datum).",".
' updateamum='.$this->db_add_param($this->updateamum).",".
' updatevon='.$this->db_add_param($this->updatevon).",".
' studienplan_id='.$this->db_add_param($this->studienplan_id, FHC_INTEGER).",".
' orgform_kurzbz='.$this->db_add_param($this->orgform_kurzbz).
" WHERE
prestudent_id=".$this->db_add_param($this->prestudent_id, FHC_INTEGER, false)."
@@ -802,7 +814,7 @@ class prestudent extends person
$log->mitarbeiter_uid = get_uid();
$log->sql = $qry;
$log->sqlundo = 'INSERT INTO public.tbl_prestudentstatus(prestudent_id, status_kurzbz, studiensemester_kurzbz,'.
' ausbildungssemester, datum, insertamum, insertvon, updateamum, updatevon, ext_id, orgform_kurzbz) VALUES('.
' ausbildungssemester, datum, insertamum, insertvon, updateamum, updatevon, ext_id, orgform_kurzbz, studienplan_id) VALUES('.
$this->db_add_param($this->prestudent_id).','.
$this->db_add_param($this->status_kurzbz).','.
$this->db_add_param($this->studiensemester_kurzbz).','.
@@ -813,7 +825,8 @@ class prestudent extends person
$this->db_add_param($this->updateamum).','.
$this->db_add_param($this->updatevon).','.
$this->db_add_param($this->ext_id_prestudent).','.
$this->db_add_param($this->orgform_kurzbz).');';
$this->db_add_param($this->orgform_kurzbz).','.
$this->db_add_param($this->studienplan_id, FHC_INTEGER).');';
if($log->save(true))
{
@@ -880,6 +893,7 @@ class prestudent extends person
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->orgform_kurzbz = $row->orgform_kurzbz;
$this->studienplan_id = $row->studienplan_id;
return true;
}
else
@@ -928,6 +942,7 @@ class prestudent extends person
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->orgform_kurzbz = $row->orgform_kurzbz;
$this->studienplan_id = $row->studienplan_id;
return true;
}
else
+74 -15
View File
@@ -465,7 +465,8 @@ class studienplan extends basis_db
* @param Lehrveranstaltung ID
* @return true wenn ok, false im Fehlerfall
*/
public function loadLehrveranstaltungStudienplanByLvId($studienplan_id, $lehrveranstaltung_id){
public function loadLehrveranstaltungStudienplanByLvId($studienplan_id, $lehrveranstaltung_id)
{
if($this->containsLehrveranstaltung($studienplan_id, $lehrveranstaltung_id))
{
if (!is_numeric($studienplan_id) || $studienplan_id === '') {
@@ -492,12 +493,14 @@ class studienplan extends basis_db
tbl_studienplan_lehrveranstaltung.studienplan_id=" . $this->db_add_param($studienplan_id, FHC_INTEGER).
" AND tbl_lehrveranstaltung.lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER).";";
if (!$this->db_query($qry)) {
if (!$this->db_query($qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
if ($row = $this->db_fetch_object()) {
if ($row = $this->db_fetch_object())
{
$this->studienplan_id = $row->studienplan_id;
$this->stpllv_semester = $row->stpllv_semester;
$this->stpllv_pflicht = $this->db_parse_bool($row->stpllv_pflicht);
@@ -518,9 +521,11 @@ class studienplan extends basis_db
* Speichert die Zuordnung einer Lehrveranstaltung zu einem Studienplan
* @return true wenn ok, false im Fehlerfall
*/
public function saveStudienplanLehrveranstaltung() {
public function saveStudienplanLehrveranstaltung()
{
if ($this->new) {
if ($this->new)
{
//Neuen Datensatz einfuegen
$qry = 'BEGIN;INSERT INTO lehre.tbl_studienplan_lehrveranstaltung (studienplan_id, lehrveranstaltung_id,
semester,studienplan_lehrveranstaltung_id_parent,pflicht, koordinator,
@@ -533,45 +538,58 @@ class studienplan extends basis_db
$this->db_add_param($this->koordinator) . ', ' .
'now(), ' .
$this->db_add_param($this->insertvon) . ');';
} else {
}
else
{
//Pruefen ob studienplan_id eine gueltige Zahl ist
if (!is_numeric($this->studienplan_lehrveranstaltung_id)) {
if (!is_numeric($this->studienplan_lehrveranstaltung_id))
{
$this->errormsg = 'studienplan_lehrveranstaltung_id muss eine gueltige Zahl sein';
return false;
}
$qry = 'UPDATE lehre.tbl_studienplan_lehrveranstaltung SET' .
' studienplan_id=' . $this->db_add_param($this->studienplan_id, FHC_INTEGER) . ', ' .
' lehrveranstaltung_id=' . $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER) . ', ' .
' semester=' . $this->db_add_param($this->semester, FHC_INTEGER) . ', ' .
' studienplan_lehrveranstaltung_id_parent=' . $this->db_add_param($this->studienplan_lehrveranstaltung_id_parent, FHC_INTEGER) . ', ' .
' pflicht=' . $this->db_add_param($this->pflicht, FHC_BOOLEAN) . ', ' .
//TODO sprache in Tabelle nicht vorhanden' sprache=' . $this->db_add_param($this->sprache) . ', ' .
' koordinator=' . $this->db_add_param($this->koordinator) . ', ' .
' updateamum= now(), ' .
' updatevon=' . $this->db_add_param($this->updatevon) . ' ' .
' WHERE studienplan_lehrveranstaltung_id=' . $this->db_add_param($this->studienplan_lehrveranstaltung_id, FHC_INTEGER, false) . ';';
}
if ($this->db_query($qry)) {
if ($this->new) {
if ($this->db_query($qry))
{
if ($this->new)
{
//naechste ID aus der Sequence holen
$qry = "SELECT currval('lehre.seq_studienplan_studienplan_lehrveranstaltung_id') as id;";
if ($this->db_query($qry)) {
if ($row = $this->db_fetch_object()) {
if ($this->db_query($qry))
{
if ($row = $this->db_fetch_object())
{
$this->studienplan_lehrveranstaltung_id = $row->id;
$this->db_query('COMMIT');
} else {
}
else
{
$this->db_query('ROLLBACK');
$this->errormsg = "Fehler beim Auslesen der Sequence";
return false;
}
} else {
}
else
{
$this->db_query('ROLLBACK');
$this->errormsg = 'Fehler beim Auslesen der Sequence';
return false;
}
}
} else {
}
else
{
$this->errormsg = 'Fehler beim Speichern des Datensatzes';
return false;
}
@@ -680,5 +698,46 @@ class studienplan extends basis_db
}
}
/**
* Holt alle Studienplaene eines Studienganges
* @param $studiengang_kz
*/
function getStudienplaene($studiengang_kz)
{
$qry = "SELECT
distinct tbl_studienplan.*
FROM
lehre.tbl_studienplan
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
WHERE
tbl_studienordnung.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new studienplan();
$obj->studienplan_id = $row->studienplan_id;
$obj->studienordnung_id = $row->studienordnung_id;
$obj->orgform_kurzbz = $row->orgform_kurzbz;
$obj->version = $row->version;
$obj->bezeichnung = $row->bezeichnung;
$obj->regelstudiendauer = $row->regelstudiendauer;
$obj->sprache = $row->sprache;
$obj->aktiv = $this->db_parse_bool($row->aktiv);
$obj->semesterwochen = $row->semesterwochen;
$obj->testtool_sprachwahl = $this->db_parse_bool($row->testtool_sprachwahl);
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->new=false;
$this->result[] = $obj;
}
return true;
}
}
}
?>