diff --git a/.gitignore b/.gitignore index 4e8053fec..706a9c3a8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,4 @@ .htaccess /nbproject/ /.idea/ -documents/dms/5501ab0195d74.pdf -documents/dms/5501abcc7300b.pdf -documents/dms/5501b6ed6b073.jpg -documents/dms/5501d1a12fa02.jpg +documents/ diff --git a/cis/infoterminal/index.php b/cis/infoterminal/index.php index 9dbd0a09a..3e7f7ed2d 100644 --- a/cis/infoterminal/index.php +++ b/cis/infoterminal/index.php @@ -533,8 +533,10 @@ $refreshtime = ($sdtools?99999:(isset($_SESSION[constSESSIONNAME]["uid"]) && !em else { // Lageplan + if(defined('CIS_INFOSCREEN_LAGEPLAN_ANZEIGEN') && CIS_INFOSCREEN_LAGEPLAN_ANZEIGEN) + { echo ' - + @@ -543,6 +545,7 @@ $refreshtime = ($sdtools?99999:(isset($_SESSION[constSESSIONNAME]["uid"]) && !em '; + } } echo ' '; diff --git a/cis/private/lehre/benotungstool/zipdownload_benotungstool.php b/cis/private/lehre/benotungstool/zipdownload_benotungstool.php index f3cdb4b8f..e3b9a9f27 100755 --- a/cis/private/lehre/benotungstool/zipdownload_benotungstool.php +++ b/cis/private/lehre/benotungstool/zipdownload_benotungstool.php @@ -25,56 +25,61 @@ * @create 20-03-2006 * Aufruf: zipdownload.php?stg=255&sem=1$short=eng */ +require_once('../../../../config/cis.config.inc.php'); +require_once('../../../../include/functions.inc.php'); - require_once('../../../../config/cis.config.inc.php'); - require_once('../../../../include/functions.inc.php'); - $user = get_uid(); +$user = get_uid(); - //Gueltigkeit der Parameter pruefen - if(!isset($_GET['uebung_id']) || !is_numeric($_GET['uebung_id'])) - { - die('Fehler bei der Parameteruebergabe'); - } - if(!isset($_GET['lehreinheit_id']) || !is_numeric($_GET['lehreinheit_id'])) - { - die('Fehler bei der Parameteruebergabe'); - } - if(!isset($_GET['stsem'])) - { - die('Fehler bei der Parameteruebergabe'); - } - if(!isset($_GET['downloadname'])) - { - die('Fehler bei der Parameteruebergabe'); - } +if(!check_lektor($user)) + die('Sie haben keine Berechtigung fuer diese Seite'); - - $uebung_id = $_GET['uebung_id']; - $lehreinheit_id = $_GET['lehreinheit_id']; - $stsem = $_GET['stsem']; - $downloadname = $_GET['downloadname']; - +//Gueltigkeit der Parameter pruefen +if(!isset($_GET['uebung_id']) || !is_numeric($_GET['uebung_id'])) +{ + die('Fehler bei der Parameteruebergabe'); +} +if(!isset($_GET['lehreinheit_id']) || !is_numeric($_GET['lehreinheit_id'])) +{ + die('Fehler bei der Parameteruebergabe'); +} +if(!isset($_GET['stsem'])) +{ + die('Fehler bei der Parameteruebergabe'); +} +if(!isset($_GET['downloadname'])) +{ + die('Fehler bei der Parameteruebergabe'); +} - //Pfade bauen - $pfad = BENOTUNGSTOOL_PATH.'abgabe/'; - $filename = 'download_'.$user.'_'.$downloadname.'.zip'; - - - //Pfad wechseln - chdir($pfad); - - - //File loeschen falls es existiert - //if(file_exists("download_".$user."*")) - exec("rm download_".$user."*"); - - //Zip File erstellen - exec("zip -r ".$filename." *_[WS]S[0-9][0-9][0-9][0-9]_".$uebung_id."_*"); +$uebung_id = $_GET['uebung_id']; +$lehreinheit_id = $_GET['lehreinheit_id']; +$stsem = $_GET['stsem']; +$downloadname = $_GET['downloadname']; - //Auf Zip File Verweisen - //header("Location: $pfad$filename"); - header('Content-Type: application/octet-stream'); - header('Content-disposition: attachment; filename="'.$filename.'"'); - readfile($filename); - unlink($filename); -?> \ No newline at end of file +if(mb_strstr($downloadname,'..')) + die('Ungueltiger Parameter gefunden'); + +//Pfade bauen +$pfad = BENOTUNGSTOOL_PATH.'abgabe/'; +$filename = 'download_'.$user.'_'.$downloadname.'.zip'; + +if(!check_filename($filename)) + die('Ungueltiger Parameter gefunden'); + +//Pfad wechseln +chdir($pfad); + +//File loeschen falls es existiert +//if(file_exists("download_".$user."*")) +exec('rm download_'.$user.'*'); + +//Zip File erstellen +exec("zip -r ".escapeshellarg($filename).' *_[WS]S[0-9][0-9][0-9][0-9]_'.$uebung_id.'_*'); + +//Auf Zip File Verweisen +//header("Location: $pfad$filename"); +header('Content-Type: application/octet-stream'); +header('Content-disposition: attachment; filename="'.$filename.'"'); +readfile($filename); +unlink($filename); +?> diff --git a/cis/private/lehre/lesson.php b/cis/private/lehre/lesson.php index 0948eefcd..b3b6f2e1d 100644 --- a/cis/private/lehre/lesson.php +++ b/cis/private/lehre/lesson.php @@ -92,11 +92,42 @@ if (isset($_GET["handbuch"])){ readfile($filename); exit; } -?> +?> + + + +loadAddons(); +foreach($addon_obj->result as $addon) +{ + if(file_exists('../../../addons/'.$addon->kurzbz.'/cis/init.js.php')) + echo ''; +} + +// Wenn Seite fertig geladen ist Addons aufrufen +echo ' + +'; + +?> + + + +
+
+

Anmeldungsliste

+ result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungAdmin')) + die('Sie haben keine Berechtigung für diese Seite'); + + $termin_id = filter_input(INPUT_GET,"termin_id"); + $lehrveranstaltung_id = filter_input(INPUT_GET,"lehrveranstaltung_id"); + $studiensemester = filter_input(INPUT_GET, "studiensemester"); + + if(is_null($lehrveranstaltung_id)) + { + die('Fehlender Parameter lehrveranstaltung_id'); + } + else if(is_null($termin_id)) + { + die('Fehlender Parameter termin_id'); + } + else if(is_null($studiensemester)) + { + die('Fehlender Parameter studiensemester'); + } + else + { + $datum = new datum(); + $stdsem = new studiensemester($studiensemester); + $pruefungsanmeldung = new pruefungsanmeldung(); + $anmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($termin_id, $lehrveranstaltung_id, $studiensemester, "bestaetigt"); + $lehrveranstaltung = new lehrveranstaltung($lehrveranstaltung_id); + $einzeln = FALSE; + if(!empty($anmeldungen)) + { + $pruefung = new pruefungCis($anmeldungen[0]->pruefung_id); + $pruefungstermin = new pruefungstermin($anmeldungen[0]->pruefungstermin_id); + $mitarbeiter = new mitarbeiter($pruefung->mitarbeiter_uid); + if($pruefung->einzeln) + { + $einzeln = TRUE; + $pruefungsintervall = $pruefung->pruefungsintervall; + } + } + ?> + Lehrveranstaltung: bezeichnung?>
+ Studiensemester: bezeichnung?>
+ Prüfer: getFullName(FALSE)?>
+ + + + + + + + + + + + uid); + $prfTermin = new pruefungstermin($anmeldung->pruefungstermin_id); + + if($einzeln) + { + $date = $datum->formatDatum($prfTermin->von, "Y-m-d H:i:s"); + $date = strtotime($date); + $date = $date+(60*$pruefungsintervall*($count)); + $date = $datum->formatDatum($prfTermin->von,"d.m.Y").' - '.date("h:i",$date); + $count++; + } + else + { + $date = $datum->formatDatum($prfTermin->von,"d.m.Y - H:i"); + } + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + } + ?> + + +
#VornameNachnameMatrikelnummerDatum
'.$anmeldung->reihung.''.$student->vorname.''.$student->nachname.''.$student->matrikelnr.''.$date.'
+
+
+ + \ No newline at end of file diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php index 47e6273d8..3995a2c66 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php @@ -1,269 +1,306 @@ - - - */ - -require_once('../../../../config/cis.config.inc.php'); -require_once('../../../../include/functions.inc.php'); -require_once('../../../../include/benutzerberechtigung.class.php'); -require_once('../../../../include/pruefungCis.class.php'); -require_once('../../../../include/studiensemester.class.php'); - -$uid = get_uid(); -$db = new basis_db(); -$rechte = new benutzerberechtigung(); -$rechte->getBerechtigungen($uid); - -$studiensemester = new studiensemester(); -$pruefung = new pruefungCis(); -$pruefung->getPruefungByMitarbeiter($uid, $studiensemester->getaktorNext()); -if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungAdmin')) - die('Sie haben keine Berechtigung für diese Seite'); - -?> - - - - Prüfungsanmeldung Verwaltung - - - - - - - - - - - - - -

Anmeldungen Verwalten

-
-
-

Studiengänge

- -
-
-
-
-

Prüfungen

- -
-
-
-
-

Anmeldungen

-
- -
-
- -
-
- -
-
- -
- -
-
- -
-
- -
-
-
-
- -
-
- - + + + */ + +require_once('../../../../config/cis.config.inc.php'); +require_once('../../../../include/functions.inc.php'); +require_once('../../../../include/benutzerberechtigung.class.php'); +require_once('../../../../include/pruefungCis.class.php'); +require_once('../../../../include/studiensemester.class.php'); + +$uid = get_uid(); +$db = new basis_db(); +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($uid); + +$studiensemester = new studiensemester(); +$pruefung = new pruefungCis(); +$pruefung->getPruefungByMitarbeiter($uid, $studiensemester->getaktorNext()); +if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungAdmin')) + die('Sie haben keine Berechtigung für diese Seite'); + +?> + + + + Prüfungsanmeldung Verwaltung + + + + + + + + + + + + + +

Anmeldungen Verwalten

+
+
+
+

Studiengänge

+
+ +
+
+
+

Studiensemester

+ '; + $aktuellesSemester = $studiensemester->getaktorNext(); + $studiensemester->getAll(); + foreach($studiensemester->studiensemester as $sem) + { + /*@var $sem studiensemester */ + if($aktuellesSemester == $sem->studiensemester_kurzbz) + { + echo ''; + } + else + { + echo ''; + } + } + echo '

'; + ?> +
+
+
+
+
+

Prüfungen

+ +
+
+
+
+

Anmeldungen

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ +
+
+
+ +
+
+ +
+
+
+
+ +
+
+ + diff --git a/cis/private/lehre/pruefung/pruefungstermin.json.php b/cis/private/lehre/pruefung/pruefungstermin.json.php index 1b8c94077..f8536061f 100644 --- a/cis/private/lehre/pruefung/pruefungstermin.json.php +++ b/cis/private/lehre/pruefung/pruefungstermin.json.php @@ -1,621 +1,622 @@ -getBerechtigungen($uid); - -$method = isset($_REQUEST['method'])?$_REQUEST['method']:''; - -switch($method) -{ - case 'loadPruefungstypen': - $data = loadPruefungstypen("false"); - break; - case 'loadStudiensemester': - $studiensemester = new studiensemester(); - $aktStudiensemester = $studiensemester->getaktorNext(); - $data = loadStudiensemester($aktStudiensemester); - break; - case 'getPruefungsfensterByStudiensemester': - $studiensemester = new studiensemester(); - $aktStudiensemester = $studiensemester->getaktorNext(); - $studiensemester_kurzbz = isset($_REQUEST["studiensemester_kurzbz"]) ? $_REQUEST["studiensemester_kurzbz"] : $aktStudiensemester; - $data = getPruefungsfensterByStudiensemester($studiensemester_kurzbz, $aktStudiensemester); - break; - case 'savePruefungstermin': - $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; - $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; - $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]: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["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; - $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; - $termine = isset($_POST["termine"])?$_POST["termine"]:null; - $pruefungsintervall = NULL; - if(isset($_REQUEST["pruefungsintervall"]) && ($_REQUEST["pruefungsintervall"] !== "false")) - { - $pruefungsintervall = $_REQUEST["pruefungsintervall"]; - } - if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) - { - $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; - } - else - { - $mitarbeiter_uid = $uid; - } - $data = savePruefungstermin($mitarbeiter_uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall); - break; - case 'getLehrveranstaltungenByMitarbeiter': - $mitarbeiter_uid = $_POST["mitarbeiter_uid"]; - $studiensemester_kurzbz = $_POST["studiensemester_kurzbz"]; - $data = getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz); - break; - case 'updatePruefungstermin': - $pruefung_id = isset($_POST["pruefung_id"])?$_POST["pruefung_id"]:null; - $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; - $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; - $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]: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["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; - $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; - $termine = isset($_POST["termine"])?$_POST["termine"]:null; - $termineNeu = isset($_POST["termineNeu"])?$_POST["termineNeu"]:null; - $pruefungsintervall = NULL; - if((isset($_REQUEST["pruefungsintervall"]) && $_REQUEST["pruefungsintervall"] !== false)) - { - $pruefungsintervall = $_REQUEST["pruefungsintervall"]; - } - if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) - { - $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; - } - else - { - $mitarbeiter_uid = $uid; - } - $data = updatePruefungstermin($mitarbeiter_uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall); - break; - case 'deleteLehrveranstaltungFromPruefung': - $lvId = $_POST["lehrveranstaltung_id"]; - $pruefung_id = $_POST["pruefung_id"]; - $data = deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id); - break; - case 'stornoPruefung': - $pruefung_id = $_REQUEST["pruefung_id"]; - $data = stornoPruefung($pruefung_id); - break; - case 'deleteTermin': - $pruefung_id = $_REQUEST["pruefung_id"]; - $pruefungstermin_id = $_REQUEST["pruefungstermin_id"]; - $data = deleteTermin($pruefung_id, $pruefungstermin_id); - break; - case 'getAllPruefungen': - if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) - { - $data = getAllPruefungen($_REQUEST["uid"]); - } - else - { - $data = getAllPruefungen($uid); - } - break; - default: - break; -} -echo json_encode($data); - - -/** - * Lädt alle Prüfungstypen aus der Datenbank - * @param boolean $abschluss Gibt an ob Prüfungstypen einer Abschlussprüfunge geladen werden sollen oder nicht - * @return Array - */ -function loadPruefungstypen($abschluss) -{ - $pruefungstermin = new pruefungstermin(); - $pruefungstypen = $pruefungstermin->getAllPruefungstypen($abschluss); - if(!empty($pruefungstypen)) - { - $data['result']=$pruefungstypen; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefungstermin->errormsg; - } - return $data; -} - -/** - * Lädt alle Studiensemester aus der Datenbank - * @param String $aktStudiensemester das Aktuelle Studiensemester - * @return Array - */ -function loadStudiensemester($aktStudiensemester = null) -{ - $studiensemester = new studiensemester(); - if($studiensemester->getAll()) - { - $data['result']=$studiensemester->studiensemester; - if(!is_null($aktStudiensemester)) - { - $data['aktSem']=$aktStudiensemester; - } - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$studiensemester->errormsg; - } - return $data; -} - -/** - * Lädt alle Prüfungsfenster eines Studiensemesters - * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters - * @return Array - */ -function getPruefungsfensterByStudiensemester($studiensemester_kurzbz) -{ - $pruefungsfenster = new pruefungsfenster(); - if($pruefungsfenster->getByStudiensemester($studiensemester_kurzbz)) - { - $data['result']=$pruefungsfenster->result; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefungsfenster->errormsg; - } - return $data; -} - -/** - * Speichet einen Prüfungstermin - * @param int $uid UID des Lektors - * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters - * @param int $pruefungsfenster_id ID des Prüfungsfensters - * @param String $pruefungstyp_kurzbz Kurzbezeichnung des Prüfungstyps - * @param String $titel Titel der Prüfung - * @param String $beschreibung Beschreibung zur Prüfung - * @param String $methode Methode der Prüfung - * @param boolen $einzeln TRUE, wenn Einzelprüfung - * @param Array $lehrveranstaltungen Lehrveranstaltungen zur Prüfung - * @param Array $termine Termine zur Prüfung - * @return Array - */ -function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall) -{ - if($lehrveranstaltungen === null) - { - $data['error']='true'; - $data['errormsg']="Keine Lehrverantaltung angegeben."; - return $data; - } - $termineArray = array(); - foreach ($termine as $key => $t) { - $termin = new stdClass(); - $date = $t["datum"]; - $beginn = $t["beginn"]; - $ende = $t["ende"]; - $termin->min = $t["min"]; - $termin->max = $t["max"]; - $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); - $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); - $termin->sammelklausur = $t["sammelklausur"]; -// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) -// { - if(!(checkCollision($uid, $termin->beginn, $termin->ende))) - { - array_push($termineArray, $termin); - } - else - { - $data['error']='true'; - $data['errormsg']="Kollision mit anderem Termin."; - return $data; - } -// } -// else -// { -// $data['error']='true'; -// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; -// return $data; -// } - } - - $pruefung = new pruefungCis(); - $pruefung->termine = $termineArray; - $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 = get_uid(); - $pruefung->pruefungsintervall = $pruefungsintervall; - - foreach ($lehrveranstaltungen as $lv) { - if($lv != "null") - { - array_push($pruefung->lehrveranstaltungen, $lv); - } - } - - if($pruefung->save(true)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - - //TODO Mail-Inhalt fehlt -// 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, "fhcomplete", "Prüfungstermin für ".$lv->bezeichnung, $text); -// $email->setReplyTo($uid."@".DOMAIN); -//// var_dump($email); -// $email->send(); -// } - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Lädt alle Lehrveranstaltungen eines Mitarbeiters - * @param int $mitarbeiter_uid UID des Mitarbeiters - * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters - * @return Array - */ -function getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz) -{ - $lehrveranstaltung = new lehrveranstaltung(); - if($lehrveranstaltung->getLVByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz)) - { - $stg = new studiengang(); - foreach($lehrveranstaltung->lehrveranstaltungen as $key=>$lv) - { - $stg->load($lv->studiengang_kz); - $lv->studiengang_bezeichnung = $stg->kurzbzlang; - } - $data['result']=$lehrveranstaltung->lehrveranstaltungen; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$lehrveranstaltung->errormsg; - } - return $data; -} - -/** - * Speichet einen Prüfungstermin - * @param int $uid UID des Lektors - * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters - * @param int $pruefungsfenster_id ID des Prüfungsfensters - * @param String $pruefungstyp_kurzbz Kurzbezeichnung des Prüfungstyps - * @param String $titel Titel der Prüfung - * @param String $beschreibung Beschreibung zur Prüfung - * @param String $methode Methode der Prüfung - * @param boolen $einzeln TRUE, wenn Einzelprüfung - * @param Array $lehrveranstaltungen Lehrveranstaltungen zur Prüfung - * @param Array $termine Termine zur Prüfung (bestehende) - * @param type $termineNeu Neu hinzugefügte Termine - * @return Array - */ -function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall) -{ - $pruefungsfenster = new pruefungsfenster(); - $pruefungsfenster->load($pruefungsfenster_id); - $datum = new datum(); - $pruefung = new pruefungCis(); - $pruefung->load($pruefung_id); - - if($termineNeu !== null) - { - $termineNeuArray = array(); - foreach ($termineNeu as $key => $t) { - $termin = new stdClass(); - $datum = new datum(); - $date = $t["datum"]; - $beginn = $t["beginn"]; - $ende = $t["ende"]; - $termin->min = $t["min"]; - $termin->max = $t["max"]; - $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); - $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); - $termin->sammelklausur = $t["sammelklausur"]; -// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) -// { - if(!(checkCollision($uid, $termin->beginn, $termin->ende))) - { - array_push($termineNeuArray, $termin); - } - else - { - $data['error']='true'; - $data['errormsg']="Kollision mit anderem Termin."; - return $data; - } -// } -// else -// { -// $data['error']='true'; -// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; -// return $data; -// } - } - foreach ($termineNeuArray as $t) - { - $pruefung->saveTerminPruefung($pruefung_id, $t->beginn, $t->ende, $t->max, $t->min, $t->sammelklausur); - } - } - - if($termine !== null) - { - $termineArray = array(); - foreach ($termine as $key => $t) { - $termin = new stdClass(); - $datum = new datum(); - $date = $t["datum"]; - $beginn = $t["beginn"]; - $ende = $t["ende"]; - $termin->pruefungstermin_id = $t["pruefungstermin_id"]; - $termin->min = $t["min"]; - $termin->max = ($t["max"] === "null") ? NULL : $t["max"]; - $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); - $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); -// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) -// { -// array_push($termineArray, $termin); -// } -// else -// { -// $data['error']='true'; -// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; -// return $data; -// } - } - foreach($termineArray as $key=>$t) - { - $termineArray[$key] = (object) $t; - } - $pruefung->termine = $termineArray; - } - - $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 = get_uid(); - $pruefung->pruefungsintervall = $pruefungsintervall; - if($lehrveranstaltungen !== null) - { - foreach ($lehrveranstaltungen as $lv) - { - if($lv != "null") - { - array_push($pruefung->lehrveranstaltungen, $lv); - } - } - } - if($pruefung->save(false)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - - //TODO Mail-Inhalt fehlt - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Löscht Lehrveranstaltungen von einer Prüfung - * @param int $lvId ID der Lehrveranstaltung - * @param int $pruefung_id ID der Prüfung - * @return Array - */ -function deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id) -{ - $pruefung = new pruefungCis(); - $pruefung->load($pruefung_id); - if($pruefung->deleteLehrveranstaltungPruefung($lvId, $pruefung_id)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Storniert eine Prüfung - * @param int $pruefung_id ID der Prüfung - * @return Array - */ -function stornoPruefung($pruefung_id) -{ - $pruefung = new pruefungCis(); - if($pruefung->pruefungStornieren($pruefung_id)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Löscht einen Termin einer Prüfung - * @param int $pruefung_id ID der Prüfung - * @param int $pruefungstermin_id ID des Termins - * @return Array - */ -function deleteTermin($pruefung_id, $pruefungstermin_id) -{ - $pruefung = new pruefungCis(); - $pruefung->load($pruefung_id); - if($pruefung->deleteTerminPruefung($pruefungstermin_id)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Lädt alle Prüfungen eines Mitarbeiters - * @param String $mitarbeiter_uid UID des Mitarbeiters - * @return Array - */ -function getAllPruefungen($mitarbeiter_uid) -{ - $pruefung = new pruefungCis(); - if($pruefung->getAllPruefungen($mitarbeiter_uid)) - { - foreach ($pruefung->result as $prf) - { - $prf->getLehrveranstaltungenByPruefung(); - foreach($prf->lehrveranstaltungen as $key=>$lv) - { - $temp = new lehrveranstaltung($lv->lehrveranstaltung_id); - $array = $temp->cleanResult(); - $prf->lehrveranstaltungen[$key] = $array[0]; - } - $prf->getTermineByPruefung(); - } - $data['result']=$pruefung->result; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Überprüft ob das angegebene Datum innerhalb eines Prüfungsfensters ist - * @param int $pruefungsfenster_id ID des Prüfungsfensters - * @param String $datum - * @return boolean - */ -function checkTerminPruefungsfenster($pruefungsfenster_id, $datum) -{ - $pruefungsfenster = new pruefungsfenster($pruefungsfenster_id); - $date = new datum(); - if($date->between($pruefungsfenster->start, $pruefungsfenster->ende, $datum)) - { - return true; - } - return false; -} - -/** - * Überprüft ob es eine Kollision zu anderen Prüfungen des Mitarbeiters gibt - * @param String $uid UID des Mitarbeiters - * @param String $beginn Beginn des Termins - * @param String $ende Ende des Termins - * @return boolean - */ -function checkCollision($uid, $beginn, $ende) -{ - $collision = false; - $pruefung = new pruefungCis(); - $pruefung->getAllPruefungen($uid); - $datum = new datum(); - foreach($pruefung->result as $prf) - { - $prf->getTermineByPruefung(); - foreach($prf->termine as $termin) - { - if(($datum->between($termin->von, $termin->bis, $beginn)) || ($datum->between($termin->von, $termin->bis, $ende))) - { - $collision = true; - } - } - } - if($collision) - { - return true; - } - return false; -} +getBerechtigungen($uid); + +$method = isset($_REQUEST['method'])?$_REQUEST['method']:''; + +switch($method) +{ + case 'loadPruefungstypen': + $data = loadPruefungstypen("false"); + break; + case 'loadStudiensemester': + $studiensemester = new studiensemester(); + $aktStudiensemester = $studiensemester->getaktorNext(); + $data = loadStudiensemester($aktStudiensemester); + break; + case 'getPruefungsfensterByStudiensemester': + $studiensemester = new studiensemester(); + $aktStudiensemester = $studiensemester->getaktorNext(); + $studiensemester_kurzbz = isset($_REQUEST["studiensemester_kurzbz"]) ? $_REQUEST["studiensemester_kurzbz"] : $aktStudiensemester; + $data = getPruefungsfensterByStudiensemester($studiensemester_kurzbz, $aktStudiensemester); + break; + case 'savePruefungstermin': + $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; + $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; + $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]: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["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; + $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; + $termine = isset($_POST["termine"])?$_POST["termine"]:null; + $pruefungsintervall = NULL; + if(isset($_REQUEST["pruefungsintervall"]) && ($_REQUEST["pruefungsintervall"] !== "false")) + { + $pruefungsintervall = $_REQUEST["pruefungsintervall"]; + } + if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) + { + $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; + } + else + { + $mitarbeiter_uid = $uid; + } + $data = savePruefungstermin($mitarbeiter_uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall); + break; + case 'getLehrveranstaltungenByMitarbeiter': + $mitarbeiter_uid = $_POST["mitarbeiter_uid"]; + $studiensemester_kurzbz = $_POST["studiensemester_kurzbz"]; + $data = getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz); + break; + case 'updatePruefungstermin': + $pruefung_id = isset($_POST["pruefung_id"])?$_POST["pruefung_id"]:null; + $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; + $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; + $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]: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["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; + $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; + $termine = isset($_POST["termine"])?$_POST["termine"]:null; + $termineNeu = isset($_POST["termineNeu"])?$_POST["termineNeu"]:null; + $pruefungsintervall = NULL; + if((isset($_REQUEST["pruefungsintervall"]) && $_REQUEST["pruefungsintervall"] !== false)) + { + $pruefungsintervall = $_REQUEST["pruefungsintervall"]; + } + if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) + { + $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; + } + else + { + $mitarbeiter_uid = $uid; + } + $data = updatePruefungstermin($mitarbeiter_uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall); + break; + case 'deleteLehrveranstaltungFromPruefung': + $lvId = $_POST["lehrveranstaltung_id"]; + $pruefung_id = $_POST["pruefung_id"]; + $data = deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id); + break; + case 'stornoPruefung': + $pruefung_id = $_REQUEST["pruefung_id"]; + $data = stornoPruefung($pruefung_id); + break; + case 'deleteTermin': + $pruefung_id = $_REQUEST["pruefung_id"]; + $pruefungstermin_id = $_REQUEST["pruefungstermin_id"]; + $data = deleteTermin($pruefung_id, $pruefungstermin_id); + break; + case 'getAllPruefungen': + if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) + { + $data = getAllPruefungen($_REQUEST["uid"]); + } + else + { + $data = getAllPruefungen($uid); + } + break; + default: + break; +} +echo json_encode($data); + + +/** + * Lädt alle Prüfungstypen aus der Datenbank + * @param boolean $abschluss Gibt an ob Prüfungstypen einer Abschlussprüfunge geladen werden sollen oder nicht + * @return Array + */ +function loadPruefungstypen($abschluss) +{ + $pruefungstermin = new pruefungstermin(); + $pruefungstypen = $pruefungstermin->getAllPruefungstypen($abschluss); + if(!empty($pruefungstypen)) + { + $data['result']=$pruefungstypen; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefungstermin->errormsg; + } + return $data; +} + +/** + * Lädt alle Studiensemester aus der Datenbank + * @param String $aktStudiensemester das Aktuelle Studiensemester + * @return Array + */ +function loadStudiensemester($aktStudiensemester = null) +{ + $studiensemester = new studiensemester(); + if($studiensemester->getAll()) + { + $data['result']=$studiensemester->studiensemester; + if(!is_null($aktStudiensemester)) + { + $data['aktSem']=$aktStudiensemester; + } + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$studiensemester->errormsg; + } + return $data; +} + +/** + * Lädt alle Prüfungsfenster eines Studiensemesters + * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @return Array + */ +function getPruefungsfensterByStudiensemester($studiensemester_kurzbz) +{ + $pruefungsfenster = new pruefungsfenster(); + if($pruefungsfenster->getByStudiensemester($studiensemester_kurzbz)) + { + $data['result']=$pruefungsfenster->result; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefungsfenster->errormsg; + } + return $data; +} + +/** + * Speichet einen Prüfungstermin + * @param int $uid UID des Lektors + * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @param int $pruefungsfenster_id ID des Prüfungsfensters + * @param String $pruefungstyp_kurzbz Kurzbezeichnung des Prüfungstyps + * @param String $titel Titel der Prüfung + * @param String $beschreibung Beschreibung zur Prüfung + * @param String $methode Methode der Prüfung + * @param boolen $einzeln TRUE, wenn Einzelprüfung + * @param Array $lehrveranstaltungen Lehrveranstaltungen zur Prüfung + * @param Array $termine Termine zur Prüfung + * @return Array + */ +function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall) +{ + if($lehrveranstaltungen === null) + { + $data['error']='true'; + $data['errormsg']="Keine Lehrverantaltung angegeben."; + return $data; + } + $termineArray = array(); + foreach ($termine as $key => $t) { + $termin = new stdClass(); + $date = $t["datum"]; + $beginn = $t["beginn"]; + $ende = $t["ende"]; + $termin->min = $t["min"]; + $termin->max = $t["max"]; + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); + $termin->sammelklausur = $t["sammelklausur"]; + //Termin soll auch außerhalb eines Prüfungsfensters angelegt werden können +// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) +// { + if(!(checkCollision($uid, $termin->beginn, $termin->ende))) + { + array_push($termineArray, $termin); + } + else + { + $data['error']='true'; + $data['errormsg']="Kollision mit anderem Termin."; + return $data; + } +// } +// else +// { +// $data['error']='true'; +// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; +// return $data; +// } + } + + $pruefung = new pruefungCis(); + $pruefung->termine = $termineArray; + $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 = get_uid(); + $pruefung->pruefungsintervall = $pruefungsintervall; + + foreach ($lehrveranstaltungen as $lv) { + if($lv != "null") + { + array_push($pruefung->lehrveranstaltungen, $lv); + } + } + + if($pruefung->save(true)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + + //TODO Mail-Inhalt fehlt +// 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, "fhcomplete", "Prüfungstermin für ".$lv->bezeichnung, $text); +// $email->setReplyTo($uid."@".DOMAIN); +//// var_dump($email); +// $email->send(); +// } + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Lädt alle Lehrveranstaltungen eines Mitarbeiters + * @param int $mitarbeiter_uid UID des Mitarbeiters + * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @return Array + */ +function getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz) +{ + $lehrveranstaltung = new lehrveranstaltung(); + if($lehrveranstaltung->getLVByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz)) + { + $stg = new studiengang(); + foreach($lehrveranstaltung->lehrveranstaltungen as $key=>$lv) + { + $stg->load($lv->studiengang_kz); + $lv->studiengang_bezeichnung = $stg->kurzbzlang; + } + $data['result']=$lehrveranstaltung->lehrveranstaltungen; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$lehrveranstaltung->errormsg; + } + return $data; +} + +/** + * Speichet einen Prüfungstermin + * @param int $uid UID des Lektors + * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @param int $pruefungsfenster_id ID des Prüfungsfensters + * @param String $pruefungstyp_kurzbz Kurzbezeichnung des Prüfungstyps + * @param String $titel Titel der Prüfung + * @param String $beschreibung Beschreibung zur Prüfung + * @param String $methode Methode der Prüfung + * @param boolen $einzeln TRUE, wenn Einzelprüfung + * @param Array $lehrveranstaltungen Lehrveranstaltungen zur Prüfung + * @param Array $termine Termine zur Prüfung (bestehende) + * @param type $termineNeu Neu hinzugefügte Termine + * @return Array + */ +function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall) +{ + $pruefungsfenster = new pruefungsfenster(); + $pruefungsfenster->load($pruefungsfenster_id); + $datum = new datum(); + $pruefung = new pruefungCis(); + $pruefung->load($pruefung_id); + + if($termineNeu !== null) + { + $termineNeuArray = array(); + foreach ($termineNeu as $key => $t) { + $termin = new stdClass(); + $datum = new datum(); + $date = $t["datum"]; + $beginn = $t["beginn"]; + $ende = $t["ende"]; + $termin->min = $t["min"]; + $termin->max = $t["max"]; + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); + $termin->sammelklausur = $t["sammelklausur"]; +// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) +// { + if(!(checkCollision($uid, $termin->beginn, $termin->ende))) + { + array_push($termineNeuArray, $termin); + } + else + { + $data['error']='true'; + $data['errormsg']="Kollision mit anderem Termin."; + return $data; + } +// } +// else +// { +// $data['error']='true'; +// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; +// return $data; +// } + } + foreach ($termineNeuArray as $t) + { + $pruefung->saveTerminPruefung($pruefung_id, $t->beginn, $t->ende, $t->max, $t->min, $t->sammelklausur); + } + } + + if($termine !== null) + { + $termineArray = array(); + foreach ($termine as $key => $t) { + $termin = new stdClass(); + $datum = new datum(); + $date = $t["datum"]; + $beginn = $t["beginn"]; + $ende = $t["ende"]; + $termin->pruefungstermin_id = $t["pruefungstermin_id"]; + $termin->min = $t["min"]; + $termin->max = ($t["max"] === "null") ? NULL : $t["max"]; + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); +// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) +// { +// array_push($termineArray, $termin); +// } +// else +// { +// $data['error']='true'; +// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; +// return $data; +// } + } + foreach($termineArray as $key=>$t) + { + $termineArray[$key] = (object) $t; + } + $pruefung->termine = $termineArray; + } + + $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 = get_uid(); + $pruefung->pruefungsintervall = $pruefungsintervall; + if($lehrveranstaltungen !== null) + { + foreach ($lehrveranstaltungen as $lv) + { + if($lv != "null") + { + array_push($pruefung->lehrveranstaltungen, $lv); + } + } + } + if($pruefung->save(false)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + + //TODO Mail-Inhalt fehlt + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Löscht Lehrveranstaltungen von einer Prüfung + * @param int $lvId ID der Lehrveranstaltung + * @param int $pruefung_id ID der Prüfung + * @return Array + */ +function deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id) +{ + $pruefung = new pruefungCis(); + $pruefung->load($pruefung_id); + if($pruefung->deleteLehrveranstaltungPruefung($lvId, $pruefung_id)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Storniert eine Prüfung + * @param int $pruefung_id ID der Prüfung + * @return Array + */ +function stornoPruefung($pruefung_id) +{ + $pruefung = new pruefungCis(); + if($pruefung->pruefungStornieren($pruefung_id)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Löscht einen Termin einer Prüfung + * @param int $pruefung_id ID der Prüfung + * @param int $pruefungstermin_id ID des Termins + * @return Array + */ +function deleteTermin($pruefung_id, $pruefungstermin_id) +{ + $pruefung = new pruefungCis(); + $pruefung->load($pruefung_id); + if($pruefung->deleteTerminPruefung($pruefungstermin_id)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Lädt alle Prüfungen eines Mitarbeiters + * @param String $mitarbeiter_uid UID des Mitarbeiters + * @return Array + */ +function getAllPruefungen($mitarbeiter_uid) +{ + $pruefung = new pruefungCis(); + if($pruefung->getAllPruefungen($mitarbeiter_uid)) + { + foreach ($pruefung->result as $prf) + { + $prf->getLehrveranstaltungenByPruefung(); + foreach($prf->lehrveranstaltungen as $key=>$lv) + { + $temp = new lehrveranstaltung($lv->lehrveranstaltung_id); + $array = $temp->cleanResult(); + $prf->lehrveranstaltungen[$key] = $array[0]; + } + $prf->getTermineByPruefung(); + } + $data['result']=$pruefung->result; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Überprüft ob das angegebene Datum innerhalb eines Prüfungsfensters ist + * @param int $pruefungsfenster_id ID des Prüfungsfensters + * @param String $datum + * @return boolean + */ +function checkTerminPruefungsfenster($pruefungsfenster_id, $datum) +{ + $pruefungsfenster = new pruefungsfenster($pruefungsfenster_id); + $date = new datum(); + if($date->between($pruefungsfenster->start, $pruefungsfenster->ende, $datum)) + { + return true; + } + return false; +} + +/** + * Überprüft ob es eine Kollision zu anderen Prüfungen des Mitarbeiters gibt + * @param String $uid UID des Mitarbeiters + * @param String $beginn Beginn des Termins + * @param String $ende Ende des Termins + * @return boolean + */ +function checkCollision($uid, $beginn, $ende) +{ + $collision = false; + $pruefung = new pruefungCis(); + $pruefung->getAllPruefungen($uid); + $datum = new datum(); + foreach($pruefung->result as $prf) + { + $prf->getTermineByPruefung(); + foreach($prf->termine as $termin) + { + if(($datum->between($termin->von, $termin->bis, $beginn)) || ($datum->between($termin->von, $termin->bis, $ende))) + { + $collision = true; + } + } + } + if($collision) + { + return true; + } + return false; +} ?> \ No newline at end of file diff --git a/cis/private/lehre/semupload.php b/cis/private/lehre/semupload.php index 5542732dd..1000a8294 100644 --- a/cis/private/lehre/semupload.php +++ b/cis/private/lehre/semupload.php @@ -102,7 +102,7 @@ $openpath = DOC_ROOT.'/documents/'.strtolower($stg_obj->kuerzel).'/'.$lv_obj->se if(is_file($openpath . $inhalt)) { writeCISlog('DELETE', "rm -r '$openpath$inhalt'"); - exec("rm -r '$openpath$inhalt'"); + exec("rm -r ".escapeshellarg($openpath.$inhalt)); echo '
'.$p->t('global/erfolgreichgelöscht').'
'; } else @@ -132,11 +132,11 @@ $openpath = DOC_ROOT.'/documents/'.strtolower($stg_obj->kuerzel).'/'.$lv_obj->se { if(!stristr($fn, '.php') && !stristr($fn, '.php3') && !stristr($fn,'.php4') && !stristr($fn, '.php5') && - !stristr($fn, '.cgi') && !stristr($fn, '.pl')) + !stristr($fn, '.cgi') && !stristr($fn, '.pl') && !stristr($fn, '.phtml')) { if(move_uploaded_file($_FILES['userfile']['tmp_name'],$openpath . $fn)) { - exec('sudo chown www-data:teacher "'.$openpath.$fn.'"'); + exec('sudo chown www-data:teacher '.escapeshellarg($openpath.$fn)); echo '
'.$p->t('semesterplan/fileErfolgreichHochgeladen').'
'; } else @@ -181,4 +181,4 @@ $openpath = DOC_ROOT.'/documents/'.strtolower($stg_obj->kuerzel).'/'.$lv_obj->se ?> - \ No newline at end of file + diff --git a/cis/private/lehre/upload.php b/cis/private/lehre/upload.php index a29cc218c..aad50cc72 100644 --- a/cis/private/lehre/upload.php +++ b/cis/private/lehre/upload.php @@ -623,7 +623,7 @@ } else { - if(!stristr($uploadfile, '.php') && !stristr($uploadfile, '.cgi') && !stristr($uploadfile, '.pl') && $file_name!='.htaccess') + if(!stristr($uploadfile, '.php') && !stristr($uploadfile, '.cgi') && !stristr($uploadfile, '.pl') && !stristr($uploadfile, '.phtml') && $file_name!='.htaccess') { if(copy($_FILES[$file]['tmp_name'], $uploadfile)) { @@ -646,7 +646,7 @@ } else { - if(!stristr($uploadfile, '.php') && !stristr($uploadfile, '.cgi') && !stristr($uploadfile, '.pl') && $file_name!='.htaccess') + if(!stristr($uploadfile, '.php') && !stristr($uploadfile, '.cgi') && !stristr($uploadfile, '.pl') && !stristr($uploadfile, '.phtml') && $file_name!='.htaccess') { if(copy($_FILES[$file]['tmp_name'], $uploadfile)) { @@ -679,7 +679,7 @@ } else { - if(!stristr($uploadfile, '.php') && !stristr($uploadfile, '.cgi') && !stristr($uploadfile, '.pl') && $file_name!='.htaccess') + if(!stristr($uploadfile, '.php') && !stristr($uploadfile, '.cgi') && !stristr($uploadfile, '.pl') && !stristr($uploadfile, '.phtml') && $file_name!='.htaccess') { if(copy($_FILES[$file]['tmp_name'], $uploadfile)) { @@ -702,7 +702,7 @@ } else { - if(!stristr($uploadfile, '.php') && !stristr($uploadfile, '.cgi') && !stristr($uploadfile, '.pl') && $file_name!='.htaccess') + if(!stristr($uploadfile, '.php') && !stristr($uploadfile, '.cgi') && !stristr($uploadfile, '.pl') && !stristr($uploadfile, '.phtml') && $file_name!='.htaccess') { if(copy($_FILES[$file]['tmp_name'], $uploadfile)) { @@ -1331,7 +1331,7 @@ { if(!@file_exists($dest_dir->path.'/'.$new_file_name_) && !@is_dir($dest_dir->path.'/'.$new_file_name_)) { - if(!stristr($new_file_name_, '.php') && !stristr($new_file_name_, '.cgi') && !stristr($new_file_name_, '.pl') && $new_file_name_!='.htaccess') + if(!stristr($new_file_name_, '.php') && !stristr($new_file_name_, '.cgi') && !stristr($new_file_name_, '.pl') && !stristr($new_file_name_, '.phtml') && $new_file_name_!='.htaccess') { rename($dest_dir->path.'/'.$entry, $dest_dir->path.'/'.$new_file_name_); diff --git a/cis/private/pdfExport.php b/cis/private/pdfExport.php index 646ff8d68..f80346eb0 100644 --- a/cis/private/pdfExport.php +++ b/cis/private/pdfExport.php @@ -33,6 +33,7 @@ require_once('../../include/akte.class.php'); require_once('../../include/konto.class.php'); require_once('../../include/benutzer.class.php'); require_once('../../include/vorlage.class.php'); +require_once('../../include/addon.class.php'); if (!$db = new basis_db()) die('Fehler beim Oeffnen der Datenbankverbindung'); @@ -89,31 +90,34 @@ if(isset($_GET['abschlusspruefung_id'])) $params.='&abschlusspruefung_id='.$_GET['abschlusspruefung_id']; if(isset($_GET['typ'])) $params.='&typ='.$_GET['typ']; - +if(isset($_GET['output'])) + $output=$_GET['output']; +else + $output='pdf'; $konto = new konto(); if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) { - if($xsl=='Inskription' && (!$konto->checkStudienbeitrag($user, $_GET["ss"]))) - die('Der Studienbeitrag wurde noch nicht bezahlt'); + if(($xsl=='Inskription' || $xsl == 'Studienblatt') && (!$konto->checkStudienbeitrag($user, $_GET["ss"]))) + die('Der Studienbeitrag wurde noch nicht bezahlt'); if(isset($_GET['buchungsnummern'])) { - //Beim Drucken von Buchungsbestaetigungen pruefen ob diese Buchungen auch zu diesem Benutzer gehoeren - $buchungsnr = explode(';',$_GET['buchungsnummern']); - $user_obj = new benutzer(); - $user_obj->load($user); - foreach($buchungsnr as $bnr) + //Beim Drucken von Buchungsbestaetigungen pruefen ob diese Buchungen auch zu diesem Benutzer gehoeren + $buchungsnr = explode(';',$_GET['buchungsnummern']); + $user_obj = new benutzer(); + $user_obj->load($user); + foreach($buchungsnr as $bnr) + { + if($bnr!='') { - if($bnr!='') - { - $konto->load($bnr); - if($konto->person_id!=$user_obj->person_id) - die('Sie haben keine Berechtigung fuer diese Buchung'); - if($konto->getDifferenz($bnr)!=0) - die('Diese Zahlung wurde noch nicht beglichen'); - } + $konto->load($bnr); + if($konto->person_id!=$user_obj->person_id) + die('Sie haben keine Berechtigung fuer diese Buchung'); + if($konto->getDifferenz($bnr)!=0) + die('Diese Zahlung wurde noch nicht beglichen'); } + } } $xml_url=XML_ROOT.$xml.$params; //echo $xml_url; @@ -134,49 +138,217 @@ if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) { if($xsl_stg_kz=='') $xsl_stg_kz='0'; - + $vorlage->getAktuelleVorlage($xsl_stg_kz, $xsl, $version); } - - // Load the XSL source - $xsl_doc = new DOMDocument; - - if(!$xsl_doc->loadXML($vorlage->text)) - die('unable to load xsl'); - - // Configure the transformer - $proc = new XSLTProcessor; - $proc->importStyleSheet($xsl_doc); // attach the xsl rules - - $buffer = $proc->transformToXml($xml_doc); - //in $buffer steht nun das xsl-fo file mit den daten - $buffer = ''.substr($buffer, strpos($buffer,"\n"),strlen($buffer)); - - //Pdf erstellen - $fo2pdf = new XslFo2Pdf(); - - //wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen - $nachname=''; + + if(mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument')) + { + switch($vorlage->mimetype) + { + case 'application/vnd.oasis.opendocument.text': + $endung = 'odt'; + break; + case 'application/vnd.oasis.opendocument.spreadsheet': + $endung = 'ods'; + break; + default: + $endung = 'pdf'; + } + + // Load the XSL source + $xsl_doc = new DOMDocument; + + if(!$xsl_doc->loadXML($vorlage->text)) + die('unable to load xsl'); + + // Configure the transformer + $proc = new XSLTProcessor; + $proc->importStyleSheet($xsl_doc); // attach the xsl rules + + $buffer = $proc->transformToXml($xml_doc); + //echo $buffer; + //exit; + $tempfolder = '/tmp/'.uniqid(); + mkdir($tempfolder); + chdir($tempfolder); + file_put_contents('content.xml', $buffer); + + // Wenn ein Style XSL uebergeben wurde wird ein zweites XML File erstellt mit den + // Styleanweisungen und ebenfalls zum Zip hinzugefuegt + if(isset($_GET['style_xsl'])) + { + $style_xsl=$_GET['style_xsl']; + $style_vorlage = new vorlage(); + $style_vorlage->getAktuelleVorlage($xsl_stg_kz, $style_xsl, $version); + $style_xsl_doc = new DOMDocument; + if(!$style_xsl_doc->loadXML($style_vorlage->text)) + die('unable to load xsl'); + + // Configure the transformer + $style_proc = new XSLTProcessor; + $style_proc->importStyleSheet($style_xsl_doc); // attach the xsl rules + + $stylebuffer = $style_proc->transformToXml($xml_doc); + + file_put_contents('styles.xml', $stylebuffer); + } + + $vorlage_found=false; + $addons = new addon(); + + foreach($addons->aktive_addons as $addon) + { + $zipfile = DOC_ROOT.'addons/'.$addon.'/system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung; + + if(file_exists($zipfile)) + { + $vorlage_found=true; + break; + } + } + if(!$vorlage_found) + $zipfile = DOC_ROOT.'system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung; + + + $tempname_zip = 'out.zip'; + if(copy($zipfile, $tempname_zip)) + { + exec("zip $tempname_zip content.xml"); + if(isset($_GET['style_xsl'])) + exec("zip $tempname_zip styles.xml"); + + clearstatcache(); + if($vorlage->bezeichnung!='') + $filename = $vorlage->bezeichnung; + else + $filename = $vorlage->vorlage_kurzbz; + if($output == 'pdf') + { + if($xsl == 'LV_Informationen') + { + $studiengang = new studiengang($_GET['stg_kz']); + $studiensemester = new studiensemester($_GET['ss']); + $tempPdfName = $vorlage->vorlage_kurzbz.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz.'.pdf'; + $filename = $filename.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz.'.pdf'; + } + elseif($xsl == "Honorarvertrag") + { + $tempPdfName = $vorlage->vorlage_kurzbz.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname.'.pdf'; + $filename = $filename.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname.'.pdf'; + } + elseif($xsl == "Studienordnung") + { + $studienordnung = new studienordnung(); + $studienordnung->loadStudienordnung($_GET['studienordnung_id']); + $filename = $filename.'_'.$studienordnung->studiengangkurzbzlang.'.pdf'; + $tempPdfName = $vorlage->vorlage_kurzbz.'.pdf'; + } + else + { + $tempPdfName = $vorlage->vorlage_kurzbz.'.pdf'; + $filename = $filename.'.pdf'; + } + exec("unoconv -e IsSkipEmptyPages=false --stdout -f pdf $tempname_zip > $tempPdfName"); + + $fsize = filesize($tempPdfName); + $handle = fopen($tempPdfName,'r'); + header('Content-type: application/pdf'); + header('Content-Disposition: attachment; filename="'.$filename.'"'); + header('Content-Length: '.$fsize); + } + else if($output =='odt') + { + if($xsl == "Studienordnung") + { + $studienordnung = new studienordnung(); + $studienordnung->loadStudienordnung($_GET['studienordnung_id']); + $filename = $filename.'_'.$studienordnung->studiengangkurzbzlang; + } + $fsize = filesize($tempname_zip); + $handle = fopen($tempname_zip,'r'); + header('Content-type: '.$vorlage->mimetype); + header('Content-Disposition: attachment; filename="'.$filename.'.'.$endung.'"'); + header('Content-Length: '.$fsize); + } + else if($output =='doc') + { + $tempPdfName = $vorlage->vorlage_kurzbz.'.doc'; + if($xsl == "Studienordnung") + { + $studienordnung = new studienordnung(); + $studienordnung->loadStudienordnung($_GET['studienordnung_id']); + $filename = $filename.'_'.$studienordnung->studiengangkurzbzlang.'.doc'; + } + else + { + $filename = $filename.'.doc'; + } + exec("unoconv -e IsSkipEmptyPages=false --stdout -f doc $tempname_zip > $tempPdfName"); + + $fsize = filesize($tempPdfName); + $handle = fopen($tempPdfName,'r'); + header('Content-type: application/vnd.ms-word'); + header('Content-Disposition: attachment; filename="'.$filename.'"'); + header('Content-Length: '.$fsize); + } + while (!feof($handle)) + { + echo fread($handle, 8192); + } + fclose($handle); + + unlink('content.xml'); + if(isset($_GET['style_xsl'])) + unlink('styles.xml'); + unlink($tempname_zip); + if($output=='pdf' || $output=='doc') + unlink($filename); + rmdir($tempfolder); + } + } + else + { + // Load the XSL source + $xsl_doc = new DOMDocument; + + if(!$xsl_doc->loadXML($vorlage->text)) + die('unable to load xsl'); + + // Configure the transformer + $proc = new XSLTProcessor; + $proc->importStyleSheet($xsl_doc); // attach the xsl rules + + $buffer = $proc->transformToXml($xml_doc); + //in $buffer steht nun das xsl-fo file mit den daten + $buffer = ''.substr($buffer, strpos($buffer,"\n"),strlen($buffer)); + + //Pdf erstellen + $fo2pdf = new XslFo2Pdf(); + + //wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen + $nachname=''; - if(isset($_GET['uid']) && $_GET['uid']!='') - { + if(isset($_GET['uid']) && $_GET['uid']!='') + { $uid = str_replace(';','',$_GET['uid']); $qry = "SELECT nachname FROM campus.vw_benutzer WHERE uid=".$db->db_add_param($uid); - + if($result = $db->db_query($qry)) { - if($row = $db->db_fetch_object($result)) - { - $nachname = '_'.$row->nachname; - } + if($row = $db->db_fetch_object($result)) + { + $nachname = '_'.$row->nachname; + } } - } - $filename=$xsl.$nachname; - - if (!$fo2pdf->generatePdf($buffer, $filename, "D")) - { + } + $filename=$xsl.$nachname; + + if (!$fo2pdf->generatePdf($buffer, $filename, "D")) + { echo('Failed to generate PDF'); + } } } else diff --git a/cis/private/profile/dokumente.php b/cis/private/profile/dokumente.php index 6ac8d804a..00d833287 100755 --- a/cis/private/profile/dokumente.php +++ b/cis/private/profile/dokumente.php @@ -135,6 +135,7 @@ echo $p->t('global/studiensemester')." - - - - ".$p->t('incoming/dokumenttyp').": - - - - -   - - - - - - - - "; - -} -else -{ - echo "Es wurde keine Person_id angegeben"; -} - -?> - - diff --git a/cis/testtool/admin/index.php b/cis/testtool/admin/index.php index 06a667cbb..d8f02f142 100644 --- a/cis/testtool/admin/index.php +++ b/cis/testtool/admin/index.php @@ -518,7 +518,7 @@ echo '
'; //Liste der Studiengänge echo 'Studiengang: + + + + "; + + echo " + + + + + + +
Dokument:
Anmerkung:
"; +} +else +{ + echo "Es wurde keine notiz_id angegeben"; +} +?> + + + diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index 250d74c27..35c70db7a 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -2436,11 +2436,14 @@ if(!$error) //Speichert einen Noteneintrag $noten = new zeugnisnote(); + $lehrveranstaltung_id = filter_input(INPUT_POST, 'lehrveranstaltung_id'); + $student_uid = filter_input(INPUT_POST, 'student_uid'); + $studiensemester_kurzbz = filter_input(INPUT_POST, 'studiensemester_kurzbz'); - if(isset($_POST['lehrveranstaltung_id']) && isset($_POST['student_uid']) && isset($_POST['studiensemester_kurzbz'])) + if(!is_null($lehrveranstaltung_id) && !is_null($student_uid) && !is_null($studiensemester_kurzbz)) { //Berechtigung pruefen - $qry = "SELECT studiengang_kz FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id=".$db->db_add_param($_POST['lehrveranstaltung_id'], FHC_INTEGER); + $qry = "SELECT studiengang_kz FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id=".$db->db_add_param($lehrveranstaltung_id, FHC_INTEGER); if($result = $db->db_query($qry)) { if($row = $db->db_fetch_object($result)) @@ -2461,7 +2464,7 @@ if(!$error) $errormsg = 'Fehler beim Ermitteln der LVA'; } - $qry = "SELECT studiengang_kz FROM public.tbl_student WHERE student_uid=".$db->db_add_param($_POST['student_uid']); + $qry = "SELECT studiengang_kz FROM public.tbl_student WHERE student_uid=".$db->db_add_param($student_uid); if($result = $db->db_query($qry)) { if($row = $db->db_fetch_object($result)) @@ -2494,11 +2497,28 @@ if(!$error) else { - if($noten->load($_POST['lehrveranstaltung_id'], $_POST['student_uid'], $_POST['studiensemester_kurzbz'])) + if($noten->load($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz)) { $noten->new = false; $noten->updateamum = date('Y-m-d H:i:s'); $noten->updatevon = $user; + $log = new log(); + $log->executetime = date('Y-m-d H:i:s'); + $log->mitarbeiter_uid = $user; + $log->beschreibung = "Ändern der Note ".$noten->note." bei ".$noten->student_uid; + $log->sql = 'UPDATE lehre.tbl_zeugnisnote SET '. + 'note='.$db->db_add_param($noten->note).', '. + 'punkte='.$db->db_add_param($noten->punkte).','. + 'uebernahmedatum='.$db->db_add_param($noten->uebernahmedatum).', '. + 'benotungsdatum='.$db->db_add_param($noten->benotungsdatum).', '. + 'bemerkung='.$db->db_add_param($noten->bemerkung).', '. + 'updateamum= '.$db->db_add_param($noten->updateamum).', '. + 'updatevon='.$db->db_add_param($noten->updatevon).' '. + 'WHERE lehrveranstaltung_id='.$db->db_add_param($noten->lehrveranstaltung_id, FHC_INTEGER).' '. + 'AND student_uid='.$db->db_add_param($noten->student_uid).' '. + 'AND studiensemester_kurzbz='.$db->db_add_param($noten->studiensemester_kurzbz).';'; + $log->sqlundo = $noten->getUndo('update'); + $log->save(true); } else { @@ -2789,11 +2809,14 @@ if(!$error) //Loescht einen Noteneintrag $noten = new zeugnisnote(); + $lehrveranstaltung_id = filter_input(INPUT_POST, 'lehrveranstaltung_id'); + $student_uid = filter_input(INPUT_POST, 'student_uid'); + $studiensemester_kurzbz = filter_input(INPUT_POST, 'studiensemester_kurzbz'); - if(isset($_POST['lehrveranstaltung_id']) && isset($_POST['student_uid']) && isset($_POST['studiensemester_kurzbz'])) + if(!is_null($lehrveranstaltung_id) && !is_null($student_uid) && !is_null($studiensemester_kurzbz)) { //Berechtigung pruefen - $qry = "SELECT studiengang_kz FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id=".$db->db_add_param($_POST['lehrveranstaltung_id'], FHC_INTEGER); + $qry = "SELECT studiengang_kz FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id=".$db->db_add_param($lehrveranstaltung_id, FHC_INTEGER); if($result = $db->db_query($qry)) { if($row = $db->db_fetch_object($result)) @@ -2814,7 +2837,7 @@ if(!$error) $errormsg = 'Fehler beim Ermitteln der LVA'; } - $qry = "SELECT studiengang_kz FROM public.tbl_student WHERE student_uid=".$db->db_add_param($_POST['student_uid']); + $qry = "SELECT studiengang_kz FROM public.tbl_student WHERE student_uid=".$db->db_add_param($student_uid); if($result = $db->db_query($qry)) { if($row = $db->db_fetch_object($result)) @@ -2846,9 +2869,19 @@ if(!$error) } else { - - if($noten->delete($_POST['lehrveranstaltung_id'], $_POST['student_uid'], $_POST['studiensemester_kurzbz'])) + $noten->load($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz); + if($noten->delete($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz)) { + $log = new log(); + $log->executetime = date('Y-m-d H:i:s'); + $log->mitarbeiter_uid = $user; + $log->beschreibung = "Löschen der Note ".$noten->note." bei ".$noten->student_uid; + $log->sql = "DELETE FROM lehre.tbl_zeugnisnote WHERE + lehrveranstaltung_id=".$db->db_add_param($lehrveranstaltung_id, FHC_INTEGER, false)." AND + student_uid=".$db->db_add_param($student_uid)." AND + studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz).";"; + $log->sqlundo = $noten->getUndo('insert'); + $log->save(true); $return = true; } else diff --git a/include/dms.class.php b/include/dms.class.php index 0e1e07d92..08f28c997 100644 --- a/include/dms.class.php +++ b/include/dms.class.php @@ -220,6 +220,9 @@ class dms extends basis_db */ public function deleteVersion($dms_id, $version) { + $dms = new dms(); + $dms->load($dms_id, $version); + $qry ="DELETE FROM campus.tbl_dms_version WHERE dms_id = ".$this->db_add_param($dms_id, FHC_INTEGER)." and version =".$this->db_add_param($version, FHC_INTEGER).';'; if($this->db_query($qry)) @@ -227,13 +230,20 @@ class dms extends basis_db $qry_anzahl ="SELECT 1 FROM campus.tbl_dms_version WHERE dms_id =".$this->db_add_param($dms_id, FHC_INTEGER).';'; if($result = $this->db_query($qry_anzahl)) { - // Wenn letzte Version gelöscht wurde -> lösche gesamten Eintrag + // File der Version im Filesystem löschen + if(is_file(DMS_PATH.$dms->filename) && !unlink(DMS_PATH.$dms->filename)) + { + $this->errormsg = "Fehler beim Löschen des Dokuments aufgetreten"; + return false; + } + + // Wenn letzte Version gelöscht wurde -> lösche gesamten Eintrag if($this->db_num_rows($result) == 0 ) { if(!$this->deleteDms($dms_id)) { $this->errormsg = "Fehler beim Löschen aufgetreten"; - return false; + return false; } else return true; @@ -254,6 +264,10 @@ class dms extends basis_db */ public function deleteDms($dms_id) { + $this->load($dms_id); + $this->getAllVersions($dms_id); + $error = false; + // lösche Versionen $qry ="BEGIN;DELETE FROM campus.tbl_dms_version WHERE dms_id =".$this->db_add_param($dms_id, FHC_INTEGER)."; "; $qry.="DELETE FROM fue.tbl_projekt_dokument WHERE dms_id=".$this->db_add_param($dms_id, FHC_INTEGER)."; "; @@ -261,12 +275,28 @@ class dms extends basis_db if($this->db_query($qry)) { $this->db_query('COMMIT;'); - return true; + + // Alle Versionen der Datei im Filesystem löschen + foreach($this->result as $obj) + { + if(is_file(DMS_PATH.$obj->filename) && !unlink(DMS_PATH.$obj->filename)) + $error = true; + } + + if($error) + { + $this->errormsg = "Fehler beim Löschen des Dokuments aufgetreten"; + return false; + } + else + { + return true; + } } else { $this->db_query('ROLLBACK;'); - $this->errormsg = "Fehler beim Löschen des Eintrages aufgetreten"; + $this->errormsg = "Fehler beim Löschen des Eintrages aufgetreten"; return false; } } @@ -841,6 +871,55 @@ class dms extends basis_db return false; } } + + /** + * Gibt die Dokumente einer Notiz zurück + * @param int $notiz_id + * @return boolean + */ + public function getDokumenteNotiz($notiz_id) + { + $qry = "SELECT * + FROM + campus.tbl_dms + JOIN campus.tbl_dms_version USING(dms_id) + JOIN public.tbl_notiz_dokument USING(dms_id) + WHERE (dms_id, version) in( + SELECT dms_id, max(version) + FROM campus.tbl_dms_version + GROUP BY dms_id) + AND tbl_notiz_dokument.notiz_id=".$this->db_add_param($notiz_id)." + ORDER BY name;"; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new dms(); + + $obj->dms_id = $row->dms_id; + $obj->version = $row->version; + $obj->oe_kurzbz = $row->oe_kurzbz; + $obj->dokument_kurzbz = $row->dokument_kurzbz; + $obj->kategorie_kurzbz = $row->kategorie_kurzbz; + $obj->filename = $row->filename; + $obj->mimetype = $row->mimetype; + $obj->name = $row->name; + $obj->beschreibung = $row->beschreibung; + $obj->letzterzugriff = $row->letzterzugriff; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->updateamum = $row->updateamum; + + $this->result[] = $obj; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } /** * Laedt die Dokumente einer Projektphase diff --git a/include/js/jqSOAPClient.js b/include/js/jqSOAPClient.js index f54bc0846..8012247b3 100644 --- a/include/js/jqSOAPClient.js +++ b/include/js/jqSOAPClient.js @@ -14,6 +14,7 @@ */ //Singleton SOAP Client var SOAPClient = { + AjaxAsync: true, Proxy: "", SOAPServer: "", ContentType: "text/xml", @@ -44,7 +45,8 @@ var SOAPClient = { } } $.ajax({ - type: "POST", + async: SOAPClient.AjaxAsync, + type: "POST", url: SOAPClient.Proxy, dataType: "xml", processData: false, diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php index dddb89a87..9444c8146 100644 --- a/include/lehrveranstaltung.class.php +++ b/include/lehrveranstaltung.class.php @@ -2088,8 +2088,7 @@ class lehrveranstaltung extends basis_db $qry.=" AND tbl_studienplan_lehrveranstaltung.semester=" . $this->db_add_param($semester, FHC_INTEGER); } $qry.=" ORDER BY bezeichnung;"; - //TODO - $this->errormsg = $qry; + $this->lehrveranstaltungen = array(); if ($result = $this->db_query($qry)) { diff --git a/include/notiz.class.php b/include/notiz.class.php index 7d6e05cbd..eac9f5434 100644 --- a/include/notiz.class.php +++ b/include/notiz.class.php @@ -1,458 +1,520 @@ - and - */ -require_once(dirname(__FILE__).'/basis_db.class.php'); - -class notiz extends basis_db -{ - public $new; - public $result=array(); - - //Tabellenspalten - public $notiz_id; - public $titel; - public $text; - public $verfasser_uid; - public $bearbeiter_uid; - public $start; - public $ende; - public $erledigt; - public $insertamum; - public $insertvon; - public $updateamum; - public $updatevon; - - public $projekt_kurzbz; - public $projektphase_id; - public $projekttask_id; - public $uid; - public $person_id; - public $prestudent_id; - public $bestellung_id; - public $lehreinheit_id; - public $anrechnung_id; - - /** - * Konstruktor - * @param $notiz_id - */ - public function __construct($notiz_id = null) - { - parent::__construct(); - - if($notiz_id != null) - $this->load($notiz_id); - } - - /** - * Laedt eine Notiz - * @param $notiz_id - * @return true wenn ok, false im Fehlerfall - */ - public function load($notiz_id) - { - if(!is_numeric($notiz_id)) - { - $this->errormsg = 'NotizID ist ungueltig'; - return false; - } - - $qry = "SELECT * FROM public.tbl_notiz WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->notiz_id=$row->notiz_id; - $this->titel=$row->titel; - $this->text=$row->text; - $this->verfasser_uid=$row->verfasser_uid; - $this->bearbeiter_uid=$row->bearbeiter_uid; - $this->start=$row->start; - $this->ende=$row->ende; - $this->erledigt=$this->db_parse_bool($row->erledigt); - $this->insertamum=$row->insertamum; - $this->insertvon=$row->insertvon; - $this->updateamum=$row->updateamum; - $this->updatevon=$row->updatevon; - - return true; - } - else - { - $this->errormsg = 'Datensatz wurde nicht gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Löscht eine Notiz - * @param $notiz_id - * @return true wenn ok, false im Fehlerfall - */ - public function delete($notiz_id) - { - if(!is_numeric($notiz_id)) - { - $this->errormsg = 'NotizID ist ungueltig'; - return false; - } - - $qry = "Delete FROM public.tbl_notiz WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); - - if(!$this->db_query($qry)) - { - $this->errormsg = 'Fehler beim Loeschen der Daten'; - return false; - } - return true; - } - - /** - * Prueft die Daten vor dem Speichern - * auf Gueltigkeit - */ - public function validate() - { - return true; - } - - /** - * Speichert den aktuellen Datensatz in die Datenbank - * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt - * andernfalls wird der Datensatz mit der ID in $notiz_id aktualisiert - * @return true wenn ok, false im Fehlerfall - */ - public function save($new=null) - { - if($new==null) - $new=$this->new; - - if(!$this->validate()) - return false; - - if($new) - { - //Neuen Datensatz einfuegen - $qry='BEGIN;INSERT INTO public.tbl_notiz (titel, text, verfasser_uid, - bearbeiter_uid, start, ende, erledigt, insertamum, insertvon, - updateamum, updatevon) VALUES('. - $this->db_add_param($this->titel).', '. - $this->db_add_param($this->text).', '. - $this->db_add_param($this->verfasser_uid).','. - $this->db_add_param($this->bearbeiter_uid).','. - $this->db_add_param($this->start).','. - $this->db_add_param($this->ende).','. - $this->db_add_param($this->erledigt,FHC_BOOLEAN).','. - $this->db_add_param($this->insertamum).','. - $this->db_add_param($this->insertvon).','. - $this->db_add_param($this->updateamum).','. - $this->db_add_param($this->updatevon).');'; - } - else - { - $qry='UPDATE public.tbl_notiz SET '. - 'titel='.$this->db_add_param($this->titel).', '. - 'text='.$this->db_add_param($this->text).', '. - 'verfasser_uid='.$this->db_add_param($this->verfasser_uid).', '. - 'bearbeiter_uid='.$this->db_add_param($this->bearbeiter_uid).', '. - 'start='.$this->db_add_param($this->start).', '. - 'ende='.$this->db_add_param($this->ende).', '. - 'erledigt='.$this->db_add_param($this->erledigt,FHC_BOOLEAN).', '. - 'updateamum='.$this->db_add_param($this->updateamum).', '. - 'updatevon='.$this->db_add_param($this->updatevon).' '. - 'WHERE notiz_id='.$this->db_add_param($this->notiz_id,FHC_INTEGER).';'; - } - - if($this->db_query($qry)) - { - if($new) - { - $qry="SELECT currval('seq_notiz_notiz_id') as id;"; - if($result = $this->db_query($qry)) - { - if($row = $this->db_fetch_object($result)) - { - $this->notiz_id = $row->id; - $this->db_query('COMMIT;'); - return true; - } - else - { - $this->errormsg = 'Fehler beim Lesen der Sequence'; - $this->db_query('ROLLBACK'); - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Lesen der Sequence'; - $this->db_query('ROLLBACK'); - return false; - } - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern des Datensatzes'; - return false; - } - } - - /** - * Speichert die Zuordnung einer Notiz - * - */ - public function saveZuordnung() - { - $qry = "INSERT INTO public.tbl_notizzuordnung(notiz_id, projekt_kurzbz, projektphase_id, projekttask_id, - uid, person_id, prestudent_id, bestellung_id, lehreinheit_id, anrechnung_id) VALUES(". - $this->db_add_param($this->notiz_id, FHC_INTEGER).','. - $this->db_add_param($this->projekt_kurzbz).','. - $this->db_add_param($this->projektphase_id, FHC_INTEGER).','. - $this->db_add_param($this->projekttask_id, FHC_INTEGER).','. - $this->db_add_param($this->uid).','. - $this->db_add_param($this->person_id, FHC_INTEGER).','. - $this->db_add_param($this->prestudent_id, FHC_INTEGER).','. - $this->db_add_param($this->bestellung_id, FHC_INTEGER).','. - $this->db_add_param($this->lehreinheit_id, FHC_INTEGER).','. - $this->db_add_param($this->anrechnung_id, FHC_INTEGER).');'; - - if($this->db_query($qry)) - { - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern der Daten'; - return false; - } - } - - /** - * - * Laedt die Notizen - * @param $erledigt - * @param $projekt_kurzbz - * @param $projektphase_id - * @param $projekttask_id - * @param $uid - * @param $person_id - * @param $prestudent_id - * @param $bestellung_id - * @param $user - * @param $lehreinheit_id - * @param $anrechnung_id - * @return boolean - */ - public function getNotiz($erledigt=null, $projekt_kurzbz=null, $projektphase_id=null, $projekttask_id=null, $uid=null, $person_id=null, $prestudent_id=null, $bestellung_id=null, $user=null, $lehreinheit_id=null, $stundenplandev_id=null, $anrechnung_id=null) - { - $qry = "SELECT - * - FROM - public.tbl_notiz - LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) - WHERE 1=1"; - - if(!is_null($erledigt)) - { - if($erledigt) - $qry.=" AND erledigt=true"; - else - $qry.=" AND erledigt=false"; - } - if($projekt_kurzbz!='') - $qry.=" AND projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); - if($projektphase_id!='') - $qry.=" AND projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER); - if($projekttask_id!='') - $qry.=" AND projekttask_id=".$this->db_add_param($projekttask_id, FHC_INTEGER); - if($uid!='') - $qry.=" AND uid=".$this->db_add_param($uid); - if($person_id!='') - $qry.=" AND person_id=".$this->db_add_param($person_id, FHC_INTEGER); - if($prestudent_id!='') - $qry.=" AND prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); - if($bestellung_id!='') - $qry.=" AND bestellung_id=".$this->db_add_param($bestellung_id, FHC_INTEGER); - if($user!='') - $qry.=" AND (verfasser_uid=".$this->db_add_param($user)." OR bearbeiter_uid=".$this->db_add_param($user).")"; - if($lehreinheit_id!='') - $qry.=" AND lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER); - if($anrechnung_id!='') - $qry.=" AND anrechnung_id=".$this->db_add_param($anrechnung_id, FHC_INTEGER); - - $qry.=' ORDER BY start, ende, titel'; - - if($result = $this->db_query($qry)) - { - while($row = $this->db_fetch_object($result)) - { - $obj = new notiz(); - - $obj->notiz_id=$row->notiz_id; - $obj->titel=$row->titel; - $obj->text=$row->text; - $obj->verfasser_uid=$row->verfasser_uid; - $obj->bearbeiter_uid=$row->bearbeiter_uid; - $obj->start=$row->start; - $obj->ende=$row->ende; - $obj->erledigt=$this->db_parse_bool($row->erledigt); - $obj->insertamum=$row->insertamum; - $obj->insertvon=$row->insertvon; - $obj->updateamum=$row->updateamum; - $obj->updatevon=$row->updatevon; - - $this->result[] = $obj; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * - * Laedt die Notizen vom Bewerbungstool - * @param $person_id int - * @return boolean - */ - public function getBewerbungstoolNotizen($person_id) - { - $qry = 'SELECT - * - FROM - public.tbl_notiz - LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) - WHERE person_id = ' . $this->db_add_param($person_id, FHC_INTEGER) . - ' AND insertvon = ' . $this->db_add_param('Bewerbungstool') . - ' ORDER BY notiz_id'; - - if($result = $this->db_query($qry)) - { - while($row = $this->db_fetch_object($result)) - { - $obj = new notiz(); - - $obj->notiz_id=$row->notiz_id; - $obj->titel=$row->titel; - $obj->text=$row->text; - $obj->verfasser_uid=$row->verfasser_uid; - $obj->bearbeiter_uid=$row->bearbeiter_uid; - $obj->start=$row->start; - $obj->ende=$row->ende; - $obj->erledigt=$this->db_parse_bool($row->erledigt); - $obj->insertamum=$row->insertamum; - $obj->insertvon=$row->insertvon; - $obj->updateamum=$row->updateamum; - $obj->updatevon=$row->updatevon; - - $this->result[] = $obj; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - - * - - * Laedt die Notizen - * @param $erledigt - * @param $projekt_kurzbz - * @param $projektphase_id - * @param $projekttask_id - * @param $uid - * @param $person_id - * @param $prestudent_id - * @param $bestellung_id - * @param $user - * @param $lehreinheit_id - * @param $anrechnung_id - * @return boolean - */ - public function getAnzahlNotizen($erledigt=null, $projekt_kurzbz=null, $projektphase_id=null, $projekttask_id=null, $uid=null, $person_id=null, $prestudent_id=null, $bestellung_id=null, $user=null, $lehreinheit_id=null, $anrechnung_id=null) - { - $qry = "SELECT - count(*) as anzahl - FROM - public.tbl_notiz - LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) - WHERE 1=1"; - - if(!is_null($erledigt)) - { - if($erledigt) - $qry.=" AND erledigt=true"; - else - $qry.=" AND erledigt=false"; - } - if($projekt_kurzbz!='') - $qry.=" AND projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); - if($projektphase_id!='') - $qry.=" AND projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER); - if($projekttask_id!='') - $qry.=" AND projekttask_id=".$this->db_add_param($projekttask_id, FHC_INTEGER); - if($uid!='') - $qry.=" AND uid=".$this->db_add_param($uid); - if($person_id!='') - $qry.=" AND person_id=".$this->db_add_param($person_id, FHC_INTEGER); - if($prestudent_id!='') - $qry.=" AND prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); - if($bestellung_id!='') - $qry.=" AND bestellung_id=".$this->db_add_param($bestellung_id, FHC_INTEGER); - if($user!='') - $qry.=" AND (verfasser_uid=".$this->db_add_param($user)." OR bearbeiter_uid=".$this->db_add_param($user).")"; - if($lehreinheit_id!='') - $qry.=" AND lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER); - if($anrechnung_id!='') - $qry.=" AND anrechnung_id=".$this->db_add_param($anrechnung_id, FHC_INTEGER); - - if($result = $this->db_query($qry)) - { - if($row = $this->db_fetch_object($result)) - return $row->anzahl; - else - { - $this->errormsg='Fehler beim Laden der Daten'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } -} + and + */ +require_once(dirname(__FILE__).'/basis_db.class.php'); +require_once(dirname(__FILE__).'/dms.class.php'); + +class notiz extends basis_db +{ + public $new; + public $result=array(); + public $dokumente=array(); + + //Tabellenspalten + public $notiz_id; + public $titel; + public $text; + public $verfasser_uid; + public $bearbeiter_uid; + public $start; + public $ende; + public $erledigt; + public $insertamum; + public $insertvon; + public $updateamum; + public $updatevon; + + public $projekt_kurzbz; + public $projektphase_id; + public $projekttask_id; + public $uid; + public $person_id; + public $prestudent_id; + public $bestellung_id; + public $lehreinheit_id; + public $anrechnung_id; + + /** + * Konstruktor + * @param $notiz_id + */ + public function __construct($notiz_id = null) + { + parent::__construct(); + + if($notiz_id != null) + $this->load($notiz_id); + } + + /** + * Laedt eine Notiz + * @param $notiz_id + * @return true wenn ok, false im Fehlerfall + */ + public function load($notiz_id) + { + if(!is_numeric($notiz_id)) + { + $this->errormsg = 'NotizID ist ungueltig'; + return false; + } + + $qry = "SELECT * FROM public.tbl_notiz WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->notiz_id=$row->notiz_id; + $this->titel=$row->titel; + $this->text=$row->text; + $this->verfasser_uid=$row->verfasser_uid; + $this->bearbeiter_uid=$row->bearbeiter_uid; + $this->start=$row->start; + $this->ende=$row->ende; + $this->erledigt=$this->db_parse_bool($row->erledigt); + $this->insertamum=$row->insertamum; + $this->insertvon=$row->insertvon; + $this->updateamum=$row->updateamum; + $this->updatevon=$row->updatevon; + $this->getDokumente($row->notiz_id); + + return true; + } + else + { + $this->errormsg = 'Datensatz wurde nicht gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Löscht eine Notiz + * @param $notiz_id + * @return true wenn ok, false im Fehlerfall + */ + public function delete($notiz_id) + { + if(!is_numeric($notiz_id)) + { + $this->errormsg = 'NotizID ist ungueltig'; + return false; + } + + // Dokumente der Notiz löschen + $this->getDokumente($notiz_id); + if(!empty($this->dokumente)) + { + $dms = new dms(); + + foreach($this->dokumente as $dms_id) + { + $dms->deleteDms($dms_id); + } + } + + $qry = "Delete FROM public.tbl_notiz WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); + + if(!$this->db_query($qry)) + { + $this->errormsg = 'Fehler beim Loeschen der Daten'; + return false; + } + return true; + } + + /** + * Prueft die Daten vor dem Speichern + * auf Gueltigkeit + */ + public function validate() + { + return true; + } + + /** + * Speichert den aktuellen Datensatz in die Datenbank + * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt + * andernfalls wird der Datensatz mit der ID in $notiz_id aktualisiert + * @return true wenn ok, false im Fehlerfall + */ + public function save($new=null) + { + if($new==null) + $new=$this->new; + + if(!$this->validate()) + return false; + + if($new) + { + //Neuen Datensatz einfuegen + $qry='BEGIN;INSERT INTO public.tbl_notiz (titel, text, verfasser_uid, + bearbeiter_uid, start, ende, erledigt, insertamum, insertvon, + updateamum, updatevon) VALUES('. + $this->db_add_param($this->titel).', '. + $this->db_add_param($this->text).', '. + $this->db_add_param($this->verfasser_uid).','. + $this->db_add_param($this->bearbeiter_uid).','. + $this->db_add_param($this->start).','. + $this->db_add_param($this->ende).','. + $this->db_add_param($this->erledigt,FHC_BOOLEAN).','. + $this->db_add_param($this->insertamum).','. + $this->db_add_param($this->insertvon).','. + $this->db_add_param($this->updateamum).','. + $this->db_add_param($this->updatevon).');'; + } + else + { + $qry='UPDATE public.tbl_notiz SET '. + 'titel='.$this->db_add_param($this->titel).', '. + 'text='.$this->db_add_param($this->text).', '. + 'verfasser_uid='.$this->db_add_param($this->verfasser_uid).', '. + 'bearbeiter_uid='.$this->db_add_param($this->bearbeiter_uid).', '. + 'start='.$this->db_add_param($this->start).', '. + 'ende='.$this->db_add_param($this->ende).', '. + 'erledigt='.$this->db_add_param($this->erledigt,FHC_BOOLEAN).', '. + 'updateamum='.$this->db_add_param($this->updateamum).', '. + 'updatevon='.$this->db_add_param($this->updatevon).' '. + 'WHERE notiz_id='.$this->db_add_param($this->notiz_id,FHC_INTEGER).';'; + } + + if($this->db_query($qry)) + { + if($new) + { + $qry="SELECT currval('seq_notiz_notiz_id') as id;"; + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + $this->notiz_id = $row->id; + $this->db_query('COMMIT;'); + return true; + } + else + { + $this->errormsg = 'Fehler beim Lesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Lesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; + return false; + } + } + + /** + * Speichert die Zuordnung einer Notiz + * + */ + public function saveZuordnung() + { + $qry = "INSERT INTO public.tbl_notizzuordnung(notiz_id, projekt_kurzbz, projektphase_id, projekttask_id, + uid, person_id, prestudent_id, bestellung_id, lehreinheit_id, anrechnung_id) VALUES(". + $this->db_add_param($this->notiz_id, FHC_INTEGER).','. + $this->db_add_param($this->projekt_kurzbz).','. + $this->db_add_param($this->projektphase_id, FHC_INTEGER).','. + $this->db_add_param($this->projekttask_id, FHC_INTEGER).','. + $this->db_add_param($this->uid).','. + $this->db_add_param($this->person_id, FHC_INTEGER).','. + $this->db_add_param($this->prestudent_id, FHC_INTEGER).','. + $this->db_add_param($this->bestellung_id, FHC_INTEGER).','. + $this->db_add_param($this->lehreinheit_id, FHC_INTEGER).','. + $this->db_add_param($this->anrechnung_id, FHC_INTEGER).');'; + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } + + /** + * Speichert ein Dokument zur Notiz + * @param int $dms_id + * @return boolean + */ + public function saveDokument($dms_id) + { + $qry = "INSERT INTO public.tbl_notiz_dokument(notiz_id, dms_id) VALUES(". + $this->db_add_param($this->notiz_id, FHC_INTEGER).','. + $this->db_add_param($dms_id, FHC_INTEGER).');'; + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } + + /** + * + * Laedt die Notizen + * @param $erledigt + * @param $projekt_kurzbz + * @param $projektphase_id + * @param $projekttask_id + * @param $uid + * @param $person_id + * @param $prestudent_id + * @param $bestellung_id + * @param $user + * @param $lehreinheit_id + * @param $anrechnung_id + * @return boolean + */ + public function getNotiz($erledigt=null, $projekt_kurzbz=null, $projektphase_id=null, $projekttask_id=null, $uid=null, $person_id=null, $prestudent_id=null, $bestellung_id=null, $user=null, $lehreinheit_id=null, $stundenplandev_id=null, $anrechnung_id=null) + { + $qry = "SELECT + * + FROM + public.tbl_notiz + LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) + WHERE 1=1"; + + if(!is_null($erledigt)) + { + if($erledigt) + $qry.=" AND erledigt=true"; + else + $qry.=" AND erledigt=false"; + } + if($projekt_kurzbz!='') + $qry.=" AND projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); + if($projektphase_id!='') + $qry.=" AND projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER); + if($projekttask_id!='') + $qry.=" AND projekttask_id=".$this->db_add_param($projekttask_id, FHC_INTEGER); + if($uid!='') + $qry.=" AND uid=".$this->db_add_param($uid); + if($person_id!='') + $qry.=" AND person_id=".$this->db_add_param($person_id, FHC_INTEGER); + if($prestudent_id!='') + $qry.=" AND prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); + if($bestellung_id!='') + $qry.=" AND bestellung_id=".$this->db_add_param($bestellung_id, FHC_INTEGER); + if($user!='') + $qry.=" AND (verfasser_uid=".$this->db_add_param($user)." OR bearbeiter_uid=".$this->db_add_param($user).")"; + if($lehreinheit_id!='') + $qry.=" AND lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER); + if($anrechnung_id!='') + $qry.=" AND anrechnung_id=".$this->db_add_param($anrechnung_id, FHC_INTEGER); + + $qry.=' ORDER BY start, ende, titel'; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new notiz(); + + $obj->notiz_id=$row->notiz_id; + $obj->titel=$row->titel; + $obj->text=$row->text; + $obj->verfasser_uid=$row->verfasser_uid; + $obj->bearbeiter_uid=$row->bearbeiter_uid; + $obj->start=$row->start; + $obj->ende=$row->ende; + $obj->erledigt=$this->db_parse_bool($row->erledigt); + $obj->insertamum=$row->insertamum; + $obj->insertvon=$row->insertvon; + $obj->updateamum=$row->updateamum; + $obj->updatevon=$row->updatevon; + $obj->getDokumente($row->notiz_id); + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * + * Laedt die Notizen vom Bewerbungstool + * @param $person_id int + * @return boolean + */ + public function getBewerbungstoolNotizen($person_id) + { + $qry = 'SELECT + * + FROM + public.tbl_notiz + LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) + WHERE person_id = ' . $this->db_add_param($person_id, FHC_INTEGER) . + ' AND insertvon = ' . $this->db_add_param('Bewerbungstool') . + ' ORDER BY notiz_id'; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new notiz(); + + $obj->notiz_id=$row->notiz_id; + $obj->titel=$row->titel; + $obj->text=$row->text; + $obj->verfasser_uid=$row->verfasser_uid; + $obj->bearbeiter_uid=$row->bearbeiter_uid; + $obj->start=$row->start; + $obj->ende=$row->ende; + $obj->erledigt=$this->db_parse_bool($row->erledigt); + $obj->insertamum=$row->insertamum; + $obj->insertvon=$row->insertvon; + $obj->updateamum=$row->updateamum; + $obj->updatevon=$row->updatevon; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + + * + + * Laedt die Notizen + * @param $erledigt + * @param $projekt_kurzbz + * @param $projektphase_id + * @param $projekttask_id + * @param $uid + * @param $person_id + * @param $prestudent_id + * @param $bestellung_id + * @param $user + * @param $lehreinheit_id + * @param $anrechnung_id + * @return boolean + */ + public function getAnzahlNotizen($erledigt=null, $projekt_kurzbz=null, $projektphase_id=null, $projekttask_id=null, $uid=null, $person_id=null, $prestudent_id=null, $bestellung_id=null, $user=null, $lehreinheit_id=null, $anrechnung_id=null) + { + $qry = "SELECT + count(*) as anzahl + FROM + public.tbl_notiz + LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) + WHERE 1=1"; + + if(!is_null($erledigt)) + { + if($erledigt) + $qry.=" AND erledigt=true"; + else + $qry.=" AND erledigt=false"; + } + if($projekt_kurzbz!='') + $qry.=" AND projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); + if($projektphase_id!='') + $qry.=" AND projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER); + if($projekttask_id!='') + $qry.=" AND projekttask_id=".$this->db_add_param($projekttask_id, FHC_INTEGER); + if($uid!='') + $qry.=" AND uid=".$this->db_add_param($uid); + if($person_id!='') + $qry.=" AND person_id=".$this->db_add_param($person_id, FHC_INTEGER); + if($prestudent_id!='') + $qry.=" AND prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); + if($bestellung_id!='') + $qry.=" AND bestellung_id=".$this->db_add_param($bestellung_id, FHC_INTEGER); + if($user!='') + $qry.=" AND (verfasser_uid=".$this->db_add_param($user)." OR bearbeiter_uid=".$this->db_add_param($user).")"; + if($lehreinheit_id!='') + $qry.=" AND lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER); + if($anrechnung_id!='') + $qry.=" AND anrechnung_id=".$this->db_add_param($anrechnung_id, FHC_INTEGER); + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + return $row->anzahl; + else + { + $this->errormsg='Fehler beim Laden der Daten'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Laedt die Dokumente der Notiz + * @return boolean + */ + public function getDokumente($notiz_id) + { + $qry = "SELECT dms_id FROM public.tbl_notiz_dokument WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $this->dokumente[] = $row->dms_id; + } + + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } +} diff --git a/include/person.class.php b/include/person.class.php index dacf3bf4a..9f85afc1f 100644 --- a/include/person.class.php +++ b/include/person.class.php @@ -848,5 +848,24 @@ class person extends basis_db } + public function getFullName($allFirstnames=FALSE) + { + $fullname = ""; + if((!is_null($this->titelpre)) && ($this->titelpre!="")) + $fullname .= $this->titelpre." "; + + $fullname .= $this->vorname." "; + + if(($allFirstnames) && ($this->vornamen != "") && (!is_null($this->vornamen))) + $fullname .= $this->vornamen." "; + + $fullname .= $this->nachname; + + if((!is_null($this->titelpost)) && ($this->titelpost!="")) + $fullname .= " ".$this->titelpost; + + return $fullname; + } + } ?> diff --git a/include/pruefungCis.class.php b/include/pruefungCis.class.php index 3e02e48c6..9f4ef58c2 100644 --- a/include/pruefungCis.class.php +++ b/include/pruefungCis.class.php @@ -1,719 +1,719 @@ - - */ - -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 $pruefungsintervall; //smallint - - 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; - } - - /** - * Prüft Attribute auf Ihre Richtigkeit - * @return boolean true, wenn alle Prüfungen positiv verlaufen, andernfalls false - */ - 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; - } - - /** - * speichert einen Prüfungs-Datensatz - * @param boolean $new gibt an ob es ich um einen neuen Datensatz (true) oder um ein update (false) handelt - * @return boolean true wenn ok; false im Fehlerfall - */ - 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, pruefungsintervall) ' - . '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(), ' - . $this->db_add_param($this->pruefungsintervall).'' - . ');'; - } - 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->beschreibung).', ' - . '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(), ' - . 'pruefungsintervall='.$this->db_add_param($this->pruefungsintervall).' ' - . '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, $termin->sammelklausur)) - { - $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 - { - if($this->termine !== NULL) - { - 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; - } - } - - /** - * Lädt einen Datensatz aus der Datenbank - * @param integer $pruefung_id ID der zu ladenden Prüfung - * @return boolean true, wenn ok; false im Fehlerfall - */ - 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 - { - if($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); - $this->pruefungsintervall = $row->pruefungsintervall; - } - return true; - } - } - - /** - * Lädt alle Prüfungen zu einer UID - * @param String $uid UID deren Prüfungen geladen werden sollen - * @param String $studiensemester_kurzbz optional kann das Laden auf ein Studiensemester beschränkt werden - * @return boolean true, wenn ok; false, im Fehlerfall - */ - public function getPruefungByMitarbeiter($uid, $studiensemester_kurzbz=null, $order=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); - } - if(!is_null($order)) - { - $qry .= ' ORDER BY '.$order; - } - $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->pruefungsintervall = $row->pruefungsintervall; - $this->result[] = $obj; - } - return true; - } - } - - /** - * speichert die zugehörigen LVs zu einer Prüfung - * @param Integer $lehrveranstaltung_id ID einer Lehrveranstaltung - * @param Integer $pruefung_id ID einer Prüfung - * @return boolean true, wenn ok; false, im Fehlerfall - */ - 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; - } - - /** - * lädt alle zum Objekt gehörenden Lehrveranstaltungen - * @return boolean true, wenn ok; false, im Fehlerfall - */ - 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; - } - - } - - /** - * speichert einen Termin zu Prüfung - * @param integer $pruefung_id ID einer Prüfung - * @param type $beginn Datum und Uhrzeit vom Beginn einer Prüfung - * @param type $ende Datum und Uhrzeit vom Ende einer Prüfung - * @param type $max maximale Teilnehmerzahl - * @param type $min minimale Teilnehmerzahl - * @return boolean true, wenn ok; false im Fehlerfall - */ - public function saveTerminPruefung($pruefung_id, $beginn, $ende, $max, $min, $sammelklausur) - { - 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, sammelklausur) 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).', ' - . $this->db_add_param($sammelklausur).');'; - - if(!$this->db_query($qry)) - { - $this->errormsg = "Termine konnten nicht gespeichert werden!"; - return false; - } - return true; - } - - /** - * Lädt alle Termine zum Prüfungs-Objekt - * @return boolean true, wenn ok; false, im Fehlerfall - */ - 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; - $obj->anmeldung_von= $row->anmeldung_von; - $obj->anmeldung_bis = $row->anmeldung_bis; - $obj->ort_kurzbz = $row->ort_kurzbz; - $obj->sammelklausur = $row->sammelklausur; - array_push($this->termine, $obj); - } - return true; - } - else - { - $this->errormsg = "Zugehörige Termine konnten nicht geladen werden."; - return false; - } - - } - - /** - * ändert einen Termin zur Prüfung - * @param integer $pruefungstermin_id ID eines Prüfungstermins - * @param integer $pruefung_id ID einer Prüfung - * @param type $beginn Datum und Uhrzeit vom Beginn einer Prüfung - * @param type $ende Datum und Uhrzeit vom Ende einer Prüfung - * @param type $max maximale Teilnehmerzahl - * @param type $min minimale Teilnehmerzahl - * @return boolean true, wenn ok; false im Fehlerfall - */ - 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; - } - - /** - * Setzt den Storniert-Status einer Prüfung auf True - * @param integer $pruefung_id ID einer Prüfung - * @return boolean true, wenn ok; false, im Fehlerfall - */ - 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; - } - - /** - * löscht die Verknüpfung zwischen einer Lehrveranstaltung und einer Prüfung - * @param integer $lehrveranstaltung_id ID einer Lehrveranstaltung - * @param integer $pruefung_id ID einer Prüfung - * @return boolean true, wenn ok; false, im Fehlerfall - */ - 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; - } - - /** - * löscht einen Prüfungstermin einer Prüfung - * @param integer $pruefungstermin_id ID eines Prüfungstermins - * @return boolean true, wenn ok; false, im Fehlerfall - */ - 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; - } - - /** - * Lädt alle Prüfungen zur angebenen Lehrveranstaltung - * @param String|Array $lehrveranstaltung_IDs einzelne ID einer Lehrveranstaltung oder ein Array von IDs - * @return boolean true, wenn ok; false, im Fehlerfall - */ - public function getPruefungByLv($lehrveranstaltung_IDs) - { - if(empty($lehrveranstaltung_IDs)) - { - $this->errormsg = "Keine Lehrveranstaltungen übergeben.
"; - return false; - } - - $in = ""; - if (is_array($lehrveranstaltung_IDs)) - { - foreach($lehrveranstaltung_IDs as $id) - { - $in.= $id.', '; - } - $in = substr($in, 0, -2); - } - else - { - $in = $lehrveranstaltung_IDs; - } - - $qry = 'SELECT * FROM campus.tbl_lehrveranstaltung_pruefung WHERE lehrveranstaltung_id IN ('.$in.');'; - - 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; - } - return false; - } - - /** - * Lädt alle Prüfung-Lehrveranstaltung Kombinationen - * @return boolean true, wenn ok; false, im Fehlerfall - */ - public function getAll() - { - $qry = 'SELECT * FROM campus.tbl_lehrveranstaltung_pruefung;'; - - 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; - } - return false; - } - - /** - * Lädt alle Prüfungen - * @param String $mitarbeiter_uid UID des Mitarbeiters (optional) - * @return boolean - */ - public function getAllPruefungen($mitarbeiter_uid = NULL) - { - $qry = 'SELECT * FROM campus.tbl_pruefung'; - - if(!is_null($mitarbeiter_uid)) - { - $qry .= ' WHERE mitarbeiter_uid='.$this->db_add_param($mitarbeiter_uid); - } - - $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->pruefungsintervall = $row->pruefungsintervall; - $this->result[] = $obj; - } - return true; - } - } - - /** - * Lädt den Wert des letzten Studenten in der Anmeldereihung - * @param type $pruefungstermin_id Id eines Prüfungstermines - * @return boolean|integer Wert des Letzten in der Reihung oder false, wenn ein Fehler auftritt - */ - public function getLastOfReihung($pruefungstermin_id) - { - $qry = 'SELECT MAX(reihung) FROM campus.tbl_pruefungsanmeldung WHERE ' - . 'pruefungstermin_id='.$this->db_add_param($pruefungstermin_id).';'; - - if($this->db_query($qry)) - { - $row = $this->db_fetch_object(); - return $row->max; - } - else - { - $this->errormsg = 'Reihung konnte nicht geladen werden.'; - return false; - } - } + + */ + +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 $pruefungsintervall; //smallint + + 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; + } + + /** + * Prüft Attribute auf Ihre Richtigkeit + * @return boolean true, wenn alle Prüfungen positiv verlaufen, andernfalls false + */ + 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; + } + + /** + * speichert einen Prüfungs-Datensatz + * @param boolean $new gibt an ob es ich um einen neuen Datensatz (true) oder um ein update (false) handelt + * @return boolean true wenn ok; false im Fehlerfall + */ + 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, pruefungsintervall) ' + . '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(), ' + . $this->db_add_param($this->pruefungsintervall).'' + . ');'; + } + 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->beschreibung).', ' + . '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(), ' + . 'pruefungsintervall='.$this->db_add_param($this->pruefungsintervall).' ' + . '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, $termin->sammelklausur)) + { + $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 + { + if($this->termine !== NULL) + { + 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; + } + } + + /** + * Lädt einen Datensatz aus der Datenbank + * @param integer $pruefung_id ID der zu ladenden Prüfung + * @return boolean true, wenn ok; false im Fehlerfall + */ + 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 + { + if($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); + $this->pruefungsintervall = $row->pruefungsintervall; + } + return true; + } + } + + /** + * Lädt alle Prüfungen zu einer UID + * @param String $uid UID deren Prüfungen geladen werden sollen + * @param String $studiensemester_kurzbz optional kann das Laden auf ein Studiensemester beschränkt werden + * @return boolean true, wenn ok; false, im Fehlerfall + */ + public function getPruefungByMitarbeiter($uid, $studiensemester_kurzbz=null, $order=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); + } + if(!is_null($order)) + { + $qry .= ' ORDER BY '.$order; + } + $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->pruefungsintervall = $row->pruefungsintervall; + $this->result[] = $obj; + } + return true; + } + } + + /** + * speichert die zugehörigen LVs zu einer Prüfung + * @param Integer $lehrveranstaltung_id ID einer Lehrveranstaltung + * @param Integer $pruefung_id ID einer Prüfung + * @return boolean true, wenn ok; false, im Fehlerfall + */ + 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; + } + + /** + * lädt alle zum Objekt gehörenden Lehrveranstaltungen + * @return boolean true, wenn ok; false, im Fehlerfall + */ + 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; + } + + } + + /** + * speichert einen Termin zu Prüfung + * @param integer $pruefung_id ID einer Prüfung + * @param type $beginn Datum und Uhrzeit vom Beginn einer Prüfung + * @param type $ende Datum und Uhrzeit vom Ende einer Prüfung + * @param type $max maximale Teilnehmerzahl + * @param type $min minimale Teilnehmerzahl + * @return boolean true, wenn ok; false im Fehlerfall + */ + public function saveTerminPruefung($pruefung_id, $beginn, $ende, $max, $min, $sammelklausur) + { + 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, sammelklausur) 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).', ' + . $this->db_add_param($sammelklausur).');'; + + if(!$this->db_query($qry)) + { + $this->errormsg = "Termine konnten nicht gespeichert werden!"; + return false; + } + return true; + } + + /** + * Lädt alle Termine zum Prüfungs-Objekt + * @return boolean true, wenn ok; false, im Fehlerfall + */ + 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; + $obj->anmeldung_von= $row->anmeldung_von; + $obj->anmeldung_bis = $row->anmeldung_bis; + $obj->ort_kurzbz = $row->ort_kurzbz; + $obj->sammelklausur = $row->sammelklausur; + array_push($this->termine, $obj); + } + return true; + } + else + { + $this->errormsg = "Zugehörige Termine konnten nicht geladen werden."; + return false; + } + + } + + /** + * ändert einen Termin zur Prüfung + * @param integer $pruefungstermin_id ID eines Prüfungstermins + * @param integer $pruefung_id ID einer Prüfung + * @param type $beginn Datum und Uhrzeit vom Beginn einer Prüfung + * @param type $ende Datum und Uhrzeit vom Ende einer Prüfung + * @param type $max maximale Teilnehmerzahl + * @param type $min minimale Teilnehmerzahl + * @return boolean true, wenn ok; false im Fehlerfall + */ + 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; + } + + /** + * Setzt den Storniert-Status einer Prüfung auf True + * @param integer $pruefung_id ID einer Prüfung + * @return boolean true, wenn ok; false, im Fehlerfall + */ + 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; + } + + /** + * löscht die Verknüpfung zwischen einer Lehrveranstaltung und einer Prüfung + * @param integer $lehrveranstaltung_id ID einer Lehrveranstaltung + * @param integer $pruefung_id ID einer Prüfung + * @return boolean true, wenn ok; false, im Fehlerfall + */ + 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; + } + + /** + * löscht einen Prüfungstermin einer Prüfung + * @param integer $pruefungstermin_id ID eines Prüfungstermins + * @return boolean true, wenn ok; false, im Fehlerfall + */ + 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; + } + + /** + * Lädt alle Prüfungen zur angebenen Lehrveranstaltung + * @param String|Array $lehrveranstaltung_IDs einzelne ID einer Lehrveranstaltung oder ein Array von IDs + * @return boolean true, wenn ok; false, im Fehlerfall + */ + public function getPruefungByLv($lehrveranstaltung_IDs) + { + if(empty($lehrveranstaltung_IDs)) + { + $this->errormsg = "Keine Lehrveranstaltungen übergeben.
"; + return false; + } + + $in = ""; + if (is_array($lehrveranstaltung_IDs)) + { + foreach($lehrveranstaltung_IDs as $id) + { + $in.= $id.', '; + } + $in = substr($in, 0, -2); + } + else + { + $in = $lehrveranstaltung_IDs; + } + + $qry = 'SELECT * FROM campus.tbl_lehrveranstaltung_pruefung WHERE lehrveranstaltung_id IN ('.$in.');'; + + 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; + } + return false; + } + + /** + * Lädt alle Prüfung-Lehrveranstaltung Kombinationen + * @return boolean true, wenn ok; false, im Fehlerfall + */ + public function getAll() + { + $qry = 'SELECT * FROM campus.tbl_lehrveranstaltung_pruefung;'; + + 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; + } + return false; + } + + /** + * Lädt alle Prüfungen + * @param String $mitarbeiter_uid UID des Mitarbeiters (optional) + * @return boolean + */ + public function getAllPruefungen($mitarbeiter_uid = NULL) + { + $qry = 'SELECT * FROM campus.tbl_pruefung'; + + if(!is_null($mitarbeiter_uid)) + { + $qry .= ' WHERE mitarbeiter_uid='.$this->db_add_param($mitarbeiter_uid); + } + + $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->pruefungsintervall = $row->pruefungsintervall; + $this->result[] = $obj; + } + return true; + } + } + + /** + * Lädt den Wert des letzten Studenten in der Anmeldereihung + * @param type $pruefungstermin_id Id eines Prüfungstermines + * @return boolean|integer Wert des Letzten in der Reihung oder false, wenn ein Fehler auftritt + */ + public function getLastOfReihung($pruefungstermin_id) + { + $qry = 'SELECT MAX(reihung) FROM campus.tbl_pruefungsanmeldung WHERE ' + . 'pruefungstermin_id='.$this->db_add_param($pruefungstermin_id).';'; + + if($this->db_query($qry)) + { + $row = $this->db_fetch_object(); + return $row->max; + } + else + { + $this->errormsg = 'Reihung konnte nicht geladen werden.'; + return false; + } + } } \ No newline at end of file diff --git a/include/studiengang.class.php b/include/studiengang.class.php index b7575bbe9..301904ae7 100644 --- a/include/studiengang.class.php +++ b/include/studiengang.class.php @@ -260,7 +260,7 @@ class studiengang extends basis_db . 'USING (studienordnung_id) ' . 'WHERE aktiv ' . 'AND studiengang_kz = ' . $this->db_add_param($studiengang_kz, FHC_INTEGER) - . ' AND orgform_kurzbz NOT IN (' . $this->db_add_param('DDP') . ', ' . $this->db_add_param('DL') . ')'; + . ' AND orgform_kurzbz!='. $this->db_add_param('DDP'); if($result = $this->db_query($qry)) { diff --git a/include/studiensemester.class.php b/include/studiensemester.class.php index 720adcf5f..4bbdc82f7 100644 --- a/include/studiensemester.class.php +++ b/include/studiensemester.class.php @@ -1,789 +1,790 @@ -, - * Andreas Oesterreicher , - * Rudolf Hangl and - * Gerald Simane-Sequens - */ -require_once('basis_db.class.php'); - -class studiensemester extends basis_db -{ - public $new; // boolean - public $studiensemester = array(); // studiensemester Objekt - - //Tabellenspalten - public $studiensemester_kurzbz;// varchar(16) - public $start; // date - public $ende; // date - public $bezeichnung; // varchar(32) - - /** - * Konstruktor - Laedt optional ein StSem - * - * @param $studiensemester_kurzbz StSem das geladen werden soll (default=null) - */ - public function __construct($studiensemester_kurzbz=null) - { - parent::__construct(); - - if($studiensemester_kurzbz != null) - $this->load($studiensemester_kurzbz); - } - - /** - * Laedt das Studiensemester mit der uebergebenen Kurzbz - * - * @param $studiensemester_kurzbz Stsem das geladen werden soll - */ - public function load($studiensemester_kurzbz) - { - $qry = "SELECT * FROM public.tbl_studiensemester WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - if(!$this->db_query($qry)) - { - $this->errormsg = 'Fehler beim Lesen des Studiensemesters'; - return false; - } - - if($row = $this->db_fetch_object()) - { - $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $this->start = $row->start; - $this->ende = $row->ende; - $this->bezeichnung = $row->bezeichnung; - } - else - { - $this->errormsg = "Es ist kein Studiensemester mit dieser Kurzbezeichung vorhanden"; - return false; - } - - return true; - } - - /** - * Prueft die Variablen vor dem Speichern - * auf Gueltigkeit. - * - * @return true wenn ok, false im Fehlerfall - */ - private function validate() - { - if(mb_strlen($this->studiensemester_kurzbz)>16) - { - $this->errormsg = 'Studiensemester Kurzbezeichnung darf nicht laenger als 16 Zeichen sein'; - return false; - } - if(mb_strlen($this->bezeichnung)>32) - { - $this->errormsg = 'Studiensemester Bezeichnung darf nicht laenger als 32 Zeichen sein'; - return false; - } - if($this->studiensemester_kurzbz=='') - { - $this->errormsg = 'Es muss eine Kurzbezeichnung eingegeben werden'; - return false; - } - return true; - } - - /** - * Speichert das Studiensemester in die Datenbank - * Wenn $new auf true gesetzt ist wird ein neuer Datensatz - * angelegt, ansonsten der Datensatz upgedated - * - * @return true wenn erfolgreich, false im Fehlerfall - */ - public function save() - { - //Variablen auf Gueltigkeit pruefen - if(!$this->validate()) - return false; - - if($this->new) - { - $qry = "INSERT INTO public.tbl_studiensemester (studiensemester_kurzbz, start, ende) - VALUES(".$this->db_add_param($this->studiensemester_kurzbz).",". - $this->db_add_param($this->start).','. - $this->db_add_param($this->ende).');'; - } - else - { - $qry = 'UPDATE public.tbl_studiensemester SET'. - ' start='.$this->db_add_param($this->start).','. - ' ende='.$this->db_add_param($this->ende). - " WHERE studiensemester_kurzbz=".$this->db_add_param($this->studiensemester_kurzbz); - } - - if($this->db_query($qry)) - { - //Log schreiben - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern des Studiensemesters'; - return false; - } - } - - /** - * Liefert das aktuelle Studiensemester - * - * @return aktuelles Studiensemester oder false wenn es keines gibt - */ - public function getakt() - { - $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE start <= now() AND ende >= now()"; - - if(!$this->db_query($qry)) - { - $this->errormsg = $this->db_last_error(); - return false; - } - - if($this->db_num_rows()>0) - { - $erg = $this->db_fetch_object(); - return $erg->studiensemester_kurzbz; - } - else - { - $this->errormsg = "Kein aktuelles Studiensemester vorhanden"; - return false; - } - } - - /** - * Liefert ein Studiensemester mit Startdatum vom naechstgelegenen Studiensemester und - * dem Startdatum vom folgenden Studiensemester als Endedatum - * - * @return boolean - */ - public function getNearestTillNext() - { - if(!$this->getNearest()) - return false; - - $start=$this->start; - $studiensemester_kurzbz=$this->studiensemester_kurzbz; - - if (!$this->getNextFrom($this->studiensemester_kurzbz)) - return false; - $ende=$this->start; - - $this->studiensemester_kurzbz=$studiensemester_kurzbz; - $this->start=$start; - $this->ende=$ende; - - return true; - } - - /** - * Liefert das Aktuelle Studiensemester oder das darauffolgende - * - * @param $semester wenn das semester uebergeben wird, dann werden nur die studiensemester - * geliefert die in dieses semester fallen (Bei geradem semester nur SS sonst WS) - * @return Studiensemester oder false wenn es keines gibt - */ - public function getaktorNext($semester='') - { - if(($stsem=$this->getakt()) && $semester=='') - return $stsem; - else - { - $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE true"; - - if($semester!='') - { - if($semester%2==0) - $ss='SS'; - else - $ss='WS'; - - $qry.= " AND substring(studiensemester_kurzbz from 1 for 2)='$ss' "; - } - $qry.= " AND ende >= now() ORDER BY ende LIMIT 1"; - - if(!$this->db_query($qry)) - { - $this->errormsg = $this->db_last_error(); - return false; - } - - if($erg = $this->db_fetch_object()) - { - return $erg->studiensemester_kurzbz; - } - else - { - $this->errormsg = "Kein aktuelles Studiensemester vorhanden"; - return false; - } - } - } - - /** - * Liefert das naechstgelegenste Studiensemester - * - * @param semester wenn das semester uebergeben wird, dann werden nur die studiensemester - * geliefert die in dieses semester fallen (Bei geradem semester nur SS sonst WS) - * @return Studiensemester oder false wenn es keines gibt - */ - public function getNearest($semester='') - { - $qry = "SELECT studiensemester_kurzbz, start, ende FROM public.vw_studiensemester "; - if($semester!='') - { - if($semester%2==0) - $ss='SS'; - else - $ss='WS'; - - $qry.= " WHERE substring(studiensemester_kurzbz from 1 for 2)='$ss' "; - } - $qry.=' ORDER BY delta LIMIT 1'; - - if(!$this->db_query($qry)) - { - $this->errormsg = $this->db_last_error(); - return false; - } - - if($erg = $this->db_fetch_object()) - { - $this->studiensemester_kurzbz=$erg->studiensemester_kurzbz; - $this->start=$erg->start; - $this->ende=$erg->ende; - return $erg->studiensemester_kurzbz; - } - else - { - $this->errormsg = "Kein aktuelles Studiensemester vorhanden"; - return false; - } - } - - /** - * Liefert alle Studiensemester - * - * @return true wenn ok, sonst false - */ - public function getAll() - { - $qry = "SELECT * FROM public.tbl_studiensemester ORDER BY ende"; - - if($this->db_query($qry)) - { - while($row = $this->db_fetch_object()) - { - $stsem_obj = new studiensemester(); - - $stsem_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $stsem_obj->start = $row->start; - $stsem_obj->ende = $row->ende; - - $this->studiensemester[] = $stsem_obj; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Studiensemester'; - return false; - } - } - - /** - * Liefert das naechste Studiensemester - * - * @param $art Wenn art=WS dann wird das naechste Wintersemester geliefert - * Wenn art=SS dann wird das naechste Sommersemester geliefert - * @return true wenn ok, false wenn kein entsprechendes vorhanden ist - */ - public function getNextStudiensemester($art='') - { - $qry = "SELECT * FROM public.tbl_studiensemester WHERE start>now() "; - - if($art!='') - $qry.= " AND substring(studiensemester_kurzbz from 1 for 2)=".$this->db_add_param($art); - - $qry.=" ORDER BY start LIMIT 1"; - - if(!$this->db_query($qry)) - { - $this->errormsg = 'Fehler beim Lesen des Studiensemesters'; - return false; - } - - if($row = $this->db_fetch_object()) - { - $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $this->start = $row->start; - $this->ende = $row->ende; - } - else - { - $this->errormsg = "Es wurde kein entsprechendes Studiensemester gefunden"; - return false; - } - - return true; - } - - /** - * Liefert die naechsten Studiensemester bis zum eingestellten Limit - * - * @param $art Wenn art=WS dann wird das naechste Wintersemester geliefert - * Wenn art=SS dann wird das naechste Sommersemester geliefert - * $limit Wie viele kommende Studiensemester sollen geliefert werden? - * Wenn leer, dann 1. - * @return true wenn ok, sonst false - */ - public function getFutureStudiensemester($art='', $limit=NULL) - { - $qry = "SELECT * FROM public.tbl_studiensemester WHERE start>now() "; - - if($art!='') - $qry.= " AND substring(studiensemester_kurzbz from 1 for 2)=".$this->db_add_param($art); - - $qry.=" ORDER BY start"; - - if(!is_null($limit) && is_numeric($limit)) - $qry.=" LIMIT ".$limit; - else - $qry.=" LIMIT 1"; - - if($this->db_query($qry)) - { - while($row = $this->db_fetch_object()) - { - $stsem_obj = new studiensemester(); - - $stsem_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $stsem_obj->start = $row->start; - $stsem_obj->ende = $row->ende; - $stsem_obj->bezeichnung = $row->bezeichnung; - - $this->studiensemester[] = $stsem_obj; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Lesen des Studiensemesters'; - return false; - } - } - - /** - * Liefert das vorige Studiensemester - * - * @return studiensemester_kurzbz oder false wenn keines vorhanden - */ - public function getPrevious() - { - $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE endedb_query($qry)) - { - if($row = $this->db_fetch_object()) - { - return $row->studiensemester_kurzbz; - } - else - { - $this->errormsg = 'Es wurde kein vorangegangenes Studiensemester gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Ermitteln des vorangegangenen Studiensemesters'; - return false; - } - } - - /** - * Liefert das vorvorige Studiensemester - * - * @return studiensemester_kurzbz oder false wenn keines vorhanden - */ - public function getBeforePrevious() - { - $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE endedb_query($qry)) - { - if($row = $this->db_fetch_object()) - { - if($row = $this->db_fetch_object()) - { - return $row->studiensemester_kurzbz; - } - else - { - $this->errormsg = 'Es wurde kein vorjaehriges Studiensemester gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Es wurde kein vorjaehriges Studiensemester gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Ermitteln des vorjaehrigen Studiensemesters'; - return false; - } - } - - /** - * Liefert das Studiensemester vor $studiensemester_kurzbz - * - * @param $studiensemester_kurzbz - * @return $studiensemester_kurzbz oder false wenn Fehler - */ - public function getPreviousFrom($studiensemester_kurzbz) - { - $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester - WHERE ende<(SELECT start FROM public.tbl_studiensemester - WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).") - ORDER BY ende DESC LIMIT 1"; - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - return $row->studiensemester_kurzbz; - } - else - { - $this->errormsg = 'Es wurde kein vorangegangenes Studiensemester gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Ermitteln des vorangegangenen Studiensemesters'; - return false; - } - } - - /** - * Liefert das Studiensemester nach $studiensemester_kurzbz - * - * @param $studiensemester_kurzbz - * @return $studiensemester_kurzbz oder false wenn Fehler - */ - public function getNextFrom($studiensemester_kurzbz) - { - $qry = "SELECT studiensemester_kurzbz, start, ende FROM public.tbl_studiensemester - WHERE start>(SELECT ende FROM public.tbl_studiensemester - WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).") - ORDER BY start LIMIT 1"; - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $this->start = $row->start; - $this->ende = $row->ende; - return $row->studiensemester_kurzbz; - } - else - { - $this->errormsg = 'Es wurde kein folgendes Studiensemester gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Ermitteln des folgenden Studiensemesters'; - return false; - } - } - - /** - * Liefert das Studiensemester das aktuell am naehesten zu $studiensemester_kurzbz liegt - * - * @param $studiensemester_kurzbz - * @return $studiensemester_kurzbz oder false wenn Fehler - */ - public function getNearestFrom($studiensemester_kurzbz) - { - $qry = "SELECT studiensemester_kurzbz, start, ende FROM public.vw_studiensemester - WHERE studiensemester_kurzbz<>".$this->db_add_param($studiensemester_kurzbz)." - ORDER BY delta LIMIT 1"; - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $this->start = $row->start; - $this->ende = $row->ende; - return $row->studiensemester_kurzbz; - } - else - { - $this->errormsg = 'Es wurde kein folgendes Studiensemester gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Ermitteln des folgenden Studiensemesters'; - return false; - } - } - - /** - * Springt von Studiensemester $studiensemester_kurzbz um $wert Studiensemester vor/zurueck - * - * @param $studiensemester_kurzbz - * @param $wert - * @return studiensemester_kurzbz - */ - public function jump($studiensemester_kurzbz, $wert) - { - if($wert>0) - { - $op='>'; - $sort='ASC'; - $sort2='DESC'; - } - elseif($wert<0) - { - $op='<'; - $sort='DESC'; - $sort2='ASC'; - } - else - { - $op='='; - $sort=''; - $sort2=''; - } - - $qry = "SELECT studiensemester_kurzbz - FROM - ( - SELECT studiensemester_kurzbz, start - FROM public.tbl_studiensemester - WHERE start$op(SELECT start FROM public.tbl_studiensemester - WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).") - ORDER BY start $sort - LIMIT ".abs($wert)." - ) as foo - ORDER BY start $sort2 LIMIT 1"; - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - return $row->studiensemester_kurzbz; - } - else - return $studiensemester_kurzbz; - } - else - { - $this->errormsg='Fehler bei einer Abfrage'; - return false; - } - } - - /** - * Laedt die vergangenen Studiensemester und das aktuelle - * - * @param limit maximale Anzahl - * @return true wenn ok, sonst false - */ - public function getFinished($limit=null) - { - $qry = "SELECT * FROM public.tbl_studiensemester where start<=now() ORDER BY ende DESC"; - if(!is_null($limit) && is_numeric($limit)) - $qry.=' LIMIT '.$limit; - - if($this->db_query($qry)) - { - while($row = $this->db_fetch_object()) - { - $stsem_obj = new studiensemester(); - - $stsem_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $stsem_obj->start = $row->start; - $stsem_obj->ende = $row->ende; - - $this->studiensemester[] = $stsem_obj; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Studiensemester'; - return false; - } - } - - /** - * Liefert $days (Default 60) Tage nach dem start des neuen Semesters noch das vorherige Studiensemester - * zurueck, danach das aktuelle. - * - * - * @return studiensemester_kurzbz oder false wenn keines vorhanden - */ - public function getLastOrAktSemester($days=60) - { - $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE startdb_query($qry)) - { - if($row = $this->db_fetch_object()) - { - return $row->studiensemester_kurzbz; - } - else - { - $this->errormsg = 'Es wurde kein LastOrAkt Studiensemester gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Ermitteln des LastOrAkt Studiensemesters'; - return false; - } - } - - /** - * Liefert $days (Default 60) Tage nach dem start des neuen Semesters noch das vorherige Studiensemester - * zurueck, danach das aktuelle. - * - * - * @return studiensemester_kurzbz oder false wenn keines vorhanden - */ - public function getNextOrAktSemester($days=60) - { - $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE start>now()-'".$days." days'::interval ORDER BY start limit 1"; - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - return $row->studiensemester_kurzbz; - } - else - { - $this->errormsg = 'Es wurde kein NextOrAkt Studiensemester gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Ermitteln des NextOrAkt Studiensemesters'; - return false; - } - } - /** - * Liefert den UNIX Timestamp (Beginn,Ende) eines Studiensemesters - * - * @param $studiensemester_kurzbz - * @return Beginn und Ende eines Studiensemesters als Timestamp - */ - public function getTimestamp($studiensemester_kurzbz) - { - $qry = "SELECT start,ende,studiensemester_kurzbz FROM public.tbl_studiensemester - WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).""; - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - if(!isset($this->begin)) - $this->begin=new stdclass(); - $this->begin->start=mktime(0,0,0,mb_substr($row->start,5,2),mb_substr($row->start,8,2),mb_substr($row->start,0,4)); - if(!isset($this->ende)) - $this->ende=new stdclass(); - $this->ende->ende=mktime(0,0,0,mb_substr($row->ende,5,2),mb_substr($row->ende,8,2),mb_substr($row->ende,0,4)); - return true; - } - else - { - $this->errormsg = 'Es wurde kein Studiensemester gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Ermitteln des Studiensemesters'; - return false; - } - } - /** - * untersucht das uebergebene datum in welchem semester es sich befindet - * @param type $datum - * @return boolean - */ - public function getSemesterFromDatum($datum) - { - if($datum == '') - { - $this->errormsg = "Ungueltiges Datum uebergeben"; - return false; - } - $qry = "SELECT * FROM public.tbl_studiensemester WHERE start <=".$this->db_add_param($datum, FHC_STRING)." AND ende >= ".$this->db_add_param($datum).';'; - - if($result = $this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - return $row->studiensemester_kurzbz; - } - else - { - $this->errormsg = "Es wurde kein passendes Studiensemester gefunden"; - return false; - } - } - else - { - $this->errormsg = "Fehler bei der Abfrage aufgetreten."; - return false; - } - } - - /** - * Liefert das dazupassende Studiensemester im Studienjahr - * @param $studiensemester_kurzbz - * @return $studiensemester_kurzbz - */ - public function getStudienjahrStudiensemester($studiensemester_kurzbz) - { - if(mb_substr($studiensemester_kurzbz,0,2)=='WS') - return $this->getNextFrom($studiensemester_kurzbz); - else - return $this->getPreviousFrom($studiensemester_kurzbz); - } -} -?> +, + * Andreas Oesterreicher , + * Rudolf Hangl and + * Gerald Simane-Sequens + */ +require_once('basis_db.class.php'); + +class studiensemester extends basis_db +{ + public $new; // boolean + public $studiensemester = array(); // studiensemester Objekt + + //Tabellenspalten + public $studiensemester_kurzbz;// varchar(16) + public $start; // date + public $ende; // date + public $bezeichnung; // varchar(32) + + /** + * Konstruktor - Laedt optional ein StSem + * + * @param $studiensemester_kurzbz StSem das geladen werden soll (default=null) + */ + public function __construct($studiensemester_kurzbz=null) + { + parent::__construct(); + + if($studiensemester_kurzbz != null) + $this->load($studiensemester_kurzbz); + } + + /** + * Laedt das Studiensemester mit der uebergebenen Kurzbz + * + * @param $studiensemester_kurzbz Stsem das geladen werden soll + */ + public function load($studiensemester_kurzbz) + { + $qry = "SELECT * FROM public.tbl_studiensemester WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + if(!$this->db_query($qry)) + { + $this->errormsg = 'Fehler beim Lesen des Studiensemesters'; + return false; + } + + if($row = $this->db_fetch_object()) + { + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->start = $row->start; + $this->ende = $row->ende; + $this->bezeichnung = $row->bezeichnung; + } + else + { + $this->errormsg = "Es ist kein Studiensemester mit dieser Kurzbezeichung vorhanden"; + return false; + } + + return true; + } + + /** + * Prueft die Variablen vor dem Speichern + * auf Gueltigkeit. + * + * @return true wenn ok, false im Fehlerfall + */ + private function validate() + { + if(mb_strlen($this->studiensemester_kurzbz)>16) + { + $this->errormsg = 'Studiensemester Kurzbezeichnung darf nicht laenger als 16 Zeichen sein'; + return false; + } + if(mb_strlen($this->bezeichnung)>32) + { + $this->errormsg = 'Studiensemester Bezeichnung darf nicht laenger als 32 Zeichen sein'; + return false; + } + if($this->studiensemester_kurzbz=='') + { + $this->errormsg = 'Es muss eine Kurzbezeichnung eingegeben werden'; + return false; + } + return true; + } + + /** + * Speichert das Studiensemester in die Datenbank + * Wenn $new auf true gesetzt ist wird ein neuer Datensatz + * angelegt, ansonsten der Datensatz upgedated + * + * @return true wenn erfolgreich, false im Fehlerfall + */ + public function save() + { + //Variablen auf Gueltigkeit pruefen + if(!$this->validate()) + return false; + + if($this->new) + { + $qry = "INSERT INTO public.tbl_studiensemester (studiensemester_kurzbz, start, ende) + VALUES(".$this->db_add_param($this->studiensemester_kurzbz).",". + $this->db_add_param($this->start).','. + $this->db_add_param($this->ende).');'; + } + else + { + $qry = 'UPDATE public.tbl_studiensemester SET'. + ' start='.$this->db_add_param($this->start).','. + ' ende='.$this->db_add_param($this->ende). + " WHERE studiensemester_kurzbz=".$this->db_add_param($this->studiensemester_kurzbz); + } + + if($this->db_query($qry)) + { + //Log schreiben + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Studiensemesters'; + return false; + } + } + + /** + * Liefert das aktuelle Studiensemester + * + * @return aktuelles Studiensemester oder false wenn es keines gibt + */ + public function getakt() + { + $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE start <= now() AND ende >= now()"; + + if(!$this->db_query($qry)) + { + $this->errormsg = $this->db_last_error(); + return false; + } + + if($this->db_num_rows()>0) + { + $erg = $this->db_fetch_object(); + return $erg->studiensemester_kurzbz; + } + else + { + $this->errormsg = "Kein aktuelles Studiensemester vorhanden"; + return false; + } + } + + /** + * Liefert ein Studiensemester mit Startdatum vom naechstgelegenen Studiensemester und + * dem Startdatum vom folgenden Studiensemester als Endedatum + * + * @return boolean + */ + public function getNearestTillNext() + { + if(!$this->getNearest()) + return false; + + $start=$this->start; + $studiensemester_kurzbz=$this->studiensemester_kurzbz; + + if (!$this->getNextFrom($this->studiensemester_kurzbz)) + return false; + $ende=$this->start; + + $this->studiensemester_kurzbz=$studiensemester_kurzbz; + $this->start=$start; + $this->ende=$ende; + + return true; + } + + /** + * Liefert das Aktuelle Studiensemester oder das darauffolgende + * + * @param $semester wenn das semester uebergeben wird, dann werden nur die studiensemester + * geliefert die in dieses semester fallen (Bei geradem semester nur SS sonst WS) + * @return Studiensemester oder false wenn es keines gibt + */ + public function getaktorNext($semester='') + { + if(($stsem=$this->getakt()) && $semester=='') + return $stsem; + else + { + $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE true"; + + if($semester!='') + { + if($semester%2==0) + $ss='SS'; + else + $ss='WS'; + + $qry.= " AND substring(studiensemester_kurzbz from 1 for 2)='$ss' "; + } + $qry.= " AND ende >= now() ORDER BY ende LIMIT 1"; + + if(!$this->db_query($qry)) + { + $this->errormsg = $this->db_last_error(); + return false; + } + + if($erg = $this->db_fetch_object()) + { + return $erg->studiensemester_kurzbz; + } + else + { + $this->errormsg = "Kein aktuelles Studiensemester vorhanden"; + return false; + } + } + } + + /** + * Liefert das naechstgelegenste Studiensemester + * + * @param semester wenn das semester uebergeben wird, dann werden nur die studiensemester + * geliefert die in dieses semester fallen (Bei geradem semester nur SS sonst WS) + * @return Studiensemester oder false wenn es keines gibt + */ + public function getNearest($semester='') + { + $qry = "SELECT studiensemester_kurzbz, start, ende FROM public.vw_studiensemester "; + if($semester!='') + { + if($semester%2==0) + $ss='SS'; + else + $ss='WS'; + + $qry.= " WHERE substring(studiensemester_kurzbz from 1 for 2)='$ss' "; + } + $qry.=' ORDER BY delta LIMIT 1'; + + if(!$this->db_query($qry)) + { + $this->errormsg = $this->db_last_error(); + return false; + } + + if($erg = $this->db_fetch_object()) + { + $this->studiensemester_kurzbz=$erg->studiensemester_kurzbz; + $this->start=$erg->start; + $this->ende=$erg->ende; + return $erg->studiensemester_kurzbz; + } + else + { + $this->errormsg = "Kein aktuelles Studiensemester vorhanden"; + return false; + } + } + + /** + * Liefert alle Studiensemester + * + * @return true wenn ok, sonst false + */ + public function getAll() + { + $qry = "SELECT * FROM public.tbl_studiensemester ORDER BY ende"; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $stsem_obj = new studiensemester(); + + $stsem_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $stsem_obj->start = $row->start; + $stsem_obj->ende = $row->ende; + $stsem_obj->bezeichnung = $row->bezeichnung; + + $this->studiensemester[] = $stsem_obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Studiensemester'; + return false; + } + } + + /** + * Liefert das naechste Studiensemester + * + * @param $art Wenn art=WS dann wird das naechste Wintersemester geliefert + * Wenn art=SS dann wird das naechste Sommersemester geliefert + * @return true wenn ok, false wenn kein entsprechendes vorhanden ist + */ + public function getNextStudiensemester($art='') + { + $qry = "SELECT * FROM public.tbl_studiensemester WHERE start>now() "; + + if($art!='') + $qry.= " AND substring(studiensemester_kurzbz from 1 for 2)=".$this->db_add_param($art); + + $qry.=" ORDER BY start LIMIT 1"; + + if(!$this->db_query($qry)) + { + $this->errormsg = 'Fehler beim Lesen des Studiensemesters'; + return false; + } + + if($row = $this->db_fetch_object()) + { + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->start = $row->start; + $this->ende = $row->ende; + } + else + { + $this->errormsg = "Es wurde kein entsprechendes Studiensemester gefunden"; + return false; + } + + return true; + } + + /** + * Liefert die naechsten Studiensemester bis zum eingestellten Limit + * + * @param $art Wenn art=WS dann wird das naechste Wintersemester geliefert + * Wenn art=SS dann wird das naechste Sommersemester geliefert + * $limit Wie viele kommende Studiensemester sollen geliefert werden? + * Wenn leer, dann 1. + * @return true wenn ok, sonst false + */ + public function getFutureStudiensemester($art='', $limit=NULL) + { + $qry = "SELECT * FROM public.tbl_studiensemester WHERE start>now() "; + + if($art!='') + $qry.= " AND substring(studiensemester_kurzbz from 1 for 2)=".$this->db_add_param($art); + + $qry.=" ORDER BY start"; + + if(!is_null($limit) && is_numeric($limit)) + $qry.=" LIMIT ".$limit; + else + $qry.=" LIMIT 1"; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $stsem_obj = new studiensemester(); + + $stsem_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $stsem_obj->start = $row->start; + $stsem_obj->ende = $row->ende; + $stsem_obj->bezeichnung = $row->bezeichnung; + + $this->studiensemester[] = $stsem_obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Lesen des Studiensemesters'; + return false; + } + } + + /** + * Liefert das vorige Studiensemester + * + * @return studiensemester_kurzbz oder false wenn keines vorhanden + */ + public function getPrevious() + { + $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE endedb_query($qry)) + { + if($row = $this->db_fetch_object()) + { + return $row->studiensemester_kurzbz; + } + else + { + $this->errormsg = 'Es wurde kein vorangegangenes Studiensemester gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Ermitteln des vorangegangenen Studiensemesters'; + return false; + } + } + + /** + * Liefert das vorvorige Studiensemester + * + * @return studiensemester_kurzbz oder false wenn keines vorhanden + */ + public function getBeforePrevious() + { + $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE endedb_query($qry)) + { + if($row = $this->db_fetch_object()) + { + if($row = $this->db_fetch_object()) + { + return $row->studiensemester_kurzbz; + } + else + { + $this->errormsg = 'Es wurde kein vorjaehriges Studiensemester gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Es wurde kein vorjaehriges Studiensemester gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Ermitteln des vorjaehrigen Studiensemesters'; + return false; + } + } + + /** + * Liefert das Studiensemester vor $studiensemester_kurzbz + * + * @param $studiensemester_kurzbz + * @return $studiensemester_kurzbz oder false wenn Fehler + */ + public function getPreviousFrom($studiensemester_kurzbz) + { + $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester + WHERE ende<(SELECT start FROM public.tbl_studiensemester + WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).") + ORDER BY ende DESC LIMIT 1"; + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + return $row->studiensemester_kurzbz; + } + else + { + $this->errormsg = 'Es wurde kein vorangegangenes Studiensemester gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Ermitteln des vorangegangenen Studiensemesters'; + return false; + } + } + + /** + * Liefert das Studiensemester nach $studiensemester_kurzbz + * + * @param $studiensemester_kurzbz + * @return $studiensemester_kurzbz oder false wenn Fehler + */ + public function getNextFrom($studiensemester_kurzbz) + { + $qry = "SELECT studiensemester_kurzbz, start, ende FROM public.tbl_studiensemester + WHERE start>(SELECT ende FROM public.tbl_studiensemester + WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).") + ORDER BY start LIMIT 1"; + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->start = $row->start; + $this->ende = $row->ende; + return $row->studiensemester_kurzbz; + } + else + { + $this->errormsg = 'Es wurde kein folgendes Studiensemester gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Ermitteln des folgenden Studiensemesters'; + return false; + } + } + + /** + * Liefert das Studiensemester das aktuell am naehesten zu $studiensemester_kurzbz liegt + * + * @param $studiensemester_kurzbz + * @return $studiensemester_kurzbz oder false wenn Fehler + */ + public function getNearestFrom($studiensemester_kurzbz) + { + $qry = "SELECT studiensemester_kurzbz, start, ende FROM public.vw_studiensemester + WHERE studiensemester_kurzbz<>".$this->db_add_param($studiensemester_kurzbz)." + ORDER BY delta LIMIT 1"; + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->start = $row->start; + $this->ende = $row->ende; + return $row->studiensemester_kurzbz; + } + else + { + $this->errormsg = 'Es wurde kein folgendes Studiensemester gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Ermitteln des folgenden Studiensemesters'; + return false; + } + } + + /** + * Springt von Studiensemester $studiensemester_kurzbz um $wert Studiensemester vor/zurueck + * + * @param $studiensemester_kurzbz + * @param $wert + * @return studiensemester_kurzbz + */ + public function jump($studiensemester_kurzbz, $wert) + { + if($wert>0) + { + $op='>'; + $sort='ASC'; + $sort2='DESC'; + } + elseif($wert<0) + { + $op='<'; + $sort='DESC'; + $sort2='ASC'; + } + else + { + $op='='; + $sort=''; + $sort2=''; + } + + $qry = "SELECT studiensemester_kurzbz + FROM + ( + SELECT studiensemester_kurzbz, start + FROM public.tbl_studiensemester + WHERE start$op(SELECT start FROM public.tbl_studiensemester + WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).") + ORDER BY start $sort + LIMIT ".abs($wert)." + ) as foo + ORDER BY start $sort2 LIMIT 1"; + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + return $row->studiensemester_kurzbz; + } + else + return $studiensemester_kurzbz; + } + else + { + $this->errormsg='Fehler bei einer Abfrage'; + return false; + } + } + + /** + * Laedt die vergangenen Studiensemester und das aktuelle + * + * @param limit maximale Anzahl + * @return true wenn ok, sonst false + */ + public function getFinished($limit=null) + { + $qry = "SELECT * FROM public.tbl_studiensemester where start<=now() ORDER BY ende DESC"; + if(!is_null($limit) && is_numeric($limit)) + $qry.=' LIMIT '.$limit; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $stsem_obj = new studiensemester(); + + $stsem_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $stsem_obj->start = $row->start; + $stsem_obj->ende = $row->ende; + + $this->studiensemester[] = $stsem_obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Studiensemester'; + return false; + } + } + + /** + * Liefert $days (Default 60) Tage nach dem start des neuen Semesters noch das vorherige Studiensemester + * zurueck, danach das aktuelle. + * + * + * @return studiensemester_kurzbz oder false wenn keines vorhanden + */ + public function getLastOrAktSemester($days=60) + { + $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE startdb_query($qry)) + { + if($row = $this->db_fetch_object()) + { + return $row->studiensemester_kurzbz; + } + else + { + $this->errormsg = 'Es wurde kein LastOrAkt Studiensemester gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Ermitteln des LastOrAkt Studiensemesters'; + return false; + } + } + + /** + * Liefert $days (Default 60) Tage nach dem start des neuen Semesters noch das vorherige Studiensemester + * zurueck, danach das aktuelle. + * + * + * @return studiensemester_kurzbz oder false wenn keines vorhanden + */ + public function getNextOrAktSemester($days=60) + { + $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE start>now()-'".$days." days'::interval ORDER BY start limit 1"; + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + return $row->studiensemester_kurzbz; + } + else + { + $this->errormsg = 'Es wurde kein NextOrAkt Studiensemester gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Ermitteln des NextOrAkt Studiensemesters'; + return false; + } + } + /** + * Liefert den UNIX Timestamp (Beginn,Ende) eines Studiensemesters + * + * @param $studiensemester_kurzbz + * @return Beginn und Ende eines Studiensemesters als Timestamp + */ + public function getTimestamp($studiensemester_kurzbz) + { + $qry = "SELECT start,ende,studiensemester_kurzbz FROM public.tbl_studiensemester + WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).""; + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + if(!isset($this->begin)) + $this->begin=new stdclass(); + $this->begin->start=mktime(0,0,0,mb_substr($row->start,5,2),mb_substr($row->start,8,2),mb_substr($row->start,0,4)); + if(!isset($this->ende)) + $this->ende=new stdclass(); + $this->ende->ende=mktime(0,0,0,mb_substr($row->ende,5,2),mb_substr($row->ende,8,2),mb_substr($row->ende,0,4)); + return true; + } + else + { + $this->errormsg = 'Es wurde kein Studiensemester gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Ermitteln des Studiensemesters'; + return false; + } + } + /** + * untersucht das uebergebene datum in welchem semester es sich befindet + * @param type $datum + * @return boolean + */ + public function getSemesterFromDatum($datum) + { + if($datum == '') + { + $this->errormsg = "Ungueltiges Datum uebergeben"; + return false; + } + $qry = "SELECT * FROM public.tbl_studiensemester WHERE start <=".$this->db_add_param($datum, FHC_STRING)." AND ende >= ".$this->db_add_param($datum).';'; + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + return $row->studiensemester_kurzbz; + } + else + { + $this->errormsg = "Es wurde kein passendes Studiensemester gefunden"; + return false; + } + } + else + { + $this->errormsg = "Fehler bei der Abfrage aufgetreten."; + return false; + } + } + + /** + * Liefert das dazupassende Studiensemester im Studienjahr + * @param $studiensemester_kurzbz + * @return $studiensemester_kurzbz + */ + public function getStudienjahrStudiensemester($studiensemester_kurzbz) + { + if(mb_substr($studiensemester_kurzbz,0,2)=='WS') + return $this->getNextFrom($studiensemester_kurzbz); + else + return $this->getPreviousFrom($studiensemester_kurzbz); + } +} +?> diff --git a/include/tw/cis_menu_lv.inc.php b/include/tw/cis_menu_lv.inc.php index 551cc2db0..87c896d40 100644 --- a/include/tw/cis_menu_lv.inc.php +++ b/include/tw/cis_menu_lv.inc.php @@ -25,7 +25,7 @@ */ echo ' - +
'; $eintraegeprozeile=0; @@ -86,8 +86,8 @@ function checkZeilenUmbruch() $dir_name=$DOC_ROOT.'/documents'; if(!is_dir($dir_name)) { - exec('mkdir -m 755 "'.$dir_name.'"'); - exec('sudo chown www-data:teacher "'.$dir_name.'"'); + exec('mkdir -m 755 '.escapeshellarg($dir_name)); + exec('sudo chown www-data:teacher '.escapeshellarg($dir_name)); } $angemeldet = true; if(defined('CIS_LEHRVERANSTALTUNG_WENNANGEMELDET_DETAILS_ANZEIGEN') && CIS_LEHRVERANSTALTUNG_WENNANGEMELDET_DETAILS_ANZEIGEN && !$is_lector) @@ -123,23 +123,23 @@ function checkZeilenUmbruch() { if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/semesterplan')) { - exec('mkdir -m 775 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/semesterplan"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/semesterplan"'); + exec('mkdir -m 775 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/semesterplan')); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/semesterplan')); } } @@ -206,23 +206,23 @@ function checkZeilenUmbruch() { if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/download')) { - exec('mkdir -m 775 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/download"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/download"'); + exec('mkdir -m 775 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/download')); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/download')); } } @@ -294,23 +294,23 @@ function checkZeilenUmbruch() { if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung')) { - exec('mkdir -m 775 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung"'); + exec('mkdir -m 775 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung')); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung')); } } @@ -453,7 +453,7 @@ function checkZeilenUmbruch() //Moodle $showmoodle=false; //Schauen ob Moodle fuer diesen Studiengang freigeschaltet ist - $qry = "SELECT moodle FROM public.tbl_studiengang JOIN lehre.tbl_lehrveranstaltung USING(studiengang_kz) WHERE lehrveranstaltung_id='".addslashes($lvid)."'"; + $qry = "SELECT moodle FROM public.tbl_studiengang JOIN lehre.tbl_lehrveranstaltung USING(studiengang_kz) WHERE lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER); if($result = $db->db_query($qry)) { if($row = $db->db_fetch_object($result)) @@ -572,23 +572,23 @@ function checkZeilenUmbruch() { if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/upload')) { - exec('mkdir -m 775 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/upload"'); - exec('sudo chown www-data:student "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/upload"'); + exec('mkdir -m 775 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/upload')); + exec('sudo chown www-data:student '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/upload')); } } diff --git a/include/wochenplan.class.php b/include/wochenplan.class.php index 76e497230..c924f098c 100644 --- a/include/wochenplan.class.php +++ b/include/wochenplan.class.php @@ -2438,6 +2438,8 @@ class wochenplan extends basis_db 'Description'=>$description, 'dtstart'=>$start_date_time_ical, 'dtend'=>$end_date_time_ical, + 'reservierung'=>$this->std_plan[$i][$j][$idx]->reservierung, + 'reservierung_id'=>($this->std_plan[$i][$j][$idx]->reservierung?$this->std_plan[$i][$j][$idx]->stundenplan_id:''), 'updateamum'=>$this->std_plan[$i][$j][$idx]->updateamum, 'data'=>'BEGIN:VEVENT'.$this->crlf .'UID:'.$UID.$this->crlf @@ -2488,7 +2490,8 @@ class wochenplan extends basis_db $lektor1 = $this->std_plan[$tag][$stunde][$idx]->lektor; $lektor2 = $this->std_plan[$tag][$stunde][$idx1]->lektor; - if($unr1==$unr2 && ($ort1==$ort2 || $lektor1==$lektor2)) + if($unr1==$unr2 && ($ort1==$ort2 || $lektor1==$lektor2) + && !$this->std_plan[$tag][$stunde][$idx]->reservierung && !$this->std_plan[$tag][$stunde][$idx1]->reservierung) return true; else return false; diff --git a/include/zeugnisnote.class.php b/include/zeugnisnote.class.php index cbbe5c15d..9c582b2f1 100644 --- a/include/zeugnisnote.class.php +++ b/include/zeugnisnote.class.php @@ -1,466 +1,511 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ -/** - * Klasse Zeugnisnote - * @create 2007-06-06 - */ -require_once(dirname(__FILE__).'/basis_db.class.php'); - -class zeugnisnote extends basis_db -{ - public $new; // boolean - public $result=array(); - - //Tabellenspalten - public $lehrveranstaltung_id; /// serial - public $student_uid; // varchar(16) - public $studiensemester_kurzbz; // varchar(16) - public $note; // smalint - public $uebernahmedatum; // date - public $benotungsdatum; // date - public $updateamum; // timestamp - public $updatevon; // varchar(16) - public $insertamum; // timestamp - public $insertvon; // varchar(16) - public $ext_id; // bigint - public $bemerkung; // text - public $punkte; // numeric(8,4) - - public $lehrveranstaltung_bezeichung; - public $note_bezeichnung; - public $zeugnis; - public $lv_lehrform_kurzbz; - - /** - * Konstruktor - * Laedt optional eine Zeugnisnote - * - * @param $lehrveranstaltung_id - * @param $student_uid - * @param $studiensemester_kurzbz - */ - public function __construct($lehrveranstaltung_id=null, $student_uid=null, $studiensemester_kurzbz=null) - { - parent::__construct(); - - if($lehrveranstaltung_id!=null && $student_uid!=null && $studiensemester_kurzbz!=null) - $this->load($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz); - } - - /** - * Laedt eine Zeugnisnote - * - * @param $lehrveranstaltung_id - * @param $student_uid - * @param $studiensemester_kurzbz - * @return true wenn ok, false im Fehlerfall - */ - public function load($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz) - { - if(!is_numeric($lehrveranstaltung_id)) - { - $this->errormsg = 'Lehrveranstaltung_id ist ungueltig'; - return false; - } - - $qry = "SELECT - * - FROM - lehre.tbl_zeugnisnote - WHERE - lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)." - AND student_uid=".$this->db_add_param($student_uid)." - AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->lehrveranstaltung_id = $row->lehrveranstaltung_id; - $this->student_uid = $row->student_uid; - $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $this->note = $row->note; - $this->uebernahmedatum = $row->uebernahmedatum; - $this->benotungsdatum = $row->benotungsdatum; - $this->updateamum = $row->updateamum; - $this->updatevon = $row->updatevon; - $this->insertamum = $row->insertamum; - $this->insertvon = $row->insertvon; - $this->ext_id = $row->ext_id; - $this->bemerkung = $row->bemerkung; - $this->punkte = $row->punkte; - return true; - } - else - { - $this->errormsg = 'Datensatz wurde nicht gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Prueft die Daten vor dem Speichern - * auf Gueltigkeit - */ - protected function validate() - { - if(!is_numeric($this->lehrveranstaltung_id)) - { - $this->errormsg = 'Lehrveranstaltung_id ist ungueltig'; - return false; - } - if($this->student_uid=='') - { - $this->errormsg = 'UID muss angegeben werden'; - return false; - } - if($this->studiensemester_kurzbz=='') - { - $this->errormsg = 'Studiensemester muss angegeben werden'; - return false; - } - if($this->note!='' && !is_numeric($this->note)) - { - $this->errormsg = 'Note ist ungueltig'; - return false; - } - if($this->uebernahmedatum!='' && !mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$this->uebernahmedatum)) - { - $this->errormsg = 'Uebernahmedatum ist ungueltig'; - return false; - } - if($this->benotungsdatum!='' && !mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$this->benotungsdatum)) - { - $this->errormsg = 'Benotungsdatum ist ungueltig'; - return false; - } - return true; - } - - /** - * Speichert den aktuellen Datensatz in die Datenbank - * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt - * andernfalls wird der Datensatz mit der ID in $betriebsmittel_id aktualisiert - * @return true wenn ok, false im Fehlerfall - */ - public function save($new=null) - { - if($new==null) - $new=$this->new; - - if(!$this->validate()) - return false; - - if($new) - { - //Neuen Datensatz einfuegen - $qry='INSERT INTO lehre.tbl_zeugnisnote (lehrveranstaltung_id, student_uid, - studiensemester_kurzbz, note, uebernahmedatum, benotungsdatum, bemerkung, - updateamum, updatevon, insertamum, insertvon, ext_id, punkte) VALUES('. - $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER).', '. - $this->db_add_param($this->student_uid).', '. - $this->db_add_param($this->studiensemester_kurzbz).', '. - $this->db_add_param($this->note).', '. - $this->db_add_param($this->uebernahmedatum).', '. - $this->db_add_param($this->benotungsdatum).', '. - $this->db_add_param($this->bemerkung).', '. - $this->db_add_param($this->updateamum).', '. - $this->db_add_param($this->updatevon).', '. - $this->db_add_param($this->insertamum).', '. - $this->db_add_param($this->insertvon).', '. - $this->db_add_param($this->ext_id).','. - $this->db_add_param($this->punkte).');'; - } - else - { - $qry='UPDATE lehre.tbl_zeugnisnote SET '. - 'note='.$this->db_add_param($this->note).', '. - 'punkte='.$this->db_add_param($this->punkte).','. - 'uebernahmedatum='.$this->db_add_param($this->uebernahmedatum).', '. - 'benotungsdatum='.$this->db_add_param($this->benotungsdatum).', '. - 'bemerkung='.$this->db_add_param($this->bemerkung).', '. - 'updateamum= '.$this->db_add_param($this->updateamum).', '. - 'updatevon='.$this->db_add_param($this->updatevon).' '. - 'WHERE lehrveranstaltung_id='.$this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER).' '. - 'AND student_uid='.$this->db_add_param($this->student_uid).' '. - 'AND studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).';'; - } - - if($this->db_query($qry)) - { - return true; - } - else - { - $this->errormsg='Fehler beim Speichern der Zeugnisnote'; - return false; - } - } - - /** - * Loescht den Datenensatz mit der ID die uebergeben wird - * @param $lehrveranstaltung_id - * $student_uid - * $studiensemester_kurzbz - * @return true wenn ok, false im Fehlerfall - */ - public function delete($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz) - { - $qry = "DELETE FROM lehre.tbl_zeugnisnote WHERE - lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER, false)." AND - student_uid=".$this->db_add_param($student_uid)." AND - studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - if($this->db_query($qry)) - return true; - else - { - $this->errormsg = 'Fehler beim Loeschen der Daten'; - return false; - } - } - - /** - * Laedt die Noten - * @param $lehrveranstaltung_id - * $student_uid - * $studiensemester_kurzbz - * @return true wenn ok, false wenn Fehler - */ - public function getZeugnisnoten($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz) - { - $where=''; - if($lehrveranstaltung_id!=null) - $where.=" AND vw_student_lehrveranstaltung.lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id); - if($student_uid!=null) - $where.=" AND uid=".$this->db_add_param($student_uid); - if($studiensemester_kurzbz!=null) - $where.=" AND vw_student_lehrveranstaltung.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - $where2=''; - if($lehrveranstaltung_id!=null) - $where2.=" AND lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER); - if($student_uid!=null) - $where2.=" AND student_uid=".$this->db_add_param($student_uid); - if($studiensemester_kurzbz!=null) - $where2.=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - $qry = "SELECT vw_student_lehrveranstaltung.lehrveranstaltung_id, uid, - vw_student_lehrveranstaltung.studiensemester_kurzbz, note, punkte, uebernahmedatum, benotungsdatum, - vw_student_lehrveranstaltung.ects, vw_student_lehrveranstaltung.semesterstunden, - tbl_zeugnisnote.updateamum, tbl_zeugnisnote.updatevon, tbl_zeugnisnote.insertamum, - tbl_zeugnisnote.insertvon, tbl_zeugnisnote.ext_id, - vw_student_lehrveranstaltung.bezeichnung as lehrveranstaltung_bezeichnung, - vw_student_lehrveranstaltung.bezeichnung_english as lehrveranstaltung_bezeichnung_english, - tbl_note.bezeichnung as note_bezeichnung, - tbl_zeugnisnote.bemerkung as bemerkung, - vw_student_lehrveranstaltung.sort, - vw_student_lehrveranstaltung.zeugnis, - vw_student_lehrveranstaltung.studiengang_kz, - vw_student_lehrveranstaltung.lv_lehrform_kurzbz - FROM - ( - campus.vw_student_lehrveranstaltung LEFT JOIN lehre.tbl_zeugnisnote - ON(uid=student_uid - AND vw_student_lehrveranstaltung.studiensemester_kurzbz=tbl_zeugnisnote.studiensemester_kurzbz - AND vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id - ) - ) LEFT JOIN lehre.tbl_note USING(note) - WHERE true $where - UNION - SELECT lehre.tbl_lehrveranstaltung.lehrveranstaltung_id,student_uid AS uid,studiensemester_kurzbz, note, punkte, - uebernahmedatum, benotungsdatum,lehre.tbl_lehrveranstaltung.ects,lehre.tbl_lehrveranstaltung.semesterstunden, tbl_zeugnisnote.updateamum, tbl_zeugnisnote.updatevon, tbl_zeugnisnote.insertamum, - tbl_zeugnisnote.insertvon, tbl_zeugnisnote.ext_id, lehre.tbl_lehrveranstaltung.bezeichnung as lehrveranstaltung_bezeichnung, lehre.tbl_lehrveranstaltung.bezeichnung_english as lehrveranstaltung_bezeichnung_english, - tbl_note.bezeichnung as note_bezeichnung, tbl_zeugnisnote.bemerkung as bemerkung, tbl_lehrveranstaltung.sort, tbl_lehrveranstaltung.zeugnis, tbl_lehrveranstaltung.studiengang_kz, - tbl_lehrveranstaltung.lehrform_kurzbz as lv_lehrform_kurzbz - FROM - lehre.tbl_zeugnisnote - JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id) - JOIN lehre.tbl_note USING(note) - WHERE true $where2 - ORDER BY sort"; - - if($this->db_query($qry)) - { - while($row = $this->db_fetch_object()) - { - $obj = new zeugnisnote(); - - $obj->lehrveranstaltung_id = $row->lehrveranstaltung_id; - $obj->student_uid = $row->uid; - $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $obj->note = $row->note; - $obj->punkte = $row->punkte; - $obj->uebernahmedatum = $row->uebernahmedatum; - $obj->benotungsdatum = $row->benotungsdatum; - $obj->updateamum = $row->updateamum; - $obj->updatevon = $row->updatevon; - $obj->insertamum = $row->insertamum; - $obj->insertvon = $row->insertvon; - $obj->ext_id = $row->ext_id; - $obj->note_bezeichnung = $row->note_bezeichnung; - $obj->lehrveranstaltung_bezeichnung = $row->lehrveranstaltung_bezeichnung; - $obj->lehrveranstaltung_bezeichnung_english = $row->lehrveranstaltung_bezeichnung_english; - $obj->bemerkung = $row->bemerkung; - $obj->semesterstunden = $row->semesterstunden; - $obj->ects = $row->ects; - $obj->sort = $row->sort; - $obj->studiengang_kz = $row->studiengang_kz; - $obj->zeugnis = $this->db_parse_bool($row->zeugnis); - $obj->lv_lehrform_kurzbz = $row->lv_lehrform_kurzbz; - - $this->result[] = $obj; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Laedt die Noten Studienjahr - * @param $lehrveranstaltung_id - * $student_uid - * $studiensemester_kurzbz - * @return true wenn ok, false wenn Fehler - */ - public function getZeugnisnotenStudienplan($student_uid, $studiensemester_arr, $studienplan_id) - { - - $stsem = $this->db_implode4SQL($studiensemester_arr); - - /* - * Alle Lehrveranstaltungen holen zu denen eine Note eingetragen ist und alle zu denen der Studierende zugeteilt ist. - * Danach wird im Studienplan gesucht und eventuell darbueberliegenden Module zusaetzlich geladen - */ - $qry = " - WITH RECURSIVE data(lvid, studienplan_lehrveranstaltung_id, studienplan_lehrveranstaltung_id_parent) as - ( - SELECT - vw_student_lehrveranstaltung.lehrveranstaltung_id, - tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id, - tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent - FROM - ( - campus.vw_student_lehrveranstaltung LEFT JOIN lehre.tbl_zeugnisnote - ON(uid=student_uid - AND vw_student_lehrveranstaltung.studiensemester_kurzbz=tbl_zeugnisnote.studiensemester_kurzbz - AND vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id - ) - ) - LEFT JOIN lehre.tbl_note USING(note) - LEFT JOIN lehre.tbl_studienplan_lehrveranstaltung ON(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id) - WHERE - uid=".$this->db_add_param($student_uid)." - AND vw_student_lehrveranstaltung.studiensemester_kurzbz IN(".$stsem.") - AND tbl_studienplan_lehrveranstaltung.studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER)." - UNION - SELECT lehre.tbl_lehrveranstaltung.lehrveranstaltung_id, - tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id, - tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent - FROM - lehre.tbl_zeugnisnote - JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id) - JOIN lehre.tbl_note USING(note) - LEFT JOIN lehre.tbl_studienplan_lehrveranstaltung USING(lehrveranstaltung_id) - WHERE - student_uid=".$this->db_add_param($student_uid)." - AND studiensemester_kurzbz IN(".$stsem.") - AND tbl_studienplan_lehrveranstaltung.studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER)." - - UNION ALL - SELECT stpllv.lehrveranstaltung_id, stpllv.studienplan_lehrveranstaltung_id, stpllv.studienplan_lehrveranstaltung_id_parent - FROM lehre.tbl_studienplan_lehrveranstaltung stpllv, data - WHERE stpllv.studienplan_lehrveranstaltung_id=data.studienplan_lehrveranstaltung_id_parent - ) - SELECT - tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id, - tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent, tbl_studienplan_lehrveranstaltung.semester, - tbl_lehrveranstaltung.lehrveranstaltung_id,tbl_lehrveranstaltung.bezeichnung as lehrveranstaltung_bezeichnung, tbl_lehrveranstaltung.bezeichnung_english as lehrveranstaltung_bezeichnung_english, - tbl_lehrveranstaltung.semesterstunden, tbl_lehrveranstaltung.ects, tbl_lehrveranstaltung.sort, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.zeugnis, - tbl_lehrveranstaltung.lehrform_kurzbz as lv_lehrform_kurzbz, - tbl_zeugnisnote.studiensemester_kurzbz, tbl_zeugnisnote.uebernahmedatum, tbl_zeugnisnote.benotungsdatum, - tbl_zeugnisnote.note, tbl_zeugnisnote.updateamum, tbl_zeugnisnote.updatevon, tbl_zeugnisnote.insertamum, tbl_zeugnisnote.insertvon, - tbl_note.bezeichnung as note_bezeichnung, tbl_zeugnisnote.bemerkung, tbl_lehrveranstaltung.lvnr, tbl_studienplan_lehrveranstaltung.sort as studienplan_lehrveranstaltung_sort - FROM - lehre.tbl_lehrveranstaltung - LEFT JOIN lehre.tbl_zeugnisnote ON(tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=".$this->db_add_param($student_uid)." AND tbl_zeugnisnote.studiensemester_kurzbz IN(".$stsem.")) - LEFT JOIN lehre.tbl_studienplan_lehrveranstaltung ON(tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id AND tbl_studienplan_lehrveranstaltung.studienplan_id=".$this->db_add_param($studienplan_id).") - LEFT JOIN lehre.tbl_note USING(note) - WHERE - (tbl_zeugnisnote.studiensemester_kurzbz IN(".$stsem.") OR tbl_zeugnisnote.studiensemester_kurzbz is null) - AND tbl_lehrveranstaltung.lehrveranstaltung_id in(SELECT lvid FROM data) - ORDER BY studienplan_lehrveranstaltung_id_parent desc, studienplan_lehrveranstaltung_id - "; - - if($this->db_query($qry)) - { - while($row = $this->db_fetch_object()) - { - $obj = new zeugnisnote(); - - $obj->lehrveranstaltung_id = $row->lehrveranstaltung_id; - $obj->student_uid = $student_uid; - $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $obj->note = $row->note; - $obj->uebernahmedatum = $row->uebernahmedatum; - $obj->benotungsdatum = $row->benotungsdatum; - $obj->updateamum = $row->updateamum; - $obj->updatevon = $row->updatevon; - $obj->insertamum = $row->insertamum; - $obj->insertvon = $row->insertvon; - $obj->note_bezeichnung = $row->note_bezeichnung; - $obj->lehrveranstaltung_bezeichnung = $row->lehrveranstaltung_bezeichnung; - $obj->lehrveranstaltung_bezeichnung_english = $row->lehrveranstaltung_bezeichnung_english; - $obj->bemerkung = $row->bemerkung; - $obj->semesterstunden = $row->semesterstunden; - $obj->ects = $row->ects; - $obj->sort = $row->sort; - $obj->studiengang_kz = $row->studiengang_kz; - $obj->zeugnis = $this->db_parse_bool($row->zeugnis); - $obj->lv_lehrform_kurzbz = $row->lv_lehrform_kurzbz; - $obj->lehrveranstaltung_lvnr = $row->lvnr; - $obj->studienplan_lehrveranstaltung_id = $row->studienplan_lehrveranstaltung_id; - $obj->studienplan_lehrveranstaltung_id_parent = $row->studienplan_lehrveranstaltung_id_parent; - $obj->studienplan_lehrveranstaltung_semester = $row->semester; - $obj->studienplan_lehrveranstaltung_sort = $row->studienplan_lehrveranstaltung_sort; - - $this->result[] = $obj; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } -} -?> +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/** + * Klasse Zeugnisnote + * @create 2007-06-06 + */ +require_once(dirname(__FILE__).'/basis_db.class.php'); + +class zeugnisnote extends basis_db +{ + public $new; // boolean + public $result=array(); + + //Tabellenspalten + public $lehrveranstaltung_id; /// serial + public $student_uid; // varchar(16) + public $studiensemester_kurzbz; // varchar(16) + public $note; // smalint + public $uebernahmedatum; // date + public $benotungsdatum; // date + public $updateamum; // timestamp + public $updatevon; // varchar(16) + public $insertamum; // timestamp + public $insertvon; // varchar(16) + public $ext_id; // bigint + public $bemerkung; // text + public $punkte; // numeric(8,4) + + public $lehrveranstaltung_bezeichung; + public $note_bezeichnung; + public $zeugnis; + public $lv_lehrform_kurzbz; + + /** + * Konstruktor + * Laedt optional eine Zeugnisnote + * + * @param $lehrveranstaltung_id + * @param $student_uid + * @param $studiensemester_kurzbz + */ + public function __construct($lehrveranstaltung_id=null, $student_uid=null, $studiensemester_kurzbz=null) + { + parent::__construct(); + + if($lehrveranstaltung_id!=null && $student_uid!=null && $studiensemester_kurzbz!=null) + $this->load($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz); + } + + /** + * Laedt eine Zeugnisnote + * + * @param $lehrveranstaltung_id + * @param $student_uid + * @param $studiensemester_kurzbz + * @return true wenn ok, false im Fehlerfall + */ + public function load($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz) + { + if(!is_numeric($lehrveranstaltung_id)) + { + $this->errormsg = 'Lehrveranstaltung_id ist ungueltig'; + return false; + } + + $qry = "SELECT + * + FROM + lehre.tbl_zeugnisnote + WHERE + lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)." + AND student_uid=".$this->db_add_param($student_uid)." + AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $this->student_uid = $row->student_uid; + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->note = $row->note; + $this->uebernahmedatum = $row->uebernahmedatum; + $this->benotungsdatum = $row->benotungsdatum; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->ext_id = $row->ext_id; + $this->bemerkung = $row->bemerkung; + $this->punkte = $row->punkte; + return true; + } + else + { + $this->errormsg = 'Datensatz wurde nicht gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Prueft die Daten vor dem Speichern + * auf Gueltigkeit + */ + protected function validate() + { + if(!is_numeric($this->lehrveranstaltung_id)) + { + $this->errormsg = 'Lehrveranstaltung_id ist ungueltig'; + return false; + } + if($this->student_uid=='') + { + $this->errormsg = 'UID muss angegeben werden'; + return false; + } + if($this->studiensemester_kurzbz=='') + { + $this->errormsg = 'Studiensemester muss angegeben werden'; + return false; + } + if($this->note!='' && !is_numeric($this->note)) + { + $this->errormsg = 'Note ist ungueltig'; + return false; + } + if($this->uebernahmedatum!='' && !mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$this->uebernahmedatum)) + { + $this->errormsg = 'Uebernahmedatum ist ungueltig'; + return false; + } + if($this->benotungsdatum!='' && !mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$this->benotungsdatum)) + { + $this->errormsg = 'Benotungsdatum ist ungueltig'; + return false; + } + return true; + } + + /** + * Speichert den aktuellen Datensatz in die Datenbank + * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt + * andernfalls wird der Datensatz mit der ID in $betriebsmittel_id aktualisiert + * @return true wenn ok, false im Fehlerfall + */ + public function save($new=null) + { + if($new==null) + $new=$this->new; + + if(!$this->validate()) + return false; + + if($new) + { + //Neuen Datensatz einfuegen + $qry='INSERT INTO lehre.tbl_zeugnisnote (lehrveranstaltung_id, student_uid, + studiensemester_kurzbz, note, uebernahmedatum, benotungsdatum, bemerkung, + updateamum, updatevon, insertamum, insertvon, ext_id, punkte) VALUES('. + $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER).', '. + $this->db_add_param($this->student_uid).', '. + $this->db_add_param($this->studiensemester_kurzbz).', '. + $this->db_add_param($this->note).', '. + $this->db_add_param($this->uebernahmedatum).', '. + $this->db_add_param($this->benotungsdatum).', '. + $this->db_add_param($this->bemerkung).', '. + $this->db_add_param($this->updateamum).', '. + $this->db_add_param($this->updatevon).', '. + $this->db_add_param($this->insertamum).', '. + $this->db_add_param($this->insertvon).', '. + $this->db_add_param($this->ext_id).','. + $this->db_add_param($this->punkte).');'; + } + else + { + $qry='UPDATE lehre.tbl_zeugnisnote SET '. + 'note='.$this->db_add_param($this->note).', '. + 'punkte='.$this->db_add_param($this->punkte).','. + 'uebernahmedatum='.$this->db_add_param($this->uebernahmedatum).', '. + 'benotungsdatum='.$this->db_add_param($this->benotungsdatum).', '. + 'bemerkung='.$this->db_add_param($this->bemerkung).', '. + 'updateamum= '.$this->db_add_param($this->updateamum).', '. + 'updatevon='.$this->db_add_param($this->updatevon).' '. + 'WHERE lehrveranstaltung_id='.$this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER).' '. + 'AND student_uid='.$this->db_add_param($this->student_uid).' '. + 'AND studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).';'; + } + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg='Fehler beim Speichern der Zeugnisnote'; + return false; + } + } + + /** + * Loescht den Datenensatz mit der ID die uebergeben wird + * @param $lehrveranstaltung_id + * $student_uid + * $studiensemester_kurzbz + * @return true wenn ok, false im Fehlerfall + */ + public function delete($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz) + { + $qry = "DELETE FROM lehre.tbl_zeugnisnote WHERE + lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER, false)." AND + student_uid=".$this->db_add_param($student_uid)." AND + studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + if($this->db_query($qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Loeschen der Daten'; + return false; + } + } + + /** + * Laedt die Noten + * @param $lehrveranstaltung_id + * $student_uid + * $studiensemester_kurzbz + * @return true wenn ok, false wenn Fehler + */ + public function getZeugnisnoten($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz) + { + $where=''; + if($lehrveranstaltung_id!=null) + $where.=" AND vw_student_lehrveranstaltung.lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id); + if($student_uid!=null) + $where.=" AND uid=".$this->db_add_param($student_uid); + if($studiensemester_kurzbz!=null) + $where.=" AND vw_student_lehrveranstaltung.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + $where2=''; + if($lehrveranstaltung_id!=null) + $where2.=" AND lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER); + if($student_uid!=null) + $where2.=" AND student_uid=".$this->db_add_param($student_uid); + if($studiensemester_kurzbz!=null) + $where2.=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + $qry = "SELECT vw_student_lehrveranstaltung.lehrveranstaltung_id, uid, + vw_student_lehrveranstaltung.studiensemester_kurzbz, note, punkte, uebernahmedatum, benotungsdatum, + vw_student_lehrveranstaltung.ects, vw_student_lehrveranstaltung.semesterstunden, + tbl_zeugnisnote.updateamum, tbl_zeugnisnote.updatevon, tbl_zeugnisnote.insertamum, + tbl_zeugnisnote.insertvon, tbl_zeugnisnote.ext_id, + vw_student_lehrveranstaltung.bezeichnung as lehrveranstaltung_bezeichnung, + vw_student_lehrveranstaltung.bezeichnung_english as lehrveranstaltung_bezeichnung_english, + tbl_note.bezeichnung as note_bezeichnung, + tbl_zeugnisnote.bemerkung as bemerkung, + vw_student_lehrveranstaltung.sort, + vw_student_lehrveranstaltung.zeugnis, + vw_student_lehrveranstaltung.studiengang_kz, + vw_student_lehrveranstaltung.lv_lehrform_kurzbz + FROM + ( + campus.vw_student_lehrveranstaltung LEFT JOIN lehre.tbl_zeugnisnote + ON(uid=student_uid + AND vw_student_lehrveranstaltung.studiensemester_kurzbz=tbl_zeugnisnote.studiensemester_kurzbz + AND vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id + ) + ) LEFT JOIN lehre.tbl_note USING(note) + WHERE true $where + UNION + SELECT lehre.tbl_lehrveranstaltung.lehrveranstaltung_id,student_uid AS uid,studiensemester_kurzbz, note, punkte, + uebernahmedatum, benotungsdatum,lehre.tbl_lehrveranstaltung.ects,lehre.tbl_lehrveranstaltung.semesterstunden, tbl_zeugnisnote.updateamum, tbl_zeugnisnote.updatevon, tbl_zeugnisnote.insertamum, + tbl_zeugnisnote.insertvon, tbl_zeugnisnote.ext_id, lehre.tbl_lehrveranstaltung.bezeichnung as lehrveranstaltung_bezeichnung, lehre.tbl_lehrveranstaltung.bezeichnung_english as lehrveranstaltung_bezeichnung_english, + tbl_note.bezeichnung as note_bezeichnung, tbl_zeugnisnote.bemerkung as bemerkung, tbl_lehrveranstaltung.sort, tbl_lehrveranstaltung.zeugnis, tbl_lehrveranstaltung.studiengang_kz, + tbl_lehrveranstaltung.lehrform_kurzbz as lv_lehrform_kurzbz + FROM + lehre.tbl_zeugnisnote + JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id) + JOIN lehre.tbl_note USING(note) + WHERE true $where2 + ORDER BY sort"; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new zeugnisnote(); + + $obj->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $obj->student_uid = $row->uid; + $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $obj->note = $row->note; + $obj->punkte = $row->punkte; + $obj->uebernahmedatum = $row->uebernahmedatum; + $obj->benotungsdatum = $row->benotungsdatum; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->ext_id = $row->ext_id; + $obj->note_bezeichnung = $row->note_bezeichnung; + $obj->lehrveranstaltung_bezeichnung = $row->lehrveranstaltung_bezeichnung; + $obj->lehrveranstaltung_bezeichnung_english = $row->lehrveranstaltung_bezeichnung_english; + $obj->bemerkung = $row->bemerkung; + $obj->semesterstunden = $row->semesterstunden; + $obj->ects = $row->ects; + $obj->sort = $row->sort; + $obj->studiengang_kz = $row->studiengang_kz; + $obj->zeugnis = $this->db_parse_bool($row->zeugnis); + $obj->lv_lehrform_kurzbz = $row->lv_lehrform_kurzbz; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Laedt die Noten Studienjahr + * @param $lehrveranstaltung_id + * $student_uid + * $studiensemester_kurzbz + * @return true wenn ok, false wenn Fehler + */ + public function getZeugnisnotenStudienplan($student_uid, $studiensemester_arr, $studienplan_id) + { + + $stsem = $this->db_implode4SQL($studiensemester_arr); + + /* + * Alle Lehrveranstaltungen holen zu denen eine Note eingetragen ist und alle zu denen der Studierende zugeteilt ist. + * Danach wird im Studienplan gesucht und eventuell darbueberliegenden Module zusaetzlich geladen + */ + $qry = " + WITH RECURSIVE data(lvid, studienplan_lehrveranstaltung_id, studienplan_lehrveranstaltung_id_parent) as + ( + SELECT + vw_student_lehrveranstaltung.lehrveranstaltung_id, + tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id, + tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent + FROM + ( + campus.vw_student_lehrveranstaltung LEFT JOIN lehre.tbl_zeugnisnote + ON(uid=student_uid + AND vw_student_lehrveranstaltung.studiensemester_kurzbz=tbl_zeugnisnote.studiensemester_kurzbz + AND vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id + ) + ) + LEFT JOIN lehre.tbl_note USING(note) + LEFT JOIN lehre.tbl_studienplan_lehrveranstaltung ON(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id) + WHERE + uid=".$this->db_add_param($student_uid)." + AND vw_student_lehrveranstaltung.studiensemester_kurzbz IN(".$stsem.") + AND tbl_studienplan_lehrveranstaltung.studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER)." + UNION + SELECT lehre.tbl_lehrveranstaltung.lehrveranstaltung_id, + tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id, + tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent + FROM + lehre.tbl_zeugnisnote + JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id) + JOIN lehre.tbl_note USING(note) + LEFT JOIN lehre.tbl_studienplan_lehrveranstaltung USING(lehrveranstaltung_id) + WHERE + student_uid=".$this->db_add_param($student_uid)." + AND studiensemester_kurzbz IN(".$stsem.") + AND tbl_studienplan_lehrveranstaltung.studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER)." + + UNION ALL + SELECT stpllv.lehrveranstaltung_id, stpllv.studienplan_lehrveranstaltung_id, stpllv.studienplan_lehrveranstaltung_id_parent + FROM lehre.tbl_studienplan_lehrveranstaltung stpllv, data + WHERE stpllv.studienplan_lehrveranstaltung_id=data.studienplan_lehrveranstaltung_id_parent + ) + SELECT + tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id, + tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent, tbl_studienplan_lehrveranstaltung.semester, + tbl_lehrveranstaltung.lehrveranstaltung_id,tbl_lehrveranstaltung.bezeichnung as lehrveranstaltung_bezeichnung, tbl_lehrveranstaltung.bezeichnung_english as lehrveranstaltung_bezeichnung_english, + tbl_lehrveranstaltung.semesterstunden, tbl_lehrveranstaltung.ects, tbl_lehrveranstaltung.sort, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.zeugnis, + tbl_lehrveranstaltung.lehrform_kurzbz as lv_lehrform_kurzbz, + tbl_zeugnisnote.studiensemester_kurzbz, tbl_zeugnisnote.uebernahmedatum, tbl_zeugnisnote.benotungsdatum, + tbl_zeugnisnote.note, tbl_zeugnisnote.updateamum, tbl_zeugnisnote.updatevon, tbl_zeugnisnote.insertamum, tbl_zeugnisnote.insertvon, + tbl_note.bezeichnung as note_bezeichnung, tbl_zeugnisnote.bemerkung, tbl_lehrveranstaltung.lvnr, tbl_studienplan_lehrveranstaltung.sort as studienplan_lehrveranstaltung_sort + FROM + lehre.tbl_lehrveranstaltung + LEFT JOIN lehre.tbl_zeugnisnote ON(tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=".$this->db_add_param($student_uid)." AND tbl_zeugnisnote.studiensemester_kurzbz IN(".$stsem.")) + LEFT JOIN lehre.tbl_studienplan_lehrveranstaltung ON(tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id AND tbl_studienplan_lehrveranstaltung.studienplan_id=".$this->db_add_param($studienplan_id).") + LEFT JOIN lehre.tbl_note USING(note) + WHERE + (tbl_zeugnisnote.studiensemester_kurzbz IN(".$stsem.") OR tbl_zeugnisnote.studiensemester_kurzbz is null) + AND tbl_lehrveranstaltung.lehrveranstaltung_id in(SELECT lvid FROM data) + ORDER BY studienplan_lehrveranstaltung_id_parent desc, studienplan_lehrveranstaltung_id + "; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new zeugnisnote(); + + $obj->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $obj->student_uid = $student_uid; + $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $obj->note = $row->note; + $obj->uebernahmedatum = $row->uebernahmedatum; + $obj->benotungsdatum = $row->benotungsdatum; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->note_bezeichnung = $row->note_bezeichnung; + $obj->lehrveranstaltung_bezeichnung = $row->lehrveranstaltung_bezeichnung; + $obj->lehrveranstaltung_bezeichnung_english = $row->lehrveranstaltung_bezeichnung_english; + $obj->bemerkung = $row->bemerkung; + $obj->semesterstunden = $row->semesterstunden; + $obj->ects = $row->ects; + $obj->sort = $row->sort; + $obj->studiengang_kz = $row->studiengang_kz; + $obj->zeugnis = $this->db_parse_bool($row->zeugnis); + $obj->lv_lehrform_kurzbz = $row->lv_lehrform_kurzbz; + $obj->lehrveranstaltung_lvnr = $row->lvnr; + $obj->studienplan_lehrveranstaltung_id = $row->studienplan_lehrveranstaltung_id; + $obj->studienplan_lehrveranstaltung_id_parent = $row->studienplan_lehrveranstaltung_id_parent; + $obj->studienplan_lehrveranstaltung_semester = $row->semester; + $obj->studienplan_lehrveranstaltung_sort = $row->studienplan_lehrveranstaltung_sort; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Generiert den SQL-Befehl für eine UNDO-Aktion + * @param type $crud gewünschter Typ der UNDO-Aktion + */ + public function getUndo($crud) + { + if(strtoupper($crud) === 'INSERT') + { + return 'INSERT INTO lehre.tbl_zeugnisnote (lehrveranstaltung_id, student_uid, + studiensemester_kurzbz, note, uebernahmedatum, benotungsdatum, bemerkung, + updateamum, updatevon, insertamum, insertvon, ext_id, punkte) VALUES('. + $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER).', '. + $this->db_add_param($this->student_uid).', '. + $this->db_add_param($this->studiensemester_kurzbz).', '. + $this->db_add_param($this->note).', '. + $this->db_add_param($this->uebernahmedatum).', '. + $this->db_add_param($this->benotungsdatum).', '. + $this->db_add_param($this->bemerkung).', '. + $this->db_add_param($this->updateamum).', '. + $this->db_add_param($this->updatevon).', '. + $this->db_add_param($this->insertamum).', '. + $this->db_add_param($this->insertvon).', '. + $this->db_add_param($this->ext_id).','. + $this->db_add_param($this->punkte).');'; + } + else if(strtoupper($crud) === 'UPDATE') + { + return 'UPDATE lehre.tbl_zeugnisnote SET '. + 'note='.$this->db_add_param($this->note).', '. + 'punkte='.$this->db_add_param($this->punkte).','. + 'uebernahmedatum='.$this->db_add_param($this->uebernahmedatum).', '. + 'benotungsdatum='.$this->db_add_param($this->benotungsdatum).', '. + 'bemerkung='.$this->db_add_param($this->bemerkung).', '. + 'updateamum= '.$this->db_add_param($this->updateamum).', '. + 'updatevon='.$this->db_add_param($this->updatevon).' '. + 'WHERE lehrveranstaltung_id='.$this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER).' '. + 'AND student_uid='.$this->db_add_param($this->student_uid).' '. + 'AND studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).';'; + } + else + { + return NULL; + } + } +} +?> diff --git a/locale/de-AT/bewerbung.php b/locale/de-AT/bewerbung.php index 254968ed0..91216acbd 100755 --- a/locale/de-AT/bewerbung.php +++ b/locale/de-AT/bewerbung.php @@ -37,6 +37,7 @@ $this->phrasen['bewerbung/egal']='egal'; $this->phrasen['bewerbung/orgform']='Organisationsform'; $this->phrasen['bewerbung/orgform/berufsbegleitend']='Berufsbegleitend'; $this->phrasen['bewerbung/orgform/vollzeit']='Vollzeit'; +$this->phrasen['bewerbung/orgform/distance']='Fernstudium'; $this->phrasen['bewerbung/sprache']='Sprache'; $this->phrasen['bewerbung/sprache/deutsch']='Deutsch'; $this->phrasen['bewerbung/sprache/englisch']='Englisch'; diff --git a/locale/de-AT/tools.php b/locale/de-AT/tools.php index b716024a4..223ccbd2e 100755 --- a/locale/de-AT/tools.php +++ b/locale/de-AT/tools.php @@ -1,73 +1,74 @@ -phrasen['tools/dokumente']='Dokumente'; -$this->phrasen['tools/inskriptionsbestaetigung']='Inskriptionsbestätigung'; -$this->phrasen['tools/studienbeitragFuerSSBezahltAmDatum']='Studienbeitrag für das %1$s bezahlt am %2$s'; -$this->phrasen['tools/studienbeitragFuerSSNochNichtBezahlt']='Studienbeitrag für das %1$s noch nicht bezahlt'; -$this->phrasen['tools/studienerfolgsbestaetigung']='Studienerfolgsbestätigung'; -$this->phrasen['tools/studiensemesterAuswaehlen']='Bitte wählen Sie das entsprechende Studiensemester aus'; -$this->phrasen['tools/vorlageWohnsitzfinanzamt']='zur Vorlage beim Wohnsitzfinanzamt'; - -//Leistungsbeurteilung -$this->phrasen['tools/leistungsbeurteilung']='Leistungsbeurteilung'; -$this->phrasen['tools/studentWurdeNichtGefunden']='Student wurde nicht gefunden'; -$this->phrasen['tools/mussAlsStudentEingeloggtSein']='Sie müssen als Student eingeloggt sein um ihre Noten abzufragen!'; -$this->phrasen['tools/nochKeineBeurteilungEingetragen']='Es wurden noch keine Beurteilungen eingetragen'; -$this->phrasen['tools/fehlerBeimAuslesenDerNoten']='Fehler beim Auslesen der Noten'; -$this->phrasen['tools/benotungsdatumDerZeugnisnote']='Benotungsdatum der Zeugnisnote'; - -//Zahlungen -$this->phrasen['tools/zahlungen']='Zahlungen'; -$this->phrasen['tools/zahlungstyp']='Typ'; -$this->phrasen['tools/buchungstext']='Buchungstext'; -$this->phrasen['tools/betrag']='Betrag'; -$this->phrasen['tools/zahlungsbestaetigung']='Zahlungsbestätigung'; -$this->phrasen['tools/bestaetigungDrucken']='Bestaetigung drucken'; -$this->phrasen['tools/offen']='offen'; -$this->phrasen['tools/keineZahlungenVorhanden']='Derzeit sind keine Zahlungen vorhanden'; - -//Ampeln -$this->phrasen['tools/ampelsystem']='Ampelsystem'; -$this->phrasen['tools/ampel']='Ampel'; -$this->phrasen['tools/nichtZugeteilt']='Sie sind nicht zu dieser Ampel zugeteilt'; -$this->phrasen['tools/ampelNichtGefunden']='Die angegeben Ampel wurde nicht gefunden'; -$this->phrasen['tools/ampelStatus']='Status'; -$this->phrasen['tools/ampelBeschreibung']='Beschreibung'; -$this->phrasen['tools/ampelKurzbz']='Kurzbezeichnung'; -$this->phrasen['tools/ampelDeadline']='Deadline'; -$this->phrasen['tools/ampelAktion']='Aktion'; -$this->phrasen['tools/ampelErledigt']='Erledigt'; -$this->phrasen['tools/ampelBestaetigen']='bestätigen'; -$this->phrasen['tools/ampelBestaetigt']='bestätigt'; -$this->phrasen['tools/ampelMitarbeiter']='Mitarbeiter'; -$this->phrasen['tools/ampelRestdauer']='Restdauer in Tagen'; -$this->phrasen['tools/ampelBestaetigtAm']='Bestätigt am'; -$this->phrasen['tools/ampelBereitsBestaetigt']='Diese Ampel wurde bereits bestätigt'; -$this->phrasen['tools/dasAmpelsystemIstEinErinnerungsystem']='Das Ampelsystem ist ein ERINNERUNGS- und BESTÄTIGUNGSSYSTEM, welches Sie auf ausstehende Aufgaben aufmerksam machen soll.
Die Ampel überprüft NICHT, ob die Aufgabe tatsächlich erledigt wurde. Weitere Details entnehmen Sie bitte dem CIS-Handbuch'; -$this->phrasen['tools/waehlenSieEineOEoderAmpel']='Bitte wählen Sie ein Organisationseinheit und/oder eine Ampel aus dem Dropdown'; -$this->phrasen['tools/uebersichtLeitung']='Ampel-Übersicht für LeiterInnen'; - -//Software fuer Lehre -> Softgrid -$this->phrasen['tools/applikationsliste']='Applikationsliste'; -$this->phrasen['tools/naehereInformationenfindenSieUnter']='Nähere Informationen zu Softgrid sowie eine Installationsanleitung finden Sie unter "Infrastruktur - SoftGrid"'; -$this->phrasen['tools/einzelanwendung']='Einzelanwendung'; -$this->phrasen['tools/softwarepaket']='Softwarepaket'; -$this->phrasen['tools/datei']='Datei '; -$this->phrasen['tools/wurdeNichtGefunden']=' wurde nicht gefunden!'; -$this->phrasen['tools/fehlerBeimLesenDerDatei']='Fehler beim Lesen der Datei '; -$this->phrasen['tools/keineDatenGefunden']='Keine Daten gefunden'; - -//Suche -$this->phrasen['tools/suche']='Globale Suche'; -$this->phrasen['tools/content']='Content'; -$this->phrasen['tools/suchbegriff']='Suchbegriff'; -$this->phrasen['tools/esWurdenMehrAlsXDokumenteGefunden']='Es wurden mehr als 40 Dokumente zu Ihrem Suchbegriff gefunden. Bitte spezifizieren Sie Ihre Suche.'; -$this->phrasen['tools/esWurdenMehrAlsXPersonenGefunden']='Es wurden mehr als 20 Personen zu Ihrem Suchbegriff gefunden. Bitte spezifizieren Sie Ihre Suche.'; -$this->phrasen['tools/esWurdenMehrAlsXInhalteGefunden']='Es wurden mehr als 20 Seiten zu Ihrem Suchbegriff gefunden. Bitte spezifizieren Sie Ihre Suche.'; -$this->phrasen['tools/aktuelleVersion']='Aktuelle Version'; -$this->phrasen['tools/telefonklappe']='Telefonklappe'; -$this->phrasen['tools/reservieren']='Reservieren'; -$this->phrasen['tools/maxPersonen']='Max. Personen'; -$this->phrasen['tools/esWurdenKeineErgebnisseGefunden']='Es wurden keine Ergebnisse gefunden.'; -?> +phrasen['tools/dokumente']='Dokumente'; +$this->phrasen['tools/inskriptionsbestaetigung']='Inskriptionsbestätigung'; +$this->phrasen['tools/studienbeitragFuerSSBezahltAmDatum']='Studienbeitrag für das %1$s bezahlt am %2$s'; +$this->phrasen['tools/studienbeitragFuerSSNochNichtBezahlt']='Studienbeitrag für das %1$s noch nicht bezahlt'; +$this->phrasen['tools/studienerfolgsbestaetigung']='Studienerfolgsbestätigung'; +$this->phrasen['tools/studiensemesterAuswaehlen']='Bitte wählen Sie das entsprechende Studiensemester aus'; +$this->phrasen['tools/vorlageWohnsitzfinanzamt']='zur Vorlage beim Wohnsitzfinanzamt'; +$this->phrasen['tools/studienbuchblatt']='Studienbuchblatt'; + +//Leistungsbeurteilung +$this->phrasen['tools/leistungsbeurteilung']='Leistungsbeurteilung'; +$this->phrasen['tools/studentWurdeNichtGefunden']='Student wurde nicht gefunden'; +$this->phrasen['tools/mussAlsStudentEingeloggtSein']='Sie müssen als Student eingeloggt sein um ihre Noten abzufragen!'; +$this->phrasen['tools/nochKeineBeurteilungEingetragen']='Es wurden noch keine Beurteilungen eingetragen'; +$this->phrasen['tools/fehlerBeimAuslesenDerNoten']='Fehler beim Auslesen der Noten'; +$this->phrasen['tools/benotungsdatumDerZeugnisnote']='Benotungsdatum der Zeugnisnote'; + +//Zahlungen +$this->phrasen['tools/zahlungen']='Zahlungen'; +$this->phrasen['tools/zahlungstyp']='Typ'; +$this->phrasen['tools/buchungstext']='Buchungstext'; +$this->phrasen['tools/betrag']='Betrag'; +$this->phrasen['tools/zahlungsbestaetigung']='Zahlungsbestätigung'; +$this->phrasen['tools/bestaetigungDrucken']='Bestaetigung drucken'; +$this->phrasen['tools/offen']='offen'; +$this->phrasen['tools/keineZahlungenVorhanden']='Derzeit sind keine Zahlungen vorhanden'; + +//Ampeln +$this->phrasen['tools/ampelsystem']='Ampelsystem'; +$this->phrasen['tools/ampel']='Ampel'; +$this->phrasen['tools/nichtZugeteilt']='Sie sind nicht zu dieser Ampel zugeteilt'; +$this->phrasen['tools/ampelNichtGefunden']='Die angegeben Ampel wurde nicht gefunden'; +$this->phrasen['tools/ampelStatus']='Status'; +$this->phrasen['tools/ampelBeschreibung']='Beschreibung'; +$this->phrasen['tools/ampelKurzbz']='Kurzbezeichnung'; +$this->phrasen['tools/ampelDeadline']='Deadline'; +$this->phrasen['tools/ampelAktion']='Aktion'; +$this->phrasen['tools/ampelErledigt']='Erledigt'; +$this->phrasen['tools/ampelBestaetigen']='bestätigen'; +$this->phrasen['tools/ampelBestaetigt']='bestätigt'; +$this->phrasen['tools/ampelMitarbeiter']='Mitarbeiter'; +$this->phrasen['tools/ampelRestdauer']='Restdauer in Tagen'; +$this->phrasen['tools/ampelBestaetigtAm']='Bestätigt am'; +$this->phrasen['tools/ampelBereitsBestaetigt']='Diese Ampel wurde bereits bestätigt'; +$this->phrasen['tools/dasAmpelsystemIstEinErinnerungsystem']='Das Ampelsystem ist ein ERINNERUNGS- und BESTÄTIGUNGSSYSTEM, welches Sie auf ausstehende Aufgaben aufmerksam machen soll.
Die Ampel überprüft NICHT, ob die Aufgabe tatsächlich erledigt wurde. Weitere Details entnehmen Sie bitte dem CIS-Handbuch'; +$this->phrasen['tools/waehlenSieEineOEoderAmpel']='Bitte wählen Sie ein Organisationseinheit und/oder eine Ampel aus dem Dropdown'; +$this->phrasen['tools/uebersichtLeitung']='Ampel-Übersicht für LeiterInnen'; + +//Software fuer Lehre -> Softgrid +$this->phrasen['tools/applikationsliste']='Applikationsliste'; +$this->phrasen['tools/naehereInformationenfindenSieUnter']='Nähere Informationen zu Softgrid sowie eine Installationsanleitung finden Sie unter "Infrastruktur - SoftGrid"'; +$this->phrasen['tools/einzelanwendung']='Einzelanwendung'; +$this->phrasen['tools/softwarepaket']='Softwarepaket'; +$this->phrasen['tools/datei']='Datei '; +$this->phrasen['tools/wurdeNichtGefunden']=' wurde nicht gefunden!'; +$this->phrasen['tools/fehlerBeimLesenDerDatei']='Fehler beim Lesen der Datei '; +$this->phrasen['tools/keineDatenGefunden']='Keine Daten gefunden'; + +//Suche +$this->phrasen['tools/suche']='Globale Suche'; +$this->phrasen['tools/content']='Content'; +$this->phrasen['tools/suchbegriff']='Suchbegriff'; +$this->phrasen['tools/esWurdenMehrAlsXDokumenteGefunden']='Es wurden mehr als 40 Dokumente zu Ihrem Suchbegriff gefunden. Bitte spezifizieren Sie Ihre Suche.'; +$this->phrasen['tools/esWurdenMehrAlsXPersonenGefunden']='Es wurden mehr als 20 Personen zu Ihrem Suchbegriff gefunden. Bitte spezifizieren Sie Ihre Suche.'; +$this->phrasen['tools/esWurdenMehrAlsXInhalteGefunden']='Es wurden mehr als 20 Seiten zu Ihrem Suchbegriff gefunden. Bitte spezifizieren Sie Ihre Suche.'; +$this->phrasen['tools/aktuelleVersion']='Aktuelle Version'; +$this->phrasen['tools/telefonklappe']='Telefonklappe'; +$this->phrasen['tools/reservieren']='Reservieren'; +$this->phrasen['tools/maxPersonen']='Max. Personen'; +$this->phrasen['tools/esWurdenKeineErgebnisseGefunden']='Es wurden keine Ergebnisse gefunden.'; +?> diff --git a/rdf/dms.rdf.php b/rdf/dms.rdf.php index 67a77a7b6..b15e87aa7 100755 --- a/rdf/dms.rdf.php +++ b/rdf/dms.rdf.php @@ -44,6 +44,11 @@ elseif(isset($_GET['filter'])) $filter = $_GET['filter']; $dms->search($filter); } +elseif(isset($_GET['notiz_id'])) +{ + $notiz_id = $_GET['notiz_id']; + $dms->getDokumenteNotiz($notiz_id); +} else die('projekt_kurzbz oder projektphase_id muss uebergeben werden'); diff --git a/rdf/notiz.rdf.php b/rdf/notiz.rdf.php index 32634de94..cdf890f31 100644 --- a/rdf/notiz.rdf.php +++ b/rdf/notiz.rdf.php @@ -93,6 +93,7 @@ foreach($notiz->result as $row) start.']]> ende.']]> erledigt?'true':'false').']]> + dokumente).']]> insertamum.']]> insertvon.']]> formatDatum($row->updateamum,'d.m.Y H:i:s').']]> diff --git a/soap/notiz.soap.php b/soap/notiz.soap.php index 7e02ad67e..b9c32be2f 100755 --- a/soap/notiz.soap.php +++ b/soap/notiz.soap.php @@ -30,10 +30,12 @@ require_once('../include/notiz.class.php'); require_once('../include/datum.class.php'); require_once('../include/functions.inc.php'); require_once('../include/benutzerberechtigung.class.php'); +require_once('../include/dms.class.php'); $SOAPServer = new SoapServer(APP_ROOT."/soap/notiz.wsdl.php?".microtime()); $SOAPServer->addFunction("saveNotiz"); $SOAPServer->addFunction("deleteNotiz"); +$SOAPServer->addFunction("deleteDokument"); $SOAPServer->addFunction("setErledigt"); $SOAPServer->handle(); @@ -133,6 +135,29 @@ function deleteNotiz($username, $passwort, $notiz_id) return new SoapFault("Server", $projekttask->errormsg); } +/** + * + * Löscht das Dokument mit der vom Webservice übergebenen DMS-ID + * @param $dms_id + */ +function deleteDokument($username, $passwort, $dms_id) +{ + if(!$user = check_user($username, $passwort)) + return new SoapFault("Server", "Invalid Credentials"); + + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($user); + + if(!$rechte->isBerechtigt('basis/notiz', null, 'suid')) + return new SoapFault("Server", "Sie haben keine Berechtigung zum Loeschen von Dokumenten"); + + $dms = new dms(); + if($dms->deleteDms($dms_id)) + return "OK"; + else + return new SoapFault("Server", $dms->errormsg); +} + /** * * Setzt den erledigt Status diff --git a/soap/notiz.wsdl.php b/soap/notiz.wsdl.php index 20ea77d0c..604da9c03 100755 --- a/soap/notiz.wsdl.php +++ b/soap/notiz.wsdl.php @@ -49,6 +49,14 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> + + + + + + + + @@ -66,6 +74,10 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> + + + + @@ -92,6 +104,15 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> + + " /> + + + + + + + " /> diff --git a/system/checksystem.php b/system/checksystem.php index 32617e700..d6fea5fb1 100644 --- a/system/checksystem.php +++ b/system/checksystem.php @@ -2621,7 +2621,7 @@ if(!$result = @$db->db_query("SELECT pflicht FROM public.tbl_dokumentstudiengang } // Spalten zgvnation, zgvmanation, zgvdoktornation in public.tbl_prestudent -if(!$result = @$db->db_query("SELECT pflicht FROM public.tbl_prestudent LIMIT 1")) +if(!$result = @$db->db_query("SELECT zgvnation FROM public.tbl_prestudent LIMIT 1")) { $qry = "ALTER TABLE public.tbl_prestudent ADD COLUMN zgvnation character varying(3); ALTER TABLE public.tbl_prestudent ADD COLUMN zgvmanation character varying(3) ; @@ -2826,6 +2826,30 @@ if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants } } +// Dokumentenupload für Notizen +if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_notiz_dokument LIMIT 1;")) +{ + $qry = " + + CREATE TABLE public.tbl_notiz_dokument + ( + notiz_id integer NOT NULL, + dms_id integer NOT NULL + ); + + ALTER TABLE public.tbl_notiz_dokument ADD CONSTRAINT fk_notiz_dokument_notiz FOREIGN KEY (notiz_id) REFERENCES public.tbl_notiz (notiz_id) ON UPDATE CASCADE ON DELETE CASCADE; + ALTER TABLE public.tbl_notiz_dokument ADD CONSTRAINT fk_notiz_dokument_dms FOREIGN KEY (dms_id) REFERENCES campus.tbl_dms (dms_id) ON UPDATE CASCADE ON DELETE CASCADE; + + GRANT SELECT, INSERT, UPDATE, DELETE ON public.tbl_notiz_dokument TO vilesci; + GRANT SELECT, INSERT, UPDATE, DELETE ON public.tbl_notiz_dokument TO web; + "; + + if(!$db->db_query($qry)) + echo 'Dokumentenupload fuer Notizen: '.$db->db_last_error().'
'; + else + echo ' Tabellen fuer Dokumentenupload fuer Notizen hinzugefuegt!
'; +} + echo '


'; $tabellen=array( @@ -3003,7 +3027,8 @@ $tabellen=array( "public.tbl_mitarbeiter" => array("mitarbeiter_uid","personalnummer","telefonklappe","kurzbz","lektor","fixangestellt","bismelden","stundensatz","ausbildungcode","ort_kurzbz","standort_id","anmerkung","insertamum","insertvon","updateamum","updatevon","ext_id","kleriker"), "public.tbl_notiz" => array("notiz_id","titel","text","verfasser_uid","bearbeiter_uid","start","ende","erledigt","insertamum","insertvon","updateamum","updatevon","ext_id"), "public.tbl_notizzuordnung" => array("notizzuordnung_id","notiz_id","projekt_kurzbz","projektphase_id","projekttask_id","uid","person_id","prestudent_id","bestellung_id","lehreinheit_id","ext_id","anrechnung_id"), - "public.tbl_ort" => array("ort_kurzbz","bezeichnung","planbezeichnung","max_person","lehre","reservieren","aktiv","lageplan","dislozierung","kosten","ausstattung","updateamum","updatevon","insertamum","insertvon","ext_id","stockwerk","standort_id","telefonklappe","content_id","m2","gebteil","oe_kurzbz"), + "public.tbl_notiz_dokument" => array("notiz_id","dms_id"), + "public.tbl_ort" => array("ort_kurzbz","bezeichnung","planbezeichnung","max_person","lehre","reservieren","aktiv","lageplan","dislozierung","kosten","ausstattung","updateamum","updatevon","insertamum","insertvon","ext_id","stockwerk","standort_id","telefonklappe","content_id","m2","gebteil","oe_kurzbz"), "public.tbl_ortraumtyp" => array("ort_kurzbz","hierarchie","raumtyp_kurzbz"), "public.tbl_organisationseinheit" => array("oe_kurzbz", "oe_parent_kurzbz", "bezeichnung","organisationseinheittyp_kurzbz", "aktiv","mailverteiler","freigabegrenze","kurzzeichen","lehre"), "public.tbl_organisationseinheittyp" => array("organisationseinheittyp_kurzbz", "bezeichnung", "beschreibung"), @@ -3019,7 +3044,7 @@ $tabellen=array( "public.tbl_preoutgoing_lehrveranstaltung" => array("preoutgoing_lehrveranstaltung_id","preoutgoing_id","bezeichnung","ects","endversion","insertamum","insertvon","updateamum","updatevon","wochenstunden","unitcode"), "public.tbl_preoutgoing_preoutgoing_status" => array("status_id","preoutgoing_status_kurzbz","preoutgoing_id","datum","insertamum","insertvon","updateamum","updatevon"), "public.tbl_preoutgoing_status" => array("preoutgoing_status_kurzbz","bezeichnung"), - "public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor"), + "public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor","zgvnation","zgvmanation","zgvdoktornation"), "public.tbl_prestudentstatus" => array("prestudent_id","status_kurzbz","studiensemester_kurzbz","ausbildungssemester","datum","orgform_kurzbz","insertamum","insertvon","updateamum","updatevon","ext_id","studienplan_id","bestaetigtam","bestaetigtvon","fgm","faktiv", "anmerkung"), "public.tbl_raumtyp" => array("raumtyp_kurzbz","beschreibung"), "public.tbl_reihungstest" => array("reihungstest_id","studiengang_kz","ort_kurzbz","anmerkung","datum","uhrzeit","updateamum","updatevon","insertamum","insertvon","ext_id","freigeschaltet","max_teilnehmer","oeffentlich"), diff --git a/webdav/Caldav_Backend.php b/webdav/Caldav_Backend.php index 71f5780c1..d107341d2 100644 --- a/webdav/Caldav_Backend.php +++ b/webdav/Caldav_Backend.php @@ -211,7 +211,7 @@ class MySabre_CalDAV_Backend extends \Sabre\CalDAV\Backend\AbstractBackend foreach($val as $row) { //einzelnen Eintrag holen - if($row['dtstart']==$dtstart && $row['unr'][0]==$unr) + if($row['dtstart']==$dtstart && ($row['unr'][0]==$unr) || $unr=='R'.$row['reservierung_id']) { return $row; } @@ -221,6 +221,7 @@ class MySabre_CalDAV_Backend extends \Sabre\CalDAV\Backend\AbstractBackend $data=array_merge($data, $val); } $endtime = microtime(true); + //error_log("\n\nDATA".print_r($data,true)); //error_log("getCalendarData time:".($endtime-$starttime)); //$data.="\nEND:VCALENDAR"; return $data; @@ -280,9 +281,16 @@ END:VTIMEZONE\n".$event."\nEND:VCALENDAR"; $return = array(); foreach($data as $row) { + // Reservierungen werden mit einem R markiert und mit der ReservierungID da sonst + // Termine verloren gehen koennen wenn zur selben Zeit eine Reservierung und ein LVPlan Eintrag vorhanden ist + if($row['reservierung']) + $uri = $row['dtstart'].'-R'.$row['reservierung_id']; + else + $uri = $row['dtstart'].'-'.$row['unr'][0]; + $return[] = array("id"=>$row['UID'], "calendardata"=>$this->makeCal($row['data']), - "uri"=>$row['dtstart'].'-'.$row['unr'][0], + "uri"=>$uri, "lastmodified"=>$row['updateamum'], "etag"=>'"'.$row['UID'].'"', "calendarid"=>$calendarId);