diff --git a/content/lvplanung/lehrveranstaltungDBDML.php b/content/lvplanung/lehrveranstaltungDBDML.php index 4125e73b2..cbccdeddf 100644 --- a/content/lvplanung/lehrveranstaltungDBDML.php +++ b/content/lvplanung/lehrveranstaltungDBDML.php @@ -1,1533 +1,1722 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -// **************************************** -// * Insert/Update/Delete -// * der Lehreinheiten -// * -// * Script sorgt fuer den Datenbankzugriff -// * fuer das XUL - Lehreinheiten-Modul -// * -// * Derzeitige Funktionen: -// * - Lehreinheitmitarbeiter Zuteilung hinzufuegen/bearbeiten/loeschen -// * - Lehreinheitgruppe Zutelung hinzufuegen/loeschen -// * - Lehreinheit anlegen/bearbeiten/loeschen -// **************************************** - -require_once('../../config/vilesci.config.inc.php'); -require_once('../../include/functions.inc.php'); -require_once('../../include/lehreinheit.class.php'); -require_once('../../include/lehreinheitmitarbeiter.class.php'); -require_once('../../include/lehreinheitgruppe.class.php'); -require_once('../../include/benutzerberechtigung.class.php'); -require_once('../../include/log.class.php'); -require_once('../../include/person.class.php'); -require_once('../../include/benutzer.class.php'); -require_once('../../include/mitarbeiter.class.php'); -require_once('../../include/lehrstunde.class.php'); -require_once('../../include/lvangebot.class.php'); -require_once('../../include/gruppe.class.php'); -require_once('../../include/lehrveranstaltung.class.php'); -require_once('../../include/datum.class.php'); -require_once('../../include/vertrag.class.php'); - -$user = get_uid(); -$db = new basis_db(); -//error_reporting(0); - -$return = false; -$errormsg = 'unknown'; -$data = ''; -$error = false; -$warnung = false; - -loadVariables($user); - -//Berechtigungen laden -$rechte = new benutzerberechtigung(); -$rechte->getBerechtigungen($user); -if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('assistenz') && !$rechte->isBerechtigt('lv-plan')) -{ - $return = false; - $errormsg = 'Keine Berechtigung'; - $data = ''; - $error = true; -} - - -function kollision($lehreinheit_id, $mitarbeiter_uid, $mitarbeiter_uid_old, $db_stpl_table) -{ - //Lehrstunden laden - $lehrstunden=new lehrstunde(); - $lehrstunde=new lehrstunde(); - $lehrstunden->load_lehrstunden_le($lehreinheit_id,$mitarbeiter_uid_old); - - $koll_arr=array(); - foreach ($lehrstunden->lehrstunden as $ls) - { - $lehrstunde->load($ls->stundenplan_id); - $lehrstunde->lektor_uid=$mitarbeiter_uid; - if ($lehrstunde->kollision($db_stpl_table)) - { - $koll_arr[]=$lehrstunde->errormsg; - } - } - if(count($koll_arr)>0) - return $koll_arr; - - return false; -} - -/** - * Prueft ob die Person den Lehrauftrag auf eine Firma ausgestellt bekommt - * - * @param $mitarbeiter_uid - * @return boolean - */ -function LehrauftragAufFirma($mitarbeiter_uid) -{ - global $db; - - $qry_firma = " - SELECT * FROM campus.vw_mitarbeiter LEFT JOIN public.tbl_adresse USING(person_id) - WHERE uid=".$db->db_add_param($mitarbeiter_uid)." - ORDER BY zustelladresse DESC, firma_id LIMIT 1"; - if($result_firma = $db->db_query($qry_firma)) - { - if($row_firma = $db->db_fetch_object($result_firma)) - { - if($row_firma->firma_id=='') - return false; - else - return true; - } - else - { - return false; - } - } - else - { - return false; - } -} - -/** - * Liefert eine Liste mit den Gesamtstunden eines Lektors in den einzelnen Instituten - * - * @param $mitarbeiter_uid - * @param $studiensemester_kurzbz - * @return string - */ -function getStundenproInstitut($mitarbeiter_uid, $studiensemester_kurzbz, $oe_arr) -{ - global $db; - - $ret="Der Lektor ist in folgenden Organisationseinheiten zugeteilt:\n"; - - //Liste mit den Stunden in den jeweiligen Instituten anzeigen - $qry = "SELECT sum(tbl_lehreinheitmitarbeiter.semesterstunden) as summe, tbl_studiengang.bezeichnung - FROM - lehre.tbl_lehreinheitmitarbeiter - JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) - JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE - mitarbeiter_uid=".$db->db_add_param($mitarbeiter_uid)." AND - studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." AND - faktor>0 AND - stundensatz>0 AND - bismelden AND - tbl_studiengang.oe_kurzbz in(".$db->db_implode4SQL($oe_arr).") - GROUP BY tbl_studiengang.bezeichnung"; - - if($result = $db->db_query($qry)) - { - while($row = $db->db_fetch_object($result)) - { - $ret .=$row->summe.' Stunden '.$row->bezeichnung."\n"; - } - } - return $ret; -} - -if(!$error) -{ - if(!empty($_POST['lehrveranstaltung'])) - $lva = new lehrveranstaltung($_POST['lehrveranstaltung']); - - if(isset($_POST['type']) && $_POST['type']=='lehreinheit_mitarbeiter_save') - { - //Lehreinheitmitarbeiter Zuteilung - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, - (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach - WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); - - if($result = $db->db_query($qry)) - { - if($row = $db->db_fetch_object($result)) - { - $lva = new lehrveranstaltung($row->lehrveranstaltung_id); - $oe_arr = $lva->getAllOe(); - - if(!$rechte->isBerechtigtMultipleOe('admin', $oe_arr, 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $oe_arr, 'suid') && - !$rechte->isBerechtigtMultipleOe('lv-plan', $oe_arr, 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $oe_arr, 'suid', $row->fachbereich_kurzbz) && - !$rechte->isBerechtigtMultipleOe('admin', $oe_arr, 'suid', $row->fachbereich_kurzbz)) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - - if(!$error) - { - $lem = new lehreinheitmitarbeiter(); - - if(!$lem->load($_POST['lehreinheit_id'],$_POST['mitarbeiter_uid_old'])) - { - $return = false; - $errormsg = 'Fehler beim Laden:'.$lem->errormsg; - $error = true; - } - $semesterstunden_alt=$lem->semesterstunden; - $bismelden_alt = $lem->bismelden; - $faktor_alt = $lem->faktor; - $stundensatz_alt = $lem->stundensatz; - - $qry_lvplanaenderung=''; - - if(!$error) - { - $lem->lehreinheit_id = $_POST['lehreinheit_id']; - $lem->lehrfunktion_kurzbz = $_POST['lehrfunktion_kurzbz']; - $lem->mitarbeiter_uid = $_POST['mitarbeiter_uid']; - $lem->mitarbeiter_uid_old = $_POST['mitarbeiter_uid_old']; - $lem->semesterstunden = $_POST['semesterstunden']; - $lem->planstunden = $_POST['planstunden']; - $lem->stundensatz = $_POST['stundensatz']; - $lem->faktor = $_POST['faktor']; - $lem->anmerkung = $_POST['anmerkung']; - $lem->bismelden = ($_POST['bismelden']=='true'?true:false); - $lem->updateamum = date('Y-m-d H:i:s'); - $lem->updatevon = $user; - - $lem->new=false; - - //Wenn sich der Lektor aendert und keine Kollision dadurch entsteht, dann werden die - //Daten automatisch im Stundenplan geaendert - if($lem->mitarbeiter_uid!=$lem->mitarbeiter_uid_old) - { - $koll_arr = kollision($lem->lehreinheit_id, $lem->mitarbeiter_uid, $lem->mitarbeiter_uid_old, $db_stpl_table); - //check kollision - if($koll_arr===false || $ignore_kollision=='true') - { - //Update im Stundenplan - $stpl_table='lehre.tbl_stundenplandev'; - $qry_lvplanaenderung = "UPDATE $stpl_table SET mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid).", updateamum=now(), updatevon=".$db->db_add_param($user)." WHERE lehreinheit_id=".$db->db_add_param($lem->lehreinheit_id, FHC_INTEGER)." AND mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid_old); - // Das Update wird erst weiter unten durchgefuehrt wenn die restlichen Checks erfolgreich sind da es sonst zu inkonsistenzen kommt - if(is_array($koll_arr)) - { - $errormsg="Da Kollisionen deaktiviert sind, wird die Änderung durchgeführt obwohl dadurch kollisionen entstehen. Bitte korrigieren Sie folgende Kollisionen manuell:\n"; - $errormsg.=implode("\n",$koll_arr); - } - } - else - { - $return = false; - $errormsg = "Änderung fehlgeschlagen!\nDie Änderung des Lektors führt zu ".count($koll_arr)." Kollision(en) im LV-Plan. Deaktivieren Sie die Kollisionspruefung oder wenden Sie sich an die LV-Planung!\n"; - $errormsg.= "zB:".$koll_arr[0]; - $error = true; - } - } - - $fixangestellt=false; - if(!$error) - { - //Pruefen ob die erlaubte Semesterstundenanzahl ueberschritten wurde. - //Wenn ja dann ein Warning zurueckliefern - $ma = new mitarbeiter(); - $ma->load($lem->mitarbeiter_uid); - $fixangestellt=$ma->fixangestellt; - - $oe_obj = new organisationseinheit(); - $stunden_oe_kurzbz=null; - - $stg_obj = new studiengang(); - $stg_obj->load($lva->studiengang_kz); - - //Maximale Stundenanzahl ermitteln - if($fixangestellt) - list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, true); - else - list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, false); - - //Summe der Stunden ermitteln - $le = new lehreinheit(); - $le->load($lem->lehreinheit_id); - - if($lem->stundensatz<=0 || $lem->faktor<=0 || $lem->bismelden==false) - $neue_stunden_eingerechnet=false; - else - $neue_stunden_eingerechnet=true; - - if(($stundensatz_alt<=0 || $faktor_alt<=0 || $bismelden_alt==false)) - $alte_stunden_eingerechnet=false; - else - $alte_stunden_eingerechnet=true; - - //Stundenreduzierung immer moeglich - if(($lem->semesterstunden>$semesterstunden_alt) || $neue_stunden_eingerechnet) - { - $oe_obj = new organisationseinheit(); - $oe_arr = $oe_obj->getChilds($stunden_oe_kurzbz); - $qry = "SELECT "; - if($alte_stunden_eingerechnet && $neue_stunden_eingerechnet) - $qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)-($semesterstunden_alt)+($lem->semesterstunden)) as summe"; - elseif($alte_stunden_eingerechnet && !$neue_stunden_eingerechnet) - $qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)-($semesterstunden_alt)) as summe"; - elseif(!$alte_stunden_eingerechnet && $neue_stunden_eingerechnet) - $qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)+($lem->semesterstunden)) as summe"; - elseif(!$alte_stunden_eingerechnet && !$neue_stunden_eingerechnet) - $qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)) as summe"; - $qry.=" FROM - lehre.tbl_lehreinheitmitarbeiter - JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) - JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE - mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid)." AND - studiensemester_kurzbz=".$db->db_add_param($le->studiensemester_kurzbz)." AND - faktor>0 AND - stundensatz>0 AND - bismelden"; - - if(count($oe_arr)>0) - $qry.=" AND tbl_studiengang.oe_kurzbz in(".$db->db_implode4SQL($oe_arr).")"; - - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - if($row->summe>$max_stunden) - { - if(!$fixangestellt) - { - if(!LehrauftragAufFirma($lem->mitarbeiter_uid)) - { - //Warnung wenn die Stundenzahl ueberschritten wurde - $return = false; - $error = true; - $errormsg = "ACHTUNG: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden ($stunden_oe_kurzbz) wurde ueberschritten!\n Daten wurden NICHT gespeichert!\n\n"; - } - } - else - { - $return = true; - $error = false; - $warnung = true; - $errormsg = "Hinweis: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden ($stunden_oe_kurzbz) wurde ueberschritten!\n Daten wurden gespeichert!\n\n"; - } - - $errormsg.=getStundenproInstitut($lem->mitarbeiter_uid, $le->studiensemester_kurzbz, $oe_arr); - } - } - else - { - $return = false; - $error=true; - $errormsg='Fehler beim Ermitteln der Gesamtstunden'; - } - - } - else - { - $return = false; - $error=true; - $errormsg='Fehler beim Ermitteln der Gesamtstunden'; - } - } - } - - if(!$error) - { - if($lem->save()) - { - //Fixangestellte bekommen eine Warnung wenn die Stunden ueberschritten wurden. Es wird aber - //trotzdem gespeichert - if($warnung) - { - $return=false; - $error = true; - } - else - { - $return = true; - $error = false; - } - - // Wenn eine LVPlan aenderung noetig ist, dann diese jetzt - // durchfuehrten - if($qry_lvplanaenderung!='') - { - if($db->db_query($qry_lvplanaenderung)) - { - if($errormsg=='' || $errormsg=='unknown') - { - $error = false; - $return = true; - } - else - { - // Bei Kollisionen steht in errormsg die Kollisionsinformation - $error = true; - $return = false; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Fehler beim Update im LV-Plan'.$qry; - } - } - } - else - { - $return = false; - $errormsg = $lem->errormsg; - $error = true; - } - } - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_mitarbeiter_add') - { - //neue Lehreinheitmitarbeiterzuteilung anlegen - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, - (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach - WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - $lva = new lehrveranstaltung($row->lehrveranstaltung_id); - - if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && - !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - - if(!$error) - { - if(isset($_POST['lehreinheit_id']) && isset($_POST['mitarbeiter_uid'])) - { - $lem = new lehreinheitmitarbeiter(); - - $lem->lehreinheit_id = $_POST['lehreinheit_id']; - $lem->lehrfunktion_kurzbz = 'Lektor'; - $lem->mitarbeiter_uid = $_POST['mitarbeiter_uid']; - - $lem->anmerkung = ''; - $lem->bismelden = true; - $lem->updateamum = date('Y-m-d H:i:s'); - $lem->updatevon = $user; - $lem->insertamum = date('Y-m-d H:i:s'); - $lem->insertvon = $user; - $lem->new=true; - - $fixangestellt=false; - //Stundensatz aus tbl_mitarbeiter holen - $qry = "SELECT stundensatz, fixangestellt FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']); - if($result = $db->db_query($qry)) - { - if($row = $db->db_fetch_object($result)) - { - if($row->stundensatz!='') - $lem->stundensatz = $row->stundensatz; - else - $lem->stundensatz = '0'; - $fixangestellt = ($row->fixangestellt=='t'?true:false); - } - else - { - $error=true; - $return=false; - $errormsg='Mitarbeiter '.$db->convert_html_chars($_POST['mitarbeiter_uid']).' wurde nicht gefunden'; - } - } - else - { - $error=true; - $return=false; - $errormsg='Fehler bei einer Datenbankabfrage:'.$db->db_last_error(); - } - - $maxstunden=9999; - - $oe_obj = new organisationseinheit(); - $stunden_oe_kurzbz=null; - - $stg_obj = new studiengang(); - $stg_obj->load($lva->studiengang_kz); - - //Maximale Stundenanzahl ermitteln - if($fixangestellt) - list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, true); - else - list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, false); - - //Bei freien Lektoren muss geprueft werden ob die Stundengrenze erreicht wurde - if(!$fixangestellt && !LehrauftragAufFirma($lem->mitarbeiter_uid)) - { - //Summe der Stunden ermitteln - $le = new lehreinheit(); - $le->load($lem->lehreinheit_id); - - $oe_obj = new organisationseinheit(); - $oe_arr = $oe_obj->getChilds($stunden_oe_kurzbz); - - $qry = "SELECT - sum(tbl_lehreinheitmitarbeiter.semesterstunden) as summe - FROM - lehre.tbl_lehreinheitmitarbeiter - JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) - JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE - mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid)." AND - studiensemester_kurzbz=".$db->db_add_param($le->studiensemester_kurzbz)." AND - faktor>0 AND - stundensatz>0 AND - bismelden"; - - if(count($oe_arr)>0) - $qry.=" AND tbl_studiengang.oe_kurzbz in(".$db->db_implode4SQL($oe_arr).")"; - - if($result_std = $db->db_query($qry)) - { - if($row_std = $db->db_fetch_object($result_std)) - { - //Grenze ueberschritten - if($row_std->summe>=$max_stunden) - { - $return = false; - $error = true; - $errormsg = "ACHTUNG: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden ($stunden_oe_kurzbz) wurde ueberschritten!\n Daten wurden NICHT gespeichert!\n\n"; - $errormsg.=getStundenproInstitut($lem->mitarbeiter_uid, $le->studiensemester_kurzbz,$oe_arr); - } - else - { - //Stunden berechnen die noch maximal unterrichtet werden darf - $maxstunden = $max_stunden-$row_std->summe; - } - } - } - } - - if(!$error) - { - //Faktor und Semesterstunden aus tbl_lehrveranstaltung holen - $qry = "SELECT planfaktor, semesterstunden FROM lehre.tbl_lehrveranstaltung JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id) WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER).";"; - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - if($row->planfaktor!='') - $lem->faktor = $row->planfaktor; - else - $lem->faktor = '1.0'; - - if($row->semesterstunden!='') - { - //wenn es sich um einen freien Lektor handelt, und dieser nicht mehr die volle Stundenanzahl unterrichten - //darf, dann werden nur die restlichen zur Verfuegung stehenden Stunden zugeteilt. - $lem->semesterstunden = ($row->semesterstunden>$maxstunden?$maxstunden:$row->semesterstunden); - $lem->planstunden = ($row->semesterstunden>$maxstunden?$maxstunden:$row->semesterstunden); - } - else - { - $lem->planstunden = '0'; - $lem->semesterstunden = '0'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehrveranstaltung wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Fehler in einer Datenbankabfrage:'.$db->db_last_error(); - } - - if(!$error) - { - if($lem->save()) - { - $return = true; - $error = false; - } - else - { - $return = false; - $errormsg = $lem->errormsg; - $error = true; - } - } - } - } - else - { - $return = false; - $errormsg = 'Fehlerhafte Parameteruebergabe'; - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_mitarbeiter_del') - { - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, - (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach - WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - $lva = new lehrveranstaltung($row->lehrveranstaltung_id); - - if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && - !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - - if(!$error) - { - //Lehreinheitmitarbeiterzuteilung loeschen - if(isset($_POST['lehreinheit_id']) && is_numeric($_POST['lehreinheit_id']) && isset($_POST['mitarbeiter_uid'])) - { - //Wenn der Mitarbeiter im Stundenplan verplant ist, dann wird das Loeschen verhindert - $qry = "SELECT stundenplandev_id as id FROM lehre.tbl_stundenplandev WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." AND mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid'])." - UNION - SELECT stundenplan_id as id FROM lehre.tbl_stundenplan WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." AND mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']); - if($db->db_query($qry)) - { - if($db->db_num_rows()>0) - { - $return = false; - $errormsg = 'Dieser Lektor kann nicht gelöscht werden da er schon verplant ist'; - } - else - { - $leg = new lehreinheitmitarbeiter(); - if($leg->load($_POST['lehreinheit_id'], $_POST['mitarbeiter_uid'])) - { - // Wenn ein Vertrag dazu angelegt ist, dann diesen mitloeschen - if($leg->vertrag_id!='') - { - $vertrag = new vertrag(); - $vertrag->delete($leg->vertrag_id); - } - - if($leg->delete($_POST['lehreinheit_id'], $_POST['mitarbeiter_uid'])) - { - $return = true; - } - else - { - $return = false; - $errormsg = $leg->errormsg; - } - } - else - { - $return = false; - $errormsg='Fehlgeschlagen:'.$leg->errormsg; - } - } - } - else - { - $return = false; - $errormsg = 'Fehler:'.$qry; - } - } - else - { - $return = false; - $errormsg = 'Fehler beim Löschen der Zuordnung'; - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_gruppe_del') - { - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, - (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach - WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=(SELECT lehreinheit_id FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER).")"; - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - $lva = new lehrveranstaltung($row->lehrveranstaltung_id); - - if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && - !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - - if(!$error) - { - //Pruefen ob bereits eine Kreuzerlliste vorhanden ist - $qry = "SELECT count(*) as anzahl FROM lehre.tbl_lehreinheitgruppe, lehre.tbl_lehreinheit, campus.tbl_uebung WHERE - tbl_lehreinheitgruppe.lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER)." AND - tbl_lehreinheitgruppe.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND - tbl_lehreinheit.lehreinheit_id=tbl_uebung.lehreinheit_id"; - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - if($row->anzahl>0) - { - $error = true; - $return = false; - $errormsg = 'Diese Gruppe kann nicht geloescht werden da bereits Kreuzerllisten angelegt wurden'; - } - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Fehler beim Ermitteln ob eine Kreuzerlliste vorhanden ist'; - } - - //Pruefen ob diese Gruppe im Stundenplan schon verplant wurde - if(!$error) - { - $qry = "SELECT stundenplandev_id as id FROM lehre.tbl_stundenplandev - WHERE - (lehreinheit_id, studiengang_kz, semester, trim(COALESCE(verband,'')), trim(COALESCE(gruppe,'')), trim(COALESCE(gruppe_kurzbz,''))) = - (SELECT - lehreinheit_id, studiengang_kz, semester, trim(COALESCE(verband,'')), trim(COALESCE(gruppe,'')), trim(COALESCE(gruppe_kurzbz,'')) - FROM - lehre.tbl_lehreinheitgruppe - WHERE - lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER)." - ) - "; - if($db->db_query($qry)) - { - if($db->db_num_rows()>0) - { - $error = true; - $return = false; - $errormsg = 'Diese Gruppe kann nicht geloescht werden, da sie bereits im LV-Plan verplant ist. Bitte wenden Sie sich an die LV-Planung'; - } - } - else - { - $errormsg = 'Fehler beim Pruefen des LV-Plans: '.$db->db_last_error(); - $return = false; - $error = true; - } - - } - - if(!$error) - { - //Lehreinheitgruppezuteilung loeschen - if(isset($_POST['lehreinheitgruppe_id']) && is_numeric($_POST['lehreinheitgruppe_id'])) - { - $leg = new lehreinheitgruppe(); - if($leg->delete($_POST['lehreinheitgruppe_id'])) - { - $return = true; - } - else - { - $return = false; - $errormsg = $leg->errormsg; - } - } - else - { - $return = false; - $errormsg = 'Fehler beim Löschen der Zuordnung'; - } - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_lektor_del_lvplan') - { - //Pruefen ob dieser Lektor im Stundenplan schon verplant wurde - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach - WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - $lva = new lehrveranstaltung($row->lehrveranstaltung_id); - - if(!$rechte->isBerechtigtMultipleOe('lv-plan/lektorentfernen', $lva->getAllOe(), 'suid')) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - - // Wenn nur noch dieser Lektor im LVPlan verplant ist, dann wird das loeschen verhindert - // da sonst der gesamte LVPlan der Lehreinheit weg ist - $qry = "SELECT - distinct mitarbeiter_uid - FROM - lehre.tbl_stundenplandev - WHERE - lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); - - if($result = $db->db_query($qry)) - { - if($db->db_num_rows($result)<2) - { - $error = true; - $return = false; - $errormsg='Dieser Lektor kann nicht aus dem LVPlan entfernt werden da dies der letzte verplante Lektor ist'; - } - } - - // Wenn Ressourcen an einem der Stundenplaneintraege haengen die geloescht werden wuerden - // dann wird das loeschen verhindert - $qry = "SELECT - 1 - FROM - lehre.tbl_stundenplandev - JOIN lehre.tbl_stundenplan_betriebsmittel USING(stundenplandev_id) - WHERE - tbl_stundenplandev.lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." - AND tbl_stundenplandev.mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']); - - if($result = $db->db_query($qry)) - { - if($db->db_num_rows($result)>0) - { - $return = false; - $error = true; - $errormsg = 'Gruppe kann nicht entfernt werden da bereits Ressourcen zugeordnet wurden'; - } - } - else - { - $return = false; - $error = true; - $errormsg = 'Fehler bei Datenbankabfrage'; - } - - if(!$error) - { - $qry = "DELETE FROM lehre.tbl_stundenplandev - WHERE - lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." - AND mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']); - - if($db->db_query($qry)) - { - $error = false; - $return = true; - } - else - { - $errormsg = 'Fehler beim Entfernen des LV-Plans: '.$db->db_last_error(); - $return = false; - $error = true; - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_gruppe_del_lvplan') - { - //Pruefen ob diese Gruppe im Stundenplan schon verplant wurde - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, - (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach - WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=(SELECT lehreinheit_id FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER).")"; - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - $lva = new lehrveranstaltung($row->lehrveranstaltung_id); - - if(!$rechte->isBerechtigtMultipleOe('lv-plan/gruppenentfernen', $lva->getAllOe(), 'suid')) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - - // Wenn nur noch diese eine Gruppe im LVPlan verplant ist, dann wird das loeschen verhindert - // da sonst der gesamte LVPlan der Lehreinheit weg ist - $qry = "SELECT - distinct studiengang_kz, semester, verband, gruppe, gruppe_kurzbz - FROM - lehre.tbl_stundenplandev - WHERE - lehreinheit_id=(SELECT lehreinheit_id FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER).")"; - - if($result = $db->db_query($qry)) - { - if($db->db_num_rows($result)<2) - { - $error = true; - $return = false; - $errormsg='Diese Gruppe kann nicht aus dem LVPlan entfernt werden da dies die letzte verplante Gruppe ist'; - } - } - - // Wenn Ressourcen an einem der Stundenplaneintraege haengen die geloescht werden wuerden - // dann wird das loeschen verhindert - $qry = "SELECT - 1 - FROM - lehre.tbl_stundenplandev - JOIN lehre.tbl_stundenplan_betriebsmittel USING(stundenplandev_id) - JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id) - WHERE - tbl_lehreinheitgruppe.lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER)." - AND - ( - ( - tbl_lehreinheitgruppe.gruppe_kurzbz is not null - AND - tbl_lehreinheitgruppe.gruppe_kurzbz=tbl_stundenplandev.gruppe_kurzbz - ) - OR - ( - tbl_lehreinheitgruppe.gruppe_kurzbz is null - AND - tbl_lehreinheitgruppe.studiengang_kz=tbl_stundenplandev.studiengang_kz - AND - tbl_lehreinheitgruppe.semester=tbl_stundenplandev.semester - AND - tbl_lehreinheitgruppe.verband = tbl_stundenplandev.verband - AND - tbl_lehreinheitgruppe.gruppe = tbl_stundenplandev.gruppe - ) - )"; - - if($result = $db->db_query($qry)) - { - if($db->db_num_rows($result)>0) - { - $return = false; - $error = true; - $errormsg = 'Gruppe kann nicht entfernt werden da bereits Ressourcen zugeordnet wurden'; - } - } - - if(!$error) - { - - $qry = "DELETE FROM lehre.tbl_stundenplandev - WHERE - (lehreinheit_id, studiengang_kz, semester, trim(COALESCE(verband,'')), trim(COALESCE(gruppe,'')), trim(COALESCE(gruppe_kurzbz,''))) = - (SELECT - lehreinheit_id, studiengang_kz, semester, trim(COALESCE(verband,'')), trim(COALESCE(gruppe,'')), trim(COALESCE(gruppe_kurzbz,'')) - FROM - lehre.tbl_lehreinheitgruppe - WHERE - lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER)." - )"; - - if($db->db_query($qry)) - { - $error = false; - $return = true; - } - else - { - $errormsg = 'Fehler beim Entfernen des LV-Plans: '.$db->db_last_error(); - $return = false; - $error = true; - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_gruppe_add') - { - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, - (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach - WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - $lva = new lehrveranstaltung($row->lehrveranstaltung_id); - - if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && - !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - - if(!$error) - { - //Lehreinheitgruppezuteilung anlegen - if(isset($_POST['lehreinheit_id']) && is_numeric($_POST['lehreinheit_id'])) - { - $leg = new lehreinheitgruppe(); - $leg->lehreinheit_id = $_POST['lehreinheit_id']; - $leg->studiengang_kz = $_POST['studiengang_kz']; - $leg->semester = $_POST['semester']; - $leg->verband = $_POST['verband']; - $leg->gruppe = $_POST['gruppe']; - $leg->gruppe_kurzbz = $_POST['gruppe_kurzbz']; - $leg->insertamum = date('Y-m-d H:i:s'); - $leg->insertvon = $user; - - if(!$leg->checkVorhanden()) - { - if($leg->errormsg=='') - { - if($leg->save(true)) - { - $return = true; - } - else - { - $return = false; - $errormsg = $leg->errormsg; - } - } - else - { - $return = false; - $errormsg=$leg->errormsg; - } - } - else - { - $return = false; - $errormsg = 'Diese Gruppe ist bereits zugeteilt'; - } - } - else - { - $return = false; - $errormsg = 'Bitte zuerst eine Lehreinheit auswaehlen'; - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit') - { - //Lehreinheit anlegen/aktualisieren - if(isset($_POST['lehreinheit_id']) && $_POST['lehreinheit_id']!='') - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, - (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach - WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); - else - $qry = "SELECT studiengang_kz FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id=".$db->db_add_param($_POST['lehrveranstaltung'], FHC_INTEGER); - - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - $studiengang_kz = $row->studiengang_kz; - $fachbereich_kurzbz = 0; - if(isset($row->fachbereich_kurzbz)) - $fachbereich_kurzbz = $row->fachbereich_kurzbz; - if(!isset($lva)) - $lva = new lehrveranstaltung($row->lehrveranstaltung_id); - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - - if(!$error) - { - $leDAO=new lehreinheit(); - if ($_POST['do']=='create' || ($_POST['do']=='update')) - { - if($_POST['do']=='update') - { - if(!$leDAO->load($_POST['lehreinheit_id'])) - { - $return = false; - $error = true; - $errormsg = 'Fehler beim Laden der Lehreinheit'; - } - - if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $fachbereich_kurzbz)) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - else - { - if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'si') && !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'si') && - !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid')) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - - if(!$error) - { - $leDAO->lehrveranstaltung_id=$_POST['lehrveranstaltung']; - $leDAO->studiensemester_kurzbz=$_POST['studiensemester_kurzbz']; - $leDAO->lehrfach_id=$_POST['lehrfach_id']; - $leDAO->lehrform_kurzbz=$_POST['lehrform']; - $leDAO->stundenblockung=$_POST['stundenblockung']; - $leDAO->wochenrythmus=$_POST['wochenrythmus']; - $leDAO->gewicht = $_POST['gewicht']; - - if (isset($_POST['start_kw'])) - $leDAO->start_kw=$_POST['start_kw']; - - $leDAO->raumtyp=$_POST['raumtyp']; - $leDAO->raumtypalternativ=$_POST['raumtypalternativ']; - $leDAO->sprache=$_POST['sprache']; - - if (isset($_POST['lehre'])) - $leDAO->lehre=($_POST['lehre']=='true'?true:false); - - if (isset($_POST['anmerkung'])) - $leDAO->anmerkung=$_POST['anmerkung']; - - $leDAO->lvnr=(isset($_POST['lvnr'])?$_POST['lvnr']:''); - $leDAO->unr=(isset($_POST['unr'])?$_POST['unr']:''); - if($leDAO->unr=='') - { - if(isset($_POST['lehreinheit_id'])) - $leDAO->unr = $_POST['lehreinheit_id']; - } - $leDAO->updateamum=date('Y-m-d H:i:s'); - $leDAO->updatevon=$user; - - if ($_POST['do']=='create') - { - // LE neu anlegen - $leDAO->new=true; - $leDAO->insertamum=date('Y-m-d H:i:s'); - $leDAO->insertvon=$user; - } - else if ($_POST['do']=='update') - { - // LE aktualisieren - $leDAO->new=false; - } - if ($leDAO->save()) - { - $data = $leDAO->lehreinheit_id; - $return = true; - if($_POST['do']=='create') - { - // Wenn ein LV-Angebot vorliegt, wird diese Gruppe automatisch zugeteilt - $lvangebot = new lvangebot(); - $lvangebot->getAllFromLvId($leDAO->lehrveranstaltung_id, $leDAO->studiensemester_kurzbz); - if(isset($lvangebot->result[0]) && $lvangebot->result[0]->gruppe_kurzbz!='') - { - $gruppe = new gruppe(); - $gruppe->load($lvangebot->result[0]->gruppe_kurzbz); - - $leg = new lehreinheitgruppe(); - $leg->lehreinheit_id = $leDAO->lehreinheit_id; - $leg->studiengang_kz = $gruppe->studiengang_kz; - $leg->semester = $gruppe->semester; - $leg->gruppe_kurzbz = $gruppe->gruppe_kurzbz; - $leg->insertamum = date('Y-m-d H:i:s'); - $leg->insertvon = $user; - $leg->new = true; - $leg->save(); - } - } - } - else - { - $return = false; - $errormsg = $leDAO->errormsg; - } - } - } - else if ($_POST['do']=='delete') //Lehreinheit loeschen - { - if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid')) - { - $return = false; - $error = true; - $errormsg = 'Keine Berechtigung'; - } - else - { - // Loeschen verhindern wenn diese Lehreinheit schon verplant ist - $qry = "SELECT stundenplandev_id as id FROM lehre.tbl_stundenplandev WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." - UNION - SELECT stundenplan_id as id FROM lehre.tbl_stundenplan WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); - if($db->db_query($qry)) - { - if($db->db_num_rows()>0) - { - $return = false; - $errormsg = 'Diese Lehreinheit ist bereits im LV-Plan verplant und kann daher nicht geloescht werden!'; - } - else - { - if ($leDAO->delete($_POST['lehreinheit_id'])) - { - $return = true; - } - else - { - $return = false; - $errormsg = 'Fehler beim Loeschen der Lehreinheit '.$leDAO->errormsg; - } - } - } - else - { - $return = false; - $errormsg = 'unbekannter Fehler'; - } - } - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='getstundensatz') - { - if(isset($_POST['mitarbeiter_uid'])) - { - $mitarbeiter = new mitarbeiter(); - if($mitarbeiter->load($_POST['mitarbeiter_uid'])) - { - $data = $mitarbeiter->stundensatz; - $return = true; - } - else - { - $errormsg = 'Fehler beim Laden des Mitarbeiters'; - $return = false; - } - } - else - { - $errormsg = 'MitarbeiterUID muss uebergeben werden'; - $return = false; - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lvangebot-gruppe-save') - { - $lehrveranstaltung_obj = new lehrveranstaltung(); - if(!$lehrveranstaltung_obj->load($_POST['lehrveranstaltung_id'])) - $errormsg = 'Fehler beim Laden der Lehrveranstaltung'; - - if(!$rechte->isBerechtigtMultipleOe('admin', $lehrveranstaltung_obj->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lehrveranstaltung_obj->getAllOe(), 'suid')) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - - if(!$error) - { - isset($_POST['lvangebot_id']) ? $lvangebot_id = $_POST['lvangebot_id'] : $lvangebot_id = null; - $datum_obj = new datum(); - $lvangebot = new lvangebot(); - $lvangebot->insertamum = date('Y-m-d H:i:s'); - $lvangebot->insertvon = $user; - - if($lvangebot_id) - { - $lvangebot->load($lvangebot_id); - $lvangebot->new = false; - } - else - { - $lvangebot->new = true; - } - - $studiengang = new studiengang(); - if(!$studiengang->load($lehrveranstaltung_obj->studiengang_kz)) - $errormsg = 'Fehler beim Laden des Studienganges'; - - if($_POST['neue_gruppe'] == "false") - { - $gruppe_kurzbz = $_POST['gruppe']; - } - else - { - $gruppe = new gruppe(); - $gruppe_kurzbz = mb_strtoupper(substr($studiengang->kuerzel.$lehrveranstaltung_obj->semester.'-'.$_POST['studiensemester_kurzbz'].'-'.$lehrveranstaltung_obj->kurzbz,0,32)); - $gruppe_kurzbz = $gruppe->getNummerierteGruppenbez($gruppe_kurzbz); - $gruppe->gruppe_kurzbz=$gruppe_kurzbz; - $gruppe->studiengang_kz=$studiengang->studiengang_kz; - $gruppe->bezeichnung=mb_substr($lehrveranstaltung_obj->bezeichnung,0,30); - $gruppe->semester=$lehrveranstaltung_obj->semester; - $gruppe->sort=''; - $gruppe->mailgrp=false; - $gruppe->beschreibung=$lehrveranstaltung_obj->bezeichnung; - $gruppe->sichtbar=true; - $gruppe->generiert=false; - $gruppe->aktiv=true; - $gruppe->lehre=true; - $gruppe->content_visible=false; - $gruppe->orgform_kurzbz=$lehrveranstaltung_obj->orgform_kurzbz; - $gruppe->gesperrt=false; - $gruppe->zutrittssystem=false; - $gruppe->insertamum=date('Y-m-d H:i:s'); - $gruppe->insertvon=$user; - - if(!$gruppe->save(true)) - { - $errormsg = 'Fehler beim Erstellen der Gruppe'.$gruppe->errormsg; - $return = false; - } - } - - $lvangebot->lehrveranstaltung_id = $_POST['lehrveranstaltung_id']; - $lvangebot->studiensemester_kurzbz = $_POST['studiensemester_kurzbz']; - $lvangebot->gruppe_kurzbz = $gruppe_kurzbz; - $lvangebot->incomingplaetze = $_POST['incomingplaetze']; - $lvangebot->gesamtplaetze = $_POST['gesamtplaetze']; - $lvangebot->anmeldefenster_start = $datum_obj->formatDatum($_POST['anmeldefenster_start'], 'Y-m-d'); - $lvangebot->anmeldefenster_ende = $datum_obj->formatDatum($_POST['anmeldefenster_ende'],'Y-m-d'); - - if(!$lvangebot->save()) - { - $errormsg = $lvangebot->errormsg; - $return = false; - } - else - { - $return = true; - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lvangebot_gruppe_del') - { - $lvangebot = new lvangebot(); - $lvangebot->load($_POST['lvangebot_id']); - $lva = new lehrveranstaltung($lvangebot->lehrveranstaltung_id); - - if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && - !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - - if(!$error) - { - if(!$lvangebot->delete($_POST['lvangebot_id'])) - { - $errormsg = $this->errormsg; - $return = false; - } - else - { - $return = true; - } - } - } - else - { - $return = false; - $errormsg = 'Unkown type: '.$_POST['type']; - $data = ''; - } -} -echo ' - - - - - '.($return?'true':'false').' - - - - - - -'; -?> +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +// **************************************** +// * Insert/Update/Delete +// * der Lehreinheiten +// * +// * Script sorgt fuer den Datenbankzugriff +// * fuer das XUL - Lehreinheiten-Modul +// * +// * Derzeitige Funktionen: +// * - Lehreinheitmitarbeiter Zuteilung hinzufuegen/bearbeiten/loeschen +// * - Lehreinheitgruppe Zutelung hinzufuegen/loeschen +// * - Lehreinheit anlegen/bearbeiten/loeschen +// **************************************** + +require_once('../../config/vilesci.config.inc.php'); +require_once('../../include/functions.inc.php'); +require_once('../../include/lehreinheit.class.php'); +require_once('../../include/lehreinheitmitarbeiter.class.php'); +require_once('../../include/lehreinheitgruppe.class.php'); +require_once('../../include/benutzerberechtigung.class.php'); +require_once('../../include/log.class.php'); +require_once('../../include/person.class.php'); +require_once('../../include/benutzer.class.php'); +require_once('../../include/mitarbeiter.class.php'); +require_once('../../include/lehrstunde.class.php'); +require_once('../../include/lvangebot.class.php'); +require_once('../../include/gruppe.class.php'); +require_once('../../include/lehrveranstaltung.class.php'); +require_once('../../include/datum.class.php'); +require_once('../../include/vertrag.class.php'); +require_once('../../include/benutzergruppe.class.php'); + +$user = get_uid(); +$db = new basis_db(); +//error_reporting(0); + +$return = false; +$errormsg = 'unknown'; +$data = ''; +$error = false; +$warnung = false; + +loadVariables($user); + +//Berechtigungen laden +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($user); +if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('assistenz') && !$rechte->isBerechtigt('lv-plan')) +{ + $return = false; + $errormsg = 'Keine Berechtigung'; + $data = ''; + $error = true; +} + + +function kollision($lehreinheit_id, $mitarbeiter_uid, $mitarbeiter_uid_old, $db_stpl_table) +{ + //Lehrstunden laden + $lehrstunden=new lehrstunde(); + $lehrstunde=new lehrstunde(); + $lehrstunden->load_lehrstunden_le($lehreinheit_id,$mitarbeiter_uid_old); + + $koll_arr=array(); + foreach ($lehrstunden->lehrstunden as $ls) + { + $lehrstunde->load($ls->stundenplan_id); + $lehrstunde->lektor_uid=$mitarbeiter_uid; + if ($lehrstunde->kollision($db_stpl_table)) + { + $koll_arr[]=$lehrstunde->errormsg; + } + } + if(count($koll_arr)>0) + return $koll_arr; + + return false; +} + +/** + * Prueft ob die Person den Lehrauftrag auf eine Firma ausgestellt bekommt + * + * @param $mitarbeiter_uid + * @return boolean + */ +function LehrauftragAufFirma($mitarbeiter_uid) +{ + global $db; + + $qry_firma = " + SELECT * FROM campus.vw_mitarbeiter LEFT JOIN public.tbl_adresse USING(person_id) + WHERE uid=".$db->db_add_param($mitarbeiter_uid)." + ORDER BY zustelladresse DESC, firma_id LIMIT 1"; + if($result_firma = $db->db_query($qry_firma)) + { + if($row_firma = $db->db_fetch_object($result_firma)) + { + if($row_firma->firma_id=='') + return false; + else + return true; + } + else + { + return false; + } + } + else + { + return false; + } +} + +/** + * Liefert eine Liste mit den Gesamtstunden eines Lektors in den einzelnen Instituten + * + * @param $mitarbeiter_uid + * @param $studiensemester_kurzbz + * @return string + */ +function getStundenproInstitut($mitarbeiter_uid, $studiensemester_kurzbz, $oe_arr) +{ + global $db; + + $ret="Der Lektor ist in folgenden Organisationseinheiten zugeteilt:\n"; + + //Liste mit den Stunden in den jeweiligen Instituten anzeigen + $qry = "SELECT sum(tbl_lehreinheitmitarbeiter.semesterstunden) as summe, tbl_studiengang.bezeichnung + FROM + lehre.tbl_lehreinheitmitarbeiter + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + JOIN public.tbl_studiengang USING(studiengang_kz) + WHERE + mitarbeiter_uid=".$db->db_add_param($mitarbeiter_uid)." AND + studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." AND + faktor>0 AND + stundensatz>0 AND + bismelden AND + tbl_studiengang.oe_kurzbz in(".$db->db_implode4SQL($oe_arr).") + GROUP BY tbl_studiengang.bezeichnung"; + + if($result = $db->db_query($qry)) + { + while($row = $db->db_fetch_object($result)) + { + $ret .=$row->summe.' Stunden '.$row->bezeichnung."\n"; + } + } + return $ret; +} + +if(!$error) +{ + if(!empty($_POST['lehrveranstaltung'])) + $lva = new lehrveranstaltung($_POST['lehrveranstaltung']); + + if(isset($_POST['type']) && $_POST['type']=='lehreinheit_mitarbeiter_save') + { + //Lehreinheitmitarbeiter Zuteilung + $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, + (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); + + if($result = $db->db_query($qry)) + { + if($row = $db->db_fetch_object($result)) + { + $lva = new lehrveranstaltung($row->lehrveranstaltung_id); + $oe_arr = $lva->getAllOe(); + + if(!$rechte->isBerechtigtMultipleOe('admin', $oe_arr, 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $oe_arr, 'suid') && + !$rechte->isBerechtigtMultipleOe('lv-plan', $oe_arr, 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $oe_arr, 'suid', $row->fachbereich_kurzbz) && + !$rechte->isBerechtigtMultipleOe('admin', $oe_arr, 'suid', $row->fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + + if(!$error) + { + $lem = new lehreinheitmitarbeiter(); + + if(!$lem->load($_POST['lehreinheit_id'],$_POST['mitarbeiter_uid_old'])) + { + $return = false; + $errormsg = 'Fehler beim Laden:'.$lem->errormsg; + $error = true; + } + $semesterstunden_alt=$lem->semesterstunden; + $bismelden_alt = $lem->bismelden; + $faktor_alt = $lem->faktor; + $stundensatz_alt = $lem->stundensatz; + + $qry_lvplanaenderung=''; + + if(!$error) + { + $lem->lehreinheit_id = $_POST['lehreinheit_id']; + $lem->lehrfunktion_kurzbz = $_POST['lehrfunktion_kurzbz']; + $lem->mitarbeiter_uid = $_POST['mitarbeiter_uid']; + $lem->mitarbeiter_uid_old = $_POST['mitarbeiter_uid_old']; + $lem->semesterstunden = $_POST['semesterstunden']; + $lem->planstunden = $_POST['planstunden']; + $lem->stundensatz = $_POST['stundensatz']; + $lem->faktor = $_POST['faktor']; + $lem->anmerkung = $_POST['anmerkung']; + $lem->bismelden = ($_POST['bismelden']=='true'?true:false); + $lem->updateamum = date('Y-m-d H:i:s'); + $lem->updatevon = $user; + + $lem->new=false; + + //Wenn sich der Lektor aendert und keine Kollision dadurch entsteht, dann werden die + //Daten automatisch im Stundenplan geaendert + if($lem->mitarbeiter_uid!=$lem->mitarbeiter_uid_old) + { + $koll_arr = kollision($lem->lehreinheit_id, $lem->mitarbeiter_uid, $lem->mitarbeiter_uid_old, $db_stpl_table); + //check kollision + if($koll_arr===false || $ignore_kollision=='true') + { + //Update im Stundenplan + $stpl_table='lehre.tbl_stundenplandev'; + $qry_lvplanaenderung = "UPDATE $stpl_table SET mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid).", updateamum=now(), updatevon=".$db->db_add_param($user)." WHERE lehreinheit_id=".$db->db_add_param($lem->lehreinheit_id, FHC_INTEGER)." AND mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid_old); + // Das Update wird erst weiter unten durchgefuehrt wenn die restlichen Checks erfolgreich sind da es sonst zu inkonsistenzen kommt + if(is_array($koll_arr)) + { + $errormsg="Da Kollisionen deaktiviert sind, wird die Änderung durchgeführt obwohl dadurch kollisionen entstehen. Bitte korrigieren Sie folgende Kollisionen manuell:\n"; + $errormsg.=implode("\n",$koll_arr); + } + } + else + { + $return = false; + $errormsg = "Änderung fehlgeschlagen!\nDie Änderung des Lektors führt zu ".count($koll_arr)." Kollision(en) im LV-Plan. Deaktivieren Sie die Kollisionspruefung oder wenden Sie sich an die LV-Planung!\n"; + $errormsg.= "zB:".$koll_arr[0]; + $error = true; + } + } + + $fixangestellt=false; + if(!$error) + { + //Pruefen ob die erlaubte Semesterstundenanzahl ueberschritten wurde. + //Wenn ja dann ein Warning zurueckliefern + $ma = new mitarbeiter(); + $ma->load($lem->mitarbeiter_uid); + $fixangestellt=$ma->fixangestellt; + + $oe_obj = new organisationseinheit(); + $stunden_oe_kurzbz=null; + + $stg_obj = new studiengang(); + $stg_obj->load($lva->studiengang_kz); + + //Maximale Stundenanzahl ermitteln + if($fixangestellt) + list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, true); + else + list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, false); + + //Summe der Stunden ermitteln + $le = new lehreinheit(); + $le->load($lem->lehreinheit_id); + + if($lem->stundensatz<=0 || $lem->faktor<=0 || $lem->bismelden==false) + $neue_stunden_eingerechnet=false; + else + $neue_stunden_eingerechnet=true; + + if(($stundensatz_alt<=0 || $faktor_alt<=0 || $bismelden_alt==false)) + $alte_stunden_eingerechnet=false; + else + $alte_stunden_eingerechnet=true; + + //Stundenreduzierung immer moeglich + if(($lem->semesterstunden>$semesterstunden_alt) || $neue_stunden_eingerechnet) + { + $oe_obj = new organisationseinheit(); + $oe_arr = $oe_obj->getChilds($stunden_oe_kurzbz); + $qry = "SELECT "; + if($alte_stunden_eingerechnet && $neue_stunden_eingerechnet) + $qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)-($semesterstunden_alt)+($lem->semesterstunden)) as summe"; + elseif($alte_stunden_eingerechnet && !$neue_stunden_eingerechnet) + $qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)-($semesterstunden_alt)) as summe"; + elseif(!$alte_stunden_eingerechnet && $neue_stunden_eingerechnet) + $qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)+($lem->semesterstunden)) as summe"; + elseif(!$alte_stunden_eingerechnet && !$neue_stunden_eingerechnet) + $qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)) as summe"; + $qry.=" FROM + lehre.tbl_lehreinheitmitarbeiter + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + JOIN public.tbl_studiengang USING(studiengang_kz) + WHERE + mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid)." AND + studiensemester_kurzbz=".$db->db_add_param($le->studiensemester_kurzbz)." AND + faktor>0 AND + stundensatz>0 AND + bismelden"; + + if(count($oe_arr)>0) + $qry.=" AND tbl_studiengang.oe_kurzbz in(".$db->db_implode4SQL($oe_arr).")"; + + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + if($row->summe>$max_stunden) + { + if(!$fixangestellt) + { + if(!LehrauftragAufFirma($lem->mitarbeiter_uid)) + { + //Warnung wenn die Stundenzahl ueberschritten wurde + $return = false; + $error = true; + $errormsg = "ACHTUNG: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden ($stunden_oe_kurzbz) wurde ueberschritten!\n Daten wurden NICHT gespeichert!\n\n"; + } + } + else + { + $return = true; + $error = false; + $warnung = true; + $errormsg = "Hinweis: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden ($stunden_oe_kurzbz) wurde ueberschritten!\n Daten wurden gespeichert!\n\n"; + } + + $errormsg.=getStundenproInstitut($lem->mitarbeiter_uid, $le->studiensemester_kurzbz, $oe_arr); + } + } + else + { + $return = false; + $error=true; + $errormsg='Fehler beim Ermitteln der Gesamtstunden'; + } + + } + else + { + $return = false; + $error=true; + $errormsg='Fehler beim Ermitteln der Gesamtstunden'; + } + } + } + + if(!$error) + { + if($lem->save()) + { + //Fixangestellte bekommen eine Warnung wenn die Stunden ueberschritten wurden. Es wird aber + //trotzdem gespeichert + if($warnung) + { + $return=false; + $error = true; + } + else + { + $return = true; + $error = false; + } + + // Wenn eine LVPlan aenderung noetig ist, dann diese jetzt + // durchfuehrten + if($qry_lvplanaenderung!='') + { + if($db->db_query($qry_lvplanaenderung)) + { + if($errormsg=='' || $errormsg=='unknown') + { + $error = false; + $return = true; + } + else + { + // Bei Kollisionen steht in errormsg die Kollisionsinformation + $error = true; + $return = false; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Fehler beim Update im LV-Plan'.$qry; + } + } + } + else + { + $return = false; + $errormsg = $lem->errormsg; + $error = true; + } + } + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_mitarbeiter_add') + { + //neue Lehreinheitmitarbeiterzuteilung anlegen + $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, + (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + $lva = new lehrveranstaltung($row->lehrveranstaltung_id); + + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && + !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + + if(!$error) + { + if(isset($_POST['lehreinheit_id']) && isset($_POST['mitarbeiter_uid'])) + { + $lem = new lehreinheitmitarbeiter(); + + $lem->lehreinheit_id = $_POST['lehreinheit_id']; + $lem->lehrfunktion_kurzbz = 'Lektor'; + $lem->mitarbeiter_uid = $_POST['mitarbeiter_uid']; + + $lem->anmerkung = ''; + $lem->bismelden = true; + $lem->updateamum = date('Y-m-d H:i:s'); + $lem->updatevon = $user; + $lem->insertamum = date('Y-m-d H:i:s'); + $lem->insertvon = $user; + $lem->new=true; + + $fixangestellt=false; + //Stundensatz aus tbl_mitarbeiter holen + $qry = "SELECT stundensatz, fixangestellt FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']); + if($result = $db->db_query($qry)) + { + if($row = $db->db_fetch_object($result)) + { + if($row->stundensatz!='') + $lem->stundensatz = $row->stundensatz; + else + $lem->stundensatz = '0'; + $fixangestellt = ($row->fixangestellt=='t'?true:false); + } + else + { + $error=true; + $return=false; + $errormsg='Mitarbeiter '.$db->convert_html_chars($_POST['mitarbeiter_uid']).' wurde nicht gefunden'; + } + } + else + { + $error=true; + $return=false; + $errormsg='Fehler bei einer Datenbankabfrage:'.$db->db_last_error(); + } + + $maxstunden=9999; + + $oe_obj = new organisationseinheit(); + $stunden_oe_kurzbz=null; + + $stg_obj = new studiengang(); + $stg_obj->load($lva->studiengang_kz); + + //Maximale Stundenanzahl ermitteln + if($fixangestellt) + list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, true); + else + list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, false); + + //Bei freien Lektoren muss geprueft werden ob die Stundengrenze erreicht wurde + if(!$fixangestellt && !LehrauftragAufFirma($lem->mitarbeiter_uid)) + { + //Summe der Stunden ermitteln + $le = new lehreinheit(); + $le->load($lem->lehreinheit_id); + + $oe_obj = new organisationseinheit(); + $oe_arr = $oe_obj->getChilds($stunden_oe_kurzbz); + + $qry = "SELECT + sum(tbl_lehreinheitmitarbeiter.semesterstunden) as summe + FROM + lehre.tbl_lehreinheitmitarbeiter + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + JOIN public.tbl_studiengang USING(studiengang_kz) + WHERE + mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid)." AND + studiensemester_kurzbz=".$db->db_add_param($le->studiensemester_kurzbz)." AND + faktor>0 AND + stundensatz>0 AND + bismelden"; + + if(count($oe_arr)>0) + $qry.=" AND tbl_studiengang.oe_kurzbz in(".$db->db_implode4SQL($oe_arr).")"; + + if($result_std = $db->db_query($qry)) + { + if($row_std = $db->db_fetch_object($result_std)) + { + //Grenze ueberschritten + if($row_std->summe>=$max_stunden) + { + $return = false; + $error = true; + $errormsg = "ACHTUNG: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden ($stunden_oe_kurzbz) wurde ueberschritten!\n Daten wurden NICHT gespeichert!\n\n"; + $errormsg.=getStundenproInstitut($lem->mitarbeiter_uid, $le->studiensemester_kurzbz,$oe_arr); + } + else + { + //Stunden berechnen die noch maximal unterrichtet werden darf + $maxstunden = $max_stunden-$row_std->summe; + } + } + } + } + + if(!$error) + { + //Faktor und Semesterstunden aus tbl_lehrveranstaltung holen + $qry = "SELECT planfaktor, semesterstunden FROM lehre.tbl_lehrveranstaltung JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id) WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER).";"; + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + if($row->planfaktor!='') + $lem->faktor = $row->planfaktor; + else + $lem->faktor = '1.0'; + + if($row->semesterstunden!='') + { + //wenn es sich um einen freien Lektor handelt, und dieser nicht mehr die volle Stundenanzahl unterrichten + //darf, dann werden nur die restlichen zur Verfuegung stehenden Stunden zugeteilt. + $lem->semesterstunden = ($row->semesterstunden>$maxstunden?$maxstunden:$row->semesterstunden); + $lem->planstunden = ($row->semesterstunden>$maxstunden?$maxstunden:$row->semesterstunden); + } + else + { + $lem->planstunden = '0'; + $lem->semesterstunden = '0'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehrveranstaltung wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Fehler in einer Datenbankabfrage:'.$db->db_last_error(); + } + + if(!$error) + { + if($lem->save()) + { + $return = true; + $error = false; + } + else + { + $return = false; + $errormsg = $lem->errormsg; + $error = true; + } + } + } + } + else + { + $return = false; + $errormsg = 'Fehlerhafte Parameteruebergabe'; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_mitarbeiter_del') + { + $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, + (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + $lva = new lehrveranstaltung($row->lehrveranstaltung_id); + + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && + !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + + if(!$error) + { + //Lehreinheitmitarbeiterzuteilung loeschen + if(isset($_POST['lehreinheit_id']) && is_numeric($_POST['lehreinheit_id']) && isset($_POST['mitarbeiter_uid'])) + { + //Wenn der Mitarbeiter im Stundenplan verplant ist, dann wird das Loeschen verhindert + $qry = "SELECT stundenplandev_id as id FROM lehre.tbl_stundenplandev WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." AND mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid'])." + UNION + SELECT stundenplan_id as id FROM lehre.tbl_stundenplan WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." AND mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']); + if($db->db_query($qry)) + { + if($db->db_num_rows()>0) + { + $return = false; + $errormsg = 'Dieser Lektor kann nicht gelöscht werden da er schon verplant ist'; + } + else + { + $leg = new lehreinheitmitarbeiter(); + if($leg->load($_POST['lehreinheit_id'], $_POST['mitarbeiter_uid'])) + { + // Wenn ein Vertrag dazu angelegt ist, dann diesen mitloeschen + if($leg->vertrag_id!='') + { + $vertrag = new vertrag(); + $vertrag->delete($leg->vertrag_id); + } + + if($leg->delete($_POST['lehreinheit_id'], $_POST['mitarbeiter_uid'])) + { + $return = true; + } + else + { + $return = false; + $errormsg = $leg->errormsg; + } + } + else + { + $return = false; + $errormsg='Fehlgeschlagen:'.$leg->errormsg; + } + } + } + else + { + $return = false; + $errormsg = 'Fehler:'.$qry; + } + } + else + { + $return = false; + $errormsg = 'Fehler beim Löschen der Zuordnung'; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_gruppe_del') + { + $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, + (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=(SELECT lehreinheit_id FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER).")"; + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + $lva = new lehrveranstaltung($row->lehrveranstaltung_id); + + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && + !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + + if(!$error) + { + //Pruefen ob bereits eine Kreuzerlliste vorhanden ist + $qry = "SELECT count(*) as anzahl FROM lehre.tbl_lehreinheitgruppe, lehre.tbl_lehreinheit, campus.tbl_uebung WHERE + tbl_lehreinheitgruppe.lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER)." AND + tbl_lehreinheitgruppe.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND + tbl_lehreinheit.lehreinheit_id=tbl_uebung.lehreinheit_id"; + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + if($row->anzahl>0) + { + $error = true; + $return = false; + $errormsg = 'Diese Gruppe kann nicht geloescht werden da bereits Kreuzerllisten angelegt wurden'; + } + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Fehler beim Ermitteln ob eine Kreuzerlliste vorhanden ist'; + } + + //Pruefen ob diese Gruppe im Stundenplan schon verplant wurde + if(!$error) + { + $qry = "SELECT stundenplandev_id as id FROM lehre.tbl_stundenplandev + WHERE + (lehreinheit_id, studiengang_kz, semester, trim(COALESCE(verband,'')), trim(COALESCE(gruppe,'')), trim(COALESCE(gruppe_kurzbz,''))) = + (SELECT + lehreinheit_id, studiengang_kz, semester, trim(COALESCE(verband,'')), trim(COALESCE(gruppe,'')), trim(COALESCE(gruppe_kurzbz,'')) + FROM + lehre.tbl_lehreinheitgruppe + WHERE + lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER)." + ) + "; + if($db->db_query($qry)) + { + if($db->db_num_rows()>0) + { + $error = true; + $return = false; + $errormsg = 'Diese Gruppe kann nicht geloescht werden, da sie bereits im LV-Plan verplant ist. Bitte wenden Sie sich an die LV-Planung'; + } + } + else + { + $errormsg = 'Fehler beim Pruefen des LV-Plans: '.$db->db_last_error(); + $return = false; + $error = true; + } + + } + + if(!$error) + { + //Lehreinheitgruppezuteilung loeschen + if(isset($_POST['lehreinheitgruppe_id']) && is_numeric($_POST['lehreinheitgruppe_id'])) + { + $leg = new lehreinheitgruppe(); + if($leg->delete($_POST['lehreinheitgruppe_id'])) + { + $return = true; + } + else + { + $return = false; + $errormsg = $leg->errormsg; + } + } + else + { + $return = false; + $errormsg = 'Fehler beim Löschen der Zuordnung'; + } + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_lektor_del_lvplan') + { + //Pruefen ob dieser Lektor im Stundenplan schon verplant wurde + $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + $lva = new lehrveranstaltung($row->lehrveranstaltung_id); + + if(!$rechte->isBerechtigtMultipleOe('lv-plan/lektorentfernen', $lva->getAllOe(), 'suid')) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + + // Wenn nur noch dieser Lektor im LVPlan verplant ist, dann wird das loeschen verhindert + // da sonst der gesamte LVPlan der Lehreinheit weg ist + $qry = "SELECT + distinct mitarbeiter_uid + FROM + lehre.tbl_stundenplandev + WHERE + lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); + + if($result = $db->db_query($qry)) + { + if($db->db_num_rows($result)<2) + { + $error = true; + $return = false; + $errormsg='Dieser Lektor kann nicht aus dem LVPlan entfernt werden da dies der letzte verplante Lektor ist'; + } + } + + // Wenn Ressourcen an einem der Stundenplaneintraege haengen die geloescht werden wuerden + // dann wird das loeschen verhindert + $qry = "SELECT + 1 + FROM + lehre.tbl_stundenplandev + JOIN lehre.tbl_stundenplan_betriebsmittel USING(stundenplandev_id) + WHERE + tbl_stundenplandev.lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." + AND tbl_stundenplandev.mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']); + + if($result = $db->db_query($qry)) + { + if($db->db_num_rows($result)>0) + { + $return = false; + $error = true; + $errormsg = 'Gruppe kann nicht entfernt werden da bereits Ressourcen zugeordnet wurden'; + } + } + else + { + $return = false; + $error = true; + $errormsg = 'Fehler bei Datenbankabfrage'; + } + + if(!$error) + { + $qry = "DELETE FROM lehre.tbl_stundenplandev + WHERE + lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." + AND mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']); + + if($db->db_query($qry)) + { + $error = false; + $return = true; + } + else + { + $errormsg = 'Fehler beim Entfernen des LV-Plans: '.$db->db_last_error(); + $return = false; + $error = true; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_gruppe_del_lvplan') + { + //Pruefen ob diese Gruppe im Stundenplan schon verplant wurde + $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, + (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=(SELECT lehreinheit_id FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER).")"; + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + $lva = new lehrveranstaltung($row->lehrveranstaltung_id); + + if(!$rechte->isBerechtigtMultipleOe('lv-plan/gruppenentfernen', $lva->getAllOe(), 'suid')) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + + // Wenn nur noch diese eine Gruppe im LVPlan verplant ist, dann wird das loeschen verhindert + // da sonst der gesamte LVPlan der Lehreinheit weg ist + $qry = "SELECT + distinct studiengang_kz, semester, verband, gruppe, gruppe_kurzbz + FROM + lehre.tbl_stundenplandev + WHERE + lehreinheit_id=(SELECT lehreinheit_id FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER).")"; + + if($result = $db->db_query($qry)) + { + if($db->db_num_rows($result)<2) + { + $error = true; + $return = false; + $errormsg='Diese Gruppe kann nicht aus dem LVPlan entfernt werden da dies die letzte verplante Gruppe ist'; + } + } + + // Wenn Ressourcen an einem der Stundenplaneintraege haengen die geloescht werden wuerden + // dann wird das loeschen verhindert + $qry = "SELECT + 1 + FROM + lehre.tbl_stundenplandev + JOIN lehre.tbl_stundenplan_betriebsmittel USING(stundenplandev_id) + JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id) + WHERE + tbl_lehreinheitgruppe.lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER)." + AND + ( + ( + tbl_lehreinheitgruppe.gruppe_kurzbz is not null + AND + tbl_lehreinheitgruppe.gruppe_kurzbz=tbl_stundenplandev.gruppe_kurzbz + ) + OR + ( + tbl_lehreinheitgruppe.gruppe_kurzbz is null + AND + tbl_lehreinheitgruppe.studiengang_kz=tbl_stundenplandev.studiengang_kz + AND + tbl_lehreinheitgruppe.semester=tbl_stundenplandev.semester + AND + tbl_lehreinheitgruppe.verband = tbl_stundenplandev.verband + AND + tbl_lehreinheitgruppe.gruppe = tbl_stundenplandev.gruppe + ) + )"; + + if($result = $db->db_query($qry)) + { + if($db->db_num_rows($result)>0) + { + $return = false; + $error = true; + $errormsg = 'Gruppe kann nicht entfernt werden da bereits Ressourcen zugeordnet wurden'; + } + } + + if(!$error) + { + + $qry = "DELETE FROM lehre.tbl_stundenplandev + WHERE + (lehreinheit_id, studiengang_kz, semester, trim(COALESCE(verband,'')), trim(COALESCE(gruppe,'')), trim(COALESCE(gruppe_kurzbz,''))) = + (SELECT + lehreinheit_id, studiengang_kz, semester, trim(COALESCE(verband,'')), trim(COALESCE(gruppe,'')), trim(COALESCE(gruppe_kurzbz,'')) + FROM + lehre.tbl_lehreinheitgruppe + WHERE + lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER)." + )"; + + if($db->db_query($qry)) + { + $error = false; + $return = true; + } + else + { + $errormsg = 'Fehler beim Entfernen des LV-Plans: '.$db->db_last_error(); + $return = false; + $error = true; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_gruppe_add') + { + $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, + (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + $lva = new lehrveranstaltung($row->lehrveranstaltung_id); + + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && + !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + + if(!$error) + { + //Lehreinheitgruppezuteilung anlegen + if(isset($_POST['lehreinheit_id']) && is_numeric($_POST['lehreinheit_id'])) + { + $leg = new lehreinheitgruppe(); + $leg->lehreinheit_id = $_POST['lehreinheit_id']; + $leg->studiengang_kz = $_POST['studiengang_kz']; + $leg->semester = $_POST['semester']; + $leg->verband = $_POST['verband']; + $leg->gruppe = $_POST['gruppe']; + $leg->gruppe_kurzbz = $_POST['gruppe_kurzbz']; + $leg->insertamum = date('Y-m-d H:i:s'); + $leg->insertvon = $user; + + if(!$leg->checkVorhanden()) + { + if($leg->errormsg=='') + { + if($leg->save(true)) + { + $return = true; + } + else + { + $return = false; + $errormsg = $leg->errormsg; + } + } + else + { + $return = false; + $errormsg=$leg->errormsg; + } + } + else + { + $return = false; + $errormsg = 'Diese Gruppe ist bereits zugeteilt'; + } + } + else + { + $return = false; + $errormsg = 'Bitte zuerst eine Lehreinheit auswaehlen'; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit') + { + //Lehreinheit anlegen/aktualisieren + if(isset($_POST['lehreinheit_id']) && $_POST['lehreinheit_id']!='') + $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, + (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); + else + $qry = "SELECT studiengang_kz FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id=".$db->db_add_param($_POST['lehrveranstaltung'], FHC_INTEGER); + + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + $studiengang_kz = $row->studiengang_kz; + $fachbereich_kurzbz = 0; + if(isset($row->fachbereich_kurzbz)) + $fachbereich_kurzbz = $row->fachbereich_kurzbz; + if(!isset($lva)) + $lva = new lehrveranstaltung($row->lehrveranstaltung_id); + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + + if(!$error) + { + $leDAO=new lehreinheit(); + if ($_POST['do']=='create' || ($_POST['do']=='update')) + { + if($_POST['do']=='update') + { + if(!$leDAO->load($_POST['lehreinheit_id'])) + { + $return = false; + $error = true; + $errormsg = 'Fehler beim Laden der Lehreinheit'; + } + + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + else + { + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'si') && !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'si') && + !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid')) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + + if(!$error) + { + $leDAO->lehrveranstaltung_id=$_POST['lehrveranstaltung']; + $leDAO->studiensemester_kurzbz=$_POST['studiensemester_kurzbz']; + $leDAO->lehrfach_id=$_POST['lehrfach_id']; + $leDAO->lehrform_kurzbz=$_POST['lehrform']; + $leDAO->stundenblockung=$_POST['stundenblockung']; + $leDAO->wochenrythmus=$_POST['wochenrythmus']; + $leDAO->gewicht = $_POST['gewicht']; + + if (isset($_POST['start_kw'])) + $leDAO->start_kw=$_POST['start_kw']; + + $leDAO->raumtyp=$_POST['raumtyp']; + $leDAO->raumtypalternativ=$_POST['raumtypalternativ']; + $leDAO->sprache=$_POST['sprache']; + + if (isset($_POST['lehre'])) + $leDAO->lehre=($_POST['lehre']=='true'?true:false); + + if (isset($_POST['anmerkung'])) + $leDAO->anmerkung=$_POST['anmerkung']; + + $leDAO->lvnr=(isset($_POST['lvnr'])?$_POST['lvnr']:''); + $leDAO->unr=(isset($_POST['unr'])?$_POST['unr']:''); + if($leDAO->unr=='') + { + if(isset($_POST['lehreinheit_id'])) + $leDAO->unr = $_POST['lehreinheit_id']; + } + $leDAO->updateamum=date('Y-m-d H:i:s'); + $leDAO->updatevon=$user; + + if ($_POST['do']=='create') + { + // LE neu anlegen + $leDAO->new=true; + $leDAO->insertamum=date('Y-m-d H:i:s'); + $leDAO->insertvon=$user; + } + else if ($_POST['do']=='update') + { + // LE aktualisieren + $leDAO->new=false; + } + if ($leDAO->save()) + { + $data = $leDAO->lehreinheit_id; + $return = true; + if($_POST['do']=='create') + { + // Wenn ein LV-Angebot vorliegt, wird diese Gruppe automatisch zugeteilt + $lvangebot = new lvangebot(); + $lvangebot->getAllFromLvId($leDAO->lehrveranstaltung_id, $leDAO->studiensemester_kurzbz); + if(isset($lvangebot->result[0]) && $lvangebot->result[0]->gruppe_kurzbz!='') + { + $gruppe = new gruppe(); + $gruppe->load($lvangebot->result[0]->gruppe_kurzbz); + + $leg = new lehreinheitgruppe(); + $leg->lehreinheit_id = $leDAO->lehreinheit_id; + $leg->studiengang_kz = $gruppe->studiengang_kz; + $leg->semester = $gruppe->semester; + $leg->gruppe_kurzbz = $gruppe->gruppe_kurzbz; + $leg->insertamum = date('Y-m-d H:i:s'); + $leg->insertvon = $user; + $leg->new = true; + $leg->save(); + } + } + } + else + { + $return = false; + $errormsg = $leDAO->errormsg; + } + } + } + else if ($_POST['do']=='delete') //Lehreinheit loeschen + { + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid')) + { + $return = false; + $error = true; + $errormsg = 'Keine Berechtigung'; + } + else + { + // Loeschen verhindern wenn diese Lehreinheit schon verplant ist + $qry = "SELECT stundenplandev_id as id FROM lehre.tbl_stundenplandev WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." + UNION + SELECT stundenplan_id as id FROM lehre.tbl_stundenplan WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); + if($db->db_query($qry)) + { + if($db->db_num_rows()>0) + { + $return = false; + $errormsg = 'Diese Lehreinheit ist bereits im LV-Plan verplant und kann daher nicht geloescht werden!'; + } + else + { + if ($leDAO->delete($_POST['lehreinheit_id'])) + { + $return = true; + } + else + { + $return = false; + $errormsg = 'Fehler beim Loeschen der Lehreinheit '.$leDAO->errormsg; + } + } + } + else + { + $return = false; + $errormsg = 'unbekannter Fehler'; + } + } + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='getstundensatz') + { + if(isset($_POST['mitarbeiter_uid'])) + { + $mitarbeiter = new mitarbeiter(); + if($mitarbeiter->load($_POST['mitarbeiter_uid'])) + { + $data = $mitarbeiter->stundensatz; + $return = true; + } + else + { + $errormsg = 'Fehler beim Laden des Mitarbeiters'; + $return = false; + } + } + else + { + $errormsg = 'MitarbeiterUID muss uebergeben werden'; + $return = false; + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lvangebot-gruppe-save') + { + $lehrveranstaltung_obj = new lehrveranstaltung(); + if(!$lehrveranstaltung_obj->load($_POST['lehrveranstaltung_id'])) + $errormsg = 'Fehler beim Laden der Lehrveranstaltung'; + + if(!$rechte->isBerechtigtMultipleOe('admin', $lehrveranstaltung_obj->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lehrveranstaltung_obj->getAllOe(), 'suid')) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + + if(!$error) + { + isset($_POST['lvangebot_id']) ? $lvangebot_id = $_POST['lvangebot_id'] : $lvangebot_id = null; + $datum_obj = new datum(); + $lvangebot = new lvangebot(); + $lvangebot->insertamum = date('Y-m-d H:i:s'); + $lvangebot->insertvon = $user; + + if($lvangebot_id) + { + $lvangebot->load($lvangebot_id); + $lvangebot->new = false; + } + else + { + $lvangebot->new = true; + } + + $studiengang = new studiengang(); + if(!$studiengang->load($lehrveranstaltung_obj->studiengang_kz)) + $errormsg = 'Fehler beim Laden des Studienganges'; + + if($_POST['neue_gruppe'] == "false") + { + $gruppe_kurzbz = $_POST['gruppe']; + } + else + { + $gruppe = new gruppe(); + $gruppe_kurzbz = mb_strtoupper(substr($studiengang->kuerzel.$lehrveranstaltung_obj->semester.'-'.$_POST['studiensemester_kurzbz'].'-'.$lehrveranstaltung_obj->kurzbz,0,32)); + $gruppe_kurzbz = $gruppe->getNummerierteGruppenbez($gruppe_kurzbz); + $gruppe->gruppe_kurzbz=$gruppe_kurzbz; + $gruppe->studiengang_kz=$studiengang->studiengang_kz; + $gruppe->bezeichnung=mb_substr($lehrveranstaltung_obj->bezeichnung,0,30); + $gruppe->semester=$lehrveranstaltung_obj->semester; + $gruppe->sort=''; + $gruppe->mailgrp=false; + $gruppe->beschreibung=$lehrveranstaltung_obj->bezeichnung; + $gruppe->sichtbar=true; + $gruppe->generiert=false; + $gruppe->aktiv=true; + $gruppe->lehre=true; + $gruppe->content_visible=false; + $gruppe->orgform_kurzbz=$lehrveranstaltung_obj->orgform_kurzbz; + $gruppe->gesperrt=false; + $gruppe->zutrittssystem=false; + $gruppe->insertamum=date('Y-m-d H:i:s'); + $gruppe->insertvon=$user; + + if(!$gruppe->save(true)) + { + $errormsg = 'Fehler beim Erstellen der Gruppe'.$gruppe->errormsg; + $return = false; + } + } + + $lvangebot->lehrveranstaltung_id = $_POST['lehrveranstaltung_id']; + $lvangebot->studiensemester_kurzbz = $_POST['studiensemester_kurzbz']; + $lvangebot->gruppe_kurzbz = $gruppe_kurzbz; + $lvangebot->incomingplaetze = $_POST['incomingplaetze']; + $lvangebot->gesamtplaetze = $_POST['gesamtplaetze']; + $lvangebot->anmeldefenster_start = $datum_obj->formatDatum($_POST['anmeldefenster_start'], 'Y-m-d'); + $lvangebot->anmeldefenster_ende = $datum_obj->formatDatum($_POST['anmeldefenster_ende'],'Y-m-d'); + + if(!$lvangebot->save()) + { + $errormsg = $lvangebot->errormsg; + $return = false; + } + else + { + $return = true; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lvangebot_gruppe_del') + { + $lvangebot = new lvangebot(); + $lvangebot->load($_POST['lvangebot_id']); + $lva = new lehrveranstaltung($lvangebot->lehrveranstaltung_id); + + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && + !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + + if(!$error) + { + if(!$lvangebot->delete($_POST['lvangebot_id'])) + { + $errormsg = $this->errormsg; + $return = false; + } + else + { + $return = true; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_direkt_user_add') + { + $lehreinheit_id = $_POST['lehreinheit_id']; + $uid = $_POST['uid']; + + $lehreinheit = new lehreinheit(); + $lehreinheit->load($lehreinheit_id); + $lva = new lehrveranstaltung($lehreinheit->lehrveranstaltung_id); + + if (!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && + !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + + if (!$error) + { + $lehreinheitgruppe = new lehreinheitgruppe(); + if($lehreinheitgruppe->getDirectGroup($lehreinheit_id)) + { + $gruppe_kurzbz = $lehreinheitgruppe->gruppe_kurzbz; + } + else + { + // Es gibt keine direkte Gruppe zu dieser LE + // es wird eine erstellt und zugewiesen + $gruppe_kurzbz = 'LE_'.$lehreinheit_id; + + $gruppe = new gruppe(); + if(!$gruppe->load($gruppe_kurzbz)) + { + $gruppe->gruppe_kurzbz = $gruppe_kurzbz; + $gruppe->studiengang_kz = $lva->studiengang_kz; + $gruppe->semester = $lva->semester; + $gruppe->bezeichnung = 'LE_'.$lehreinheit_id; + $gruppe->aktiv = true; + $gruppe->mailgrp = false; + $gruppe->sichtbar = true; + $gruppe->generiert = false; + $gruppe->insertamum = date('Y-m-d H:i:s'); + $gruppe->insertvon = $user; + $gruppe->orgform_kurzbz = $lva->orgform_kurzbz; + $gruppe->direktinskription = true; + if(!$gruppe->save(true)) + { + $gruppe_kurzbz = ''; + $errormsg = $gruppe->errormsg; + $return = false; + } + } + error_log("grp:".$gruppe_kurzbz); + if ($gruppe_kurzbz != '') + { + error_log("drin"); + $lehreinheitgruppe = new lehreinheitgruppe(); + + $lehreinheitgruppe->lehreinheit_id = $lehreinheit_id; + $lehreinheitgruppe->gruppe_kurzbz = $gruppe_kurzbz; + $lehreinheitgruppe->studiengang_kz = $lva->studiengang_kz; + $lehreinheitgruppe->semester = $lva->semester; + $lehreinheitgruppe->insertamum = date('Y-m-d H:i:s'); + $lehreinheitgruppe->inservon = $user; + if(!$lehreinheitgruppe->save(true)) + { + $gruppe_kurzbz = ''; + $return = false; + $errormsg = $lehreinheitgruppe->errormsg;; + error_log("fail"); + } + else + { + error_log("ok"); + } + } + } + error_log("nachher"); + if ($gruppe_kurzbz != '') + { + error_log("drin2"); + $benutzergruppe = new benutzergruppe(); + if (!$benutzergruppe->load($uid, $gruppe_kurzbz, $lehreinheit->studiensemester_kurzbz)) + { + $benutzergruppe->uid = $uid; + $benutzergruppe->gruppe_kurzbz = $gruppe_kurzbz; + $benutzergruppe->studiensemester_kurzbz = $lehreinheit->studiensemester_kurzbz; + $benutzergruppe->insertamum = date('Y-m-d H:i:s'); + $benutzergruppe->insertvon = $user; + + if ($benutzergruppe->save(true)) + { + $return = true; + } + else + { + $errormsg = $benutzergruppe->errormsg; + $return = false; + } + } + else + { + error_log("Load Failed:".$uid.' '.$gruppe_kurzbz.' '.$lehreinheit->studiensemester_kurzbz); + $errormsg = $benutzergruppe->errormsg; + $return = false; + } + } + else + { + $errormsg .= 'Gruppe kann nicht erstellt werden'; + $return = false; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_gruppe_direkt_del') + { + $gruppe_kurzbz = $_POST['gruppe_kurzbz']; + $uid = $_POST['uid']; + $lehreinheit_id = $_POST['lehreinheit_id']; + + $lehreinheit = new lehreinheit(); + $lehreinheit->load($lehreinheit_id); + $lva = new lehrveranstaltung($lehreinheit->lehrveranstaltung_id); + + if (!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && + !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + + if (!$error) + { + $lehreinheitgruppe = new lehreinheitgruppe(); + if($lehreinheitgruppe->getDirectGroup($lehreinheit_id)) + { + if ($lehreinheitgruppe->gruppe_kurzbz == $gruppe_kurzbz) + { + $benutzergruppe = new benutzergruppe(); + if ($benutzergruppe->delete($uid, $gruppe_kurzbz)) + { + // User entfernt, schauen ob noch personen drannhaengen und Gruppe ggf entfernen + $benutzergruppe->load_uids($gruppe_kurzbz, $lehreinheit->studiensemester_kurzbz); + if (!isset($benutzergruppe->uids)) + { + // Gruppe ist leer und kann entfernt werden + // von der Lehreinheit entfernen + $lehreinheitgruppe_del = new lehreinheitgruppe(); + $lehreinheitgruppe_del->delete($lehreinheitgruppe->lehreinheitgruppe_id); + + // aus Stundenplan entfernen + // TODO + + // Gruppe löschen + $gruppe = new gruppe(); + $gruppe->delete($gruppe_kurzbz); + + $return = true; + } + else + { + $return = true; + } + } + else + { + $errormsg = $benutergruppe->errormsg; + $return = false; + } + } + else + { + $errormsg = 'Gruppe passt nicht zur Lehreinheit'; + $return = false; + } + } + else + { + $errormsg = 'Gruppe passt nicht zur Lehreinheit'; + $return = false; + } + } + } + else + { + $return = false; + $errormsg = 'Unkown type: '.$_POST['type']; + $data = ''; + } +} +echo ' + + + + + '.($return?'true':'false').' + + + + + + +'; +?> diff --git a/content/lvplanung/lehrveranstaltungdetailoverlay.xul.php b/content/lvplanung/lehrveranstaltungdetailoverlay.xul.php index 55ed80a3b..2292c4a4d 100644 --- a/content/lvplanung/lehrveranstaltungdetailoverlay.xul.php +++ b/content/lvplanung/lehrveranstaltungdetailoverlay.xul.php @@ -1,568 +1,631 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -header("Cache-Control: no-cache"); -header("Cache-Control: post-check=0, pre-check=0",false); -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Pragma: no-cache"); -header("Content-type: application/vnd.mozilla.xul+xml"); -require_once('../../config/vilesci.config.inc.php'); -require_once('../../config/global.config.inc.php'); -require_once('../../include/benutzerberechtigung.class.php'); - -$user = get_uid(); -$rechte = new benutzerberechtigung(); -$rechte->getBerechtigungen($user); - -echo ''; - -?> - - - - - - - - isBerechtigt('lv-plan/gruppenentfernen')) - { - echo ''; - echo ''; - } - ?> - - - - - - isBerechtigt('lv-plan/lektorentfernen')) - { - echo ''; - echo ''; - } - ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -