From 48813b4e41a75c2d8fc01456da19f98030a0289b Mon Sep 17 00:00:00 2001 From: Nikolaus Krondraf Date: Mon, 20 Apr 2015 11:05:45 +0200 Subject: [PATCH] =?UTF-8?q?Pr=C3=BCfung=20der=20Berechtigung=20f=C3=BCr=20?= =?UTF-8?q?LVA=20ber=C3=BCcksichtigt=20nun=20Studienpl=C3=A4ne=20der=20LVA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lvplanung/lehrveranstaltungDBDML.php | 283 +++++++++++-------- content/student/studentDBDML.php | 30 +- include/benutzerberechtigung.class.php | 23 ++ include/lehrveranstaltung.class.php | 41 +++ 4 files changed, 233 insertions(+), 144 deletions(-) diff --git a/content/lvplanung/lehrveranstaltungDBDML.php b/content/lvplanung/lehrveranstaltungDBDML.php index 9171359d5..4cf8f814a 100644 --- a/content/lvplanung/lehrveranstaltungDBDML.php +++ b/content/lvplanung/lehrveranstaltungDBDML.php @@ -169,11 +169,13 @@ function getStundenproInstitut($mitarbeiter_uid, $studiensemester_kurzbz) 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, + $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 @@ -182,11 +184,13 @@ if(!$error) { if($row = $db->db_fetch_object($result)) { - if(!$rechte->isBerechtigt('admin', $row->studiengang_kz, 'suid') && - !$rechte->isBerechtigt('assistenz', $row->studiengang_kz, 'suid') && - !$rechte->isBerechtigt('lv-plan', $row->studiengang_kz, 'suid') && - !$rechte->isBerechtigt('assistenz', $row->studiengang_kz, 'suid', $row->fachbereich_kurzbz) && - !$rechte->isBerechtigt('admin', $row->studiengang_kz, 'suid', $row->fachbereich_kurzbz)) + $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; @@ -394,7 +398,7 @@ if(!$error) elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_mitarbeiter_add') { //neue Lehreinheitmitarbeiterzuteilung anlegen - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, + $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 @@ -403,11 +407,13 @@ if(!$error) { if($row = $db->db_fetch_object()) { - if(!$rechte->isBerechtigt('admin', $row->studiengang_kz, 'suid') && - !$rechte->isBerechtigt('assistenz', $row->studiengang_kz, 'suid') && - !$rechte->isBerechtigt('lv-plan', $row->studiengang_kz, 'suid') && - !$rechte->isBerechtigt('assistenz', $row->studiengang_kz, 'suid', $row->fachbereich_kurzbz) && - !$rechte->isBerechtigt('admin', $row->studiengang_kz, 'suid', $row->fachbereich_kurzbz)) + $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; @@ -584,7 +590,7 @@ if(!$error) } elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_mitarbeiter_del') { - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, + $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 @@ -593,11 +599,13 @@ if(!$error) { if($row = $db->db_fetch_object()) { - if(!$rechte->isBerechtigt('admin', $row->studiengang_kz, 'suid') && - !$rechte->isBerechtigt('assistenz', $row->studiengang_kz, 'suid') && - !$rechte->isBerechtigt('lv-plan', $row->studiengang_kz, 'suid') && - !$rechte->isBerechtigt('assistenz', $row->studiengang_kz, 'suid', $row->fachbereich_kurzbz) && - !$rechte->isBerechtigt('admin', $row->studiengang_kz, 'suid', $row->fachbereich_kurzbz)) + $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; @@ -663,7 +671,7 @@ if(!$error) } elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_gruppe_del') { - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, + $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 @@ -672,11 +680,13 @@ if(!$error) { if($row = $db->db_fetch_object()) { - if(!$rechte->isBerechtigt('admin', $row->studiengang_kz, 'suid') && - !$rechte->isBerechtigt('assistenz', $row->studiengang_kz, 'suid') && - !$rechte->isBerechtigt('lv-plan', $row->studiengang_kz, 'suid') && - !$rechte->isBerechtigt('assistenz', $row->studiengang_kz, 'suid', $row->fachbereich_kurzbz) && - !$rechte->isBerechtigt('admin', $row->studiengang_kz, 'suid', $row->fachbereich_kurzbz)) + $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; @@ -792,7 +802,7 @@ if(!$error) } elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_gruppe_add') { - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, + $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 @@ -801,11 +811,13 @@ if(!$error) { if($row = $db->db_fetch_object()) { - if(!$rechte->isBerechtigt('admin', $row->studiengang_kz, 'suid') && - !$rechte->isBerechtigt('assistenz', $row->studiengang_kz, 'suid') && - !$rechte->isBerechtigt('lv-plan', $row->studiengang_kz, 'suid') && - !$rechte->isBerechtigt('assistenz', $row->studiengang_kz, 'suid', $row->fachbereich_kurzbz) && - !$rechte->isBerechtigt('admin', $row->studiengang_kz, 'suid', $row->fachbereich_kurzbz)) + $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; @@ -878,7 +890,8 @@ if(!$error) { //Lehreinheit anlegen/aktualisieren if(isset($_POST['lehreinheit_id']) && $_POST['lehreinheit_id']!='') - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz + $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); @@ -890,9 +903,11 @@ if(!$error) if($row = $db->db_fetch_object()) { $studiengang_kz = $row->studiengang_kz; - $fachbereich_kurzbz = 0; + $fachbereich_kurzbz = 0; if(isset($row->fachbereich_kurzbz)) $fachbereich_kurzbz = $row->fachbereich_kurzbz; + if(!isset($lva)) + $lva = new lehrveranstaltung($row->lehrveranstaltung_id); } else { @@ -922,11 +937,10 @@ if(!$error) $errormsg = 'Fehler beim Laden der Lehreinheit'; } - if(!$rechte->isBerechtigt('admin', $studiengang_kz, 'suid') && - !$rechte->isBerechtigt('assistenz', $studiengang_kz, 'suid') && - !$rechte->isBerechtigt('lv-plan', $studiengang_kz, 'suid') && - !$rechte->isBerechtigt('assistenz', $studiengang_kz, 'suid', $fachbereich_kurzbz)) /*&& - !$rechte->isBerechtigt('admin', $studiengang_kz, 'suid', $fachbereich_kurzbz))*/ + 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; @@ -935,8 +949,8 @@ if(!$error) } else { - if(!$rechte->isBerechtigt('admin', $studiengang_kz, 'si') && !$rechte->isBerechtigt('assistenz', $studiengang_kz, 'si') && - !$rechte->isBerechtigt('admin', $studiengang_kz, 'suid') && !$rechte->isBerechtigt('assistenz', $studiengang_kz, 'suid') && !$rechte->isBerechtigt('lv-plan', $studiengang_kz, 'suid')) + 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; @@ -1023,7 +1037,9 @@ if(!$error) } else if ($_POST['do']=='delete') //Lehreinheit loeschen { - if(!$rechte->isBerechtigt('admin', $studiengang_kz, 'suid') && !$rechte->isBerechtigt('assistenz', $studiengang_kz, 'suid') && !$rechte->isBerechtigt('lv-plan', $studiengang_kz, 'suid')) + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid')) { $return = false; $error = true; @@ -1101,94 +1117,121 @@ if(!$error) } elseif(isset($_POST['type']) && $_POST['type']=='lvangebot-gruppe-save') { - 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; - } - $lehrveranstaltung_obj = new lehrveranstaltung(); - if(!$lehrveranstaltung_obj->load($_POST['lehrveranstaltung_id'])) - $errormsg = 'Fehler beim Laden der 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; - $studiengang = new studiengang(); - if(!$studiengang->load($lehrveranstaltung_obj->studiengang_kz)) - $errormsg = 'Fehler beim Laden des Studienganges'; + if($lvangebot_id) + { + $lvangebot->load($lvangebot_id); + $lvangebot->new = false; + } + else + { + $lvangebot->new = true; + } - 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; + $studiengang = new studiengang(); + if(!$studiengang->load($lehrveranstaltung_obj->studiengang_kz)) + $errormsg = 'Fehler beim Laden des Studienganges'; - 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($_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(!$lvangebot->save()) - { - $errormsg = $lvangebot->errormsg; - $return = false; - } - else - { - $return = true; - } + 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(); - if(!$lvangebot->delete($_POST['lvangebot_id'])) - { - $errormsg = $this->errormsg; - $return = false; - } - else - { - $return = true; - } + $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 { diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index 6dca9a22b..edf3594ad 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -63,6 +63,7 @@ require_once('../../include/kontakt.class.php'); require_once('../../include/dms.class.php'); require_once('../../include/notenschluessel.class.php'); require_once('../../include/anrechnung.class.php'); +require_once('../../include/lehrveranstaltung.class.php'); $user = get_uid(); $db = new basis_db(); @@ -2453,28 +2454,7 @@ if(!$error) if(!is_null($lehrveranstaltung_id) && !is_null($student_uid) && !is_null($studiensemester_kurzbz)) { //Berechtigung pruefen - $qry = "SELECT studiengang_kz FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id=".$db->db_add_param($lehrveranstaltung_id, FHC_INTEGER); - if($result = $db->db_query($qry)) - { - if($row = $db->db_fetch_object($result)) - { - $stg_lva = $row->studiengang_kz; - } - else - { - $return = false; - $error = true; - $errormsg = 'Fehler beim Ermitteln der LVA'; - } - } - else - { - $return = false; - $error = true; - $errormsg = 'Fehler beim Ermitteln der LVA'; - } - - $qry = "SELECT studiengang_kz FROM public.tbl_student WHERE student_uid=".$db->db_add_param($student_uid); + $qry = "SELECT studiengang_kz FROM public.tbl_student WHERE student_uid=".$db->db_add_param($student_uid); if($result = $db->db_query($qry)) { if($row = $db->db_fetch_object($result)) @@ -2497,8 +2477,10 @@ if(!$error) if(!$error) { - if(!$rechte->isBerechtigt('admin', $stg_lva, 'suid') && !$rechte->isBerechtigt('admin', $stg_std, 'suid') && - !$rechte->isBerechtigt('assistenz', $stg_lva, 'suid') && !$rechte->isBerechtigt('assistenz', $stg_std, 'suid')) + $lva = new lehrveranstaltung($lehrveranstaltung_id); + + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && !$rechte->isBerechtigt('admin', $stg_std, 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && !$rechte->isBerechtigt('assistenz', $stg_std, 'suid')) { $return = false; $error = true; diff --git a/include/benutzerberechtigung.class.php b/include/benutzerberechtigung.class.php index 8e8efe271..a1ae54738 100644 --- a/include/benutzerberechtigung.class.php +++ b/include/benutzerberechtigung.class.php @@ -575,6 +575,29 @@ class benutzerberechtigung extends basis_db return $this->isBerechtigt(substr($berechtigung_kurzbz,0,$pos-1), $oe_kurzbz, $art, $kostenstelle_id); } } + + /** + * Prueft ob die Berechtigung zumindest fuer eine der angegebenen OE vorhanden ist. + * @param $berechtigung_kurzbz + * @param $oe_kurzbz + * @param $art + * @param $kostenstelle_id + * @return boolean + */ + public function isBerechtigtMultipleOe($berechtigung_kurzbz, $oe_kurzbz, $art=null, $kostenstelle_id=null) + { + $results = array(); + + foreach($oe_kurzbz as $value) + { + $results[] = $this->isBerechtigt($berechtigung_kurzbz, $value, $art, $kostenstelle_id); + } + + if(!in_array(true, $results)) + return false; + else + return true; + } /** * Prueft ob die Person Fixangestellt ist diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php index 9444c8146..4bc864065 100644 --- a/include/lehrveranstaltung.class.php +++ b/include/lehrveranstaltung.class.php @@ -22,6 +22,7 @@ */ require_once(dirname(__FILE__) . '/basis_db.class.php'); require_once(dirname(__FILE__) . '/functions.inc.php'); +require_once(dirname(__FILE__) . '/studiengang.class.php'); class lehrveranstaltung extends basis_db { @@ -2151,5 +2152,45 @@ class lehrveranstaltung extends basis_db return false; } } + + /** + * Gibt alle Organisationseinheiten der Studiengänge zurück, mit denen + * die Lehrveranstaltung über Studienpläne verknüpft ist + * @return boolean|array false im Fehlerfall, sonst ein Array + */ + public function getAllOe() + { + $oe = array(); + + $qry = 'SELECT DISTINCT oe_kurzbz + FROM lehre.tbl_studienplan_lehrveranstaltung + JOIN lehre.tbl_studienplan USING(studienplan_id) + JOIN lehre.tbl_studienordnung USING(studienordnung_id) + JOIN public.tbl_studiengang USING(studiengang_kz) + WHERE lehrveranstaltung_id = '.$this->db_add_param($this->lehrveranstaltung_id); + + if($result = $this->db_query($qry)) + { + while ($row = $this->db_fetch_object($result)) + { + $oe[] = $row->oe_kurzbz; + } + } + else + { + $this->errormsg = "Fehler beim Laden der Daten"; + return false; + } + + // oe_kurzbz des Studiengangs der LVA hinzufügen + $stg = new studiengang($this->studiengang_kz); + + if(!in_array($stg->oe_kurzbz, $oe)) + { + $oe[] = $this->oe_kurzbz; + } + + return $oe; + } } ?>