From 1068a0ab33784a53025af2a0a0f661e97129722d Mon Sep 17 00:00:00 2001 From: Andreas Oesterreicher Date: Wed, 27 Feb 2019 09:13:28 +0100 Subject: [PATCH 01/31] Doppelten Anmerkung Tag aus RDF entfernt --- rdf/lehrveranstaltung_einheiten.rdf.php | 1 - 1 file changed, 1 deletion(-) diff --git a/rdf/lehrveranstaltung_einheiten.rdf.php b/rdf/lehrveranstaltung_einheiten.rdf.php index 381e3e90d..6f8e865b0 100644 --- a/rdf/lehrveranstaltung_einheiten.rdf.php +++ b/rdf/lehrveranstaltung_einheiten.rdf.php @@ -438,7 +438,6 @@ $oRdf->sendHeader(); $oRdf->obj[$i]->setAttribut('startkw',$row_le->start_kw); $oRdf->obj[$i]->setAttribut('raumtyp',$row_le->raumtyp); $oRdf->obj[$i]->setAttribut('raumtypalternativ',$row_le->raumtypalternativ); - $oRdf->obj[$i]->setAttribut('anmerkung',$row_le->anmerkung); $oRdf->obj[$i]->setAttribut('unr',$row_le->unr); $oRdf->obj[$i]->setAttribut('lvnr',$row_le->lvnr); $oRdf->obj[$i]->setAttribut('gruppen',$grp); From 03c6873b7008d2d5ace24ee0a9b31fca9555bca1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 28 Feb 2019 07:13:02 +0100 Subject: [PATCH 02/31] =?UTF-8?q?Unterst=C3=BCtzung=20von=20Matrikelnummer?= =?UTF-8?q?n=20zur=20Semesterticket=20Schnittstelle=20hinzugef=C3=BCgt.=20?= =?UTF-8?q?Es=20wird=20nun=20sowohl=20das=20Personenkenneichen=20als=20auc?= =?UTF-8?q?h=20die=20Matrikelnummer=20unterst=C3=BCtzt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/person.class.php | 29 +++ soap/semesterticket.soap.php | 485 +++++++++++++++++++---------------- 2 files changed, 287 insertions(+), 227 deletions(-) diff --git a/include/person.class.php b/include/person.class.php index 78642431d..b4f3f2676 100644 --- a/include/person.class.php +++ b/include/person.class.php @@ -994,4 +994,33 @@ class person extends basis_db return false; } } + + /** + * Laedt eine Person anhand der Matrikelnummer + * + * @param $matr_nr Matrikelnummer + * @return boolean true wenn ok, false im Fehlerfall. + */ + public function getPersonByMatrNr($matr_nr) + { + $qry = "SELECT person_id FROM public.tbl_person WHERE matr_nr=".$this->db_add_param($matr_nr); + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + return $this->load($row->person_id); + } + else + { + $this->errormsg = 'Person nicht gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } } diff --git a/soap/semesterticket.soap.php b/soap/semesterticket.soap.php index 2783abfb2..78853a573 100644 --- a/soap/semesterticket.soap.php +++ b/soap/semesterticket.soap.php @@ -1,227 +1,258 @@ -. - */ - -require_once('../config/vilesci.config.inc.php'); -require_once('../include/student.class.php'); -require_once('../include/benutzer.class.php'); -require_once('../include/adresse.class.php'); -require_once('../include/person.class.php'); -require_once('../include/webservicelog.class.php'); - -ini_set("soap.wsdl_cache_enabled", "0"); - -$SOAPServer = new SoapServer(APP_ROOT."/soap/semesterticket.wsdl.php?".microtime(true)); -$SOAPServer->addFunction("verifyData"); -$SOAPServer->handle(); - -$fehler = ''; - - -/** - * - * Nimmt Anfrage entgegen und überprüft ob Student auch wirklich Student ist (anhand Matrikelnummer) - * @param $parameters - */ -function verifyData($parameters) -{ - global $fehler; - class foo{}; - - $obj = new foo(); - - if (!$db = new basis_db()) - die('Es konnte keine Verbindung zum Server aufgebaut werden.'); - - // Eintrag in der LogTabelle anlegen - $log = new webservicelog(); - $log->request_data = file_get_contents('php://input'); - $log->webservicetyp_kurzbz = 'wienerlinien'; - $log->request_id = $parameters->token; - $log->beschreibung = "Semesterticketanfrage"; - $log->save(true); - - if(!validateRequest($parameters)) - { - $obj->result = 'false'; - $obj->fehler = $fehler; - } - else - { - $student = new student(); - $student_uid = $student->getUidFromMatrikelnummer($parameters->Matrikelnummer); - - // überprüfe ob Benutzer aktiv ist - $benutzer = new benutzer(); - $benutzer->load($student_uid); - if(!$benutzer->bnaktiv) - { - $obj->result = 'false'; - $obj->fehler ='1'; - return $obj; - } - - // überprüfe vorname - if($benutzer->vorname != $parameters->Vorname) - { - // es wurde keine übereinstimmung gefunden - $obj->result = 'false'; - $obj->fehler = '6'; - return $obj; - } - - if($benutzer->nachname != $parameters->Name) - { - // es wurde keine übereinstimmung gefunden - $obj->result = 'false'; - $obj->fehler = '7'; - return $obj; - } - - // Überprüfe PLZ - $adresse = new adresse(); - $adresse->load_pers($benutzer->person_id); - - $foundAdr = false; - foreach($adresse->result as $adr) - { - if($adr->plz == $parameters->Postleitzahl && $adr->typ == 'h') - $foundAdr = true; - } - if($foundAdr == false) - { - // es wurde keine übereinstimmung gefunden - $obj->result = 'false'; - $obj->fehler = '5'; - return $obj; - } - - // Überprüfe Geburtsdatum - $person = new person(); - $person->load($benutzer->person_id); - if($person->gebdatum != $parameters->Geburtsdatum) - { - $obj->result = 'false'; - $obj->fehler = '4'; - return $obj; - } - - // hole prestudentID - $student->load($student_uid); - if($student->prestudent_id == '') - { - // es wurde kein student gefunden - $obj->result = 'false'; - $obj->fehler = '3'; - return $obj; - } - - // Übergabe von studiensemester -> z.b 11W, 12S auf WS2011, SS2012 - $year = mb_substr($parameters->Semesterkuerzel, 0,2); - $semester = mb_substr($parameters->Semesterkuerzel,2,1); - if($semester == 'S') - { - $semester = 'SS'; - } - else if($semester == 'W') - { - $semester= 'WS'; - } - else - { - // ungültiges Semester - $obj->result = 'false'; - $obj->fehler = '8'; - return $obj; - } - $studiensemester = $semester.'20'.$year; - - // letzten Status holen - $qry = "Select public.get_rolle_prestudent ('".$student->prestudent_id."', '".$studiensemester."')"; - - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - $status=$row->get_rolle_prestudent; - } - } - // Status Student und Diplomand gültig - if($status == 'Student' || $status == 'Diplomand') - { - $obj->result = 'true'; - $obj->fehler = ''; - } - else - { - $obj->result = 'false'; - $obj->fehler ='1'; - } - } - return $obj; -} - -/** - * - * Prüft die übergebenen Parameter auf Richtigkeit - * @param $parameter - */ -function validateRequest($parameter) -{ - /** - * Fehlercodes - * 1: Kein aufrechtes Studium - * 2: Fehlerhafter Request - * 3: Student wurde nicht gefunden - * 4: Fehler Geburtsdatum - * 5: Fehler Postleitzahl - * 6: Fehler Vorname - * 7: Fehler Nachname - * 8: Fehler Semester - * 9: Fehler Matrikelnummer - */ - - global $fehler; - - if(mb_strlen($parameter->Postleitzahl) > 10) - { - $fehler = '5'; - return false; - } - if(mb_strlen($parameter->Vorname) > 255) - { - $fehler = '6'; - return false; - } - if(mb_strlen($parameter->Name) > 255) - { - $fehler = '7'; - return false; - } - - if(mb_strlen($parameter->Matrikelnummer) >15 || $parameter->Matrikelnummer == '') - { - $fehler = '9'; - return false; - } - - return true; -} - -?> +. + */ + +require_once('../config/vilesci.config.inc.php'); +require_once('../include/student.class.php'); +require_once('../include/benutzer.class.php'); +require_once('../include/adresse.class.php'); +require_once('../include/person.class.php'); +require_once('../include/webservicelog.class.php'); + +ini_set("soap.wsdl_cache_enabled", "0"); + +$SOAPServer = new SoapServer(APP_ROOT."/soap/semesterticket.wsdl.php?".microtime(true)); +$SOAPServer->addFunction("verifyData"); +$SOAPServer->handle(); + +$fehler = ''; + + +/** + * + * Nimmt Anfrage entgegen und überprüft ob Student auch wirklich Student ist (anhand Matrikelnummer) + * @param $parameters + */ +function verifyData($parameters) +{ + global $fehler; + + $obj = new stdClass(); + + if (!$db = new basis_db()) + die('Es konnte keine Verbindung zum Server aufgebaut werden.'); + + // Eintrag in der LogTabelle anlegen + $log = new webservicelog(); + $log->request_data = file_get_contents('php://input'); + $log->webservicetyp_kurzbz = 'wienerlinien'; + $log->request_id = $parameters->Token; + $log->beschreibung = "Semesterticketanfrage"; + $log->save(true); + + if(!validateRequest($parameters)) + { + $obj->result = 'false'; + $obj->fehler = $fehler; + } + else + { + // nach Personenkennzeichen suchen + $student = new student(); + $student_uid = $student->getUidFromMatrikelnummer($parameters->Matrikelnummer); + $studenten_arr = array(); + + if($student_uid !== false) + { + // überprüfe ob Benutzer aktiv ist + $benutzer = new benutzer(); + $benutzer->load($student_uid); + if(!$benutzer->bnaktiv) + { + $obj->result = 'false'; + $obj->fehler ='1'; + return $obj; + } + $person = new person(); + if(!$person->load($benutzer->person_id)) + { + $obj->result = 'false'; + $obj->fehler ='3'; + return $obj; + } + $studenten_arr[] = $student_uid; + } + else + { + // nach richtiger Matrikelnummer suchen + $person = new person(); + if(!$person->getPersonByMatrNr($parameters->Matrikelnummer)) + { + $obj->result = 'false'; + $obj->fehler = '9'; + return $obj; + } + + // Aktive Accounts der Person laden + $benutzer = new benutzer(); + $benutzer->getBenutzerFromPerson($person->person_id); + foreach($benutzer->result as $row) + { + $studenten_arr[] = $row->uid; + } + } + + // überprüfe vorname + if($person->vorname != $parameters->Vorname) + { + // es wurde keine übereinstimmung gefunden + $obj->result = 'false'; + $obj->fehler = '6'; + return $obj; + } + + if($person->nachname != $parameters->Name) + { + // es wurde keine übereinstimmung gefunden + $obj->result = 'false'; + $obj->fehler = '7'; + return $obj; + } + + // Überprüfe PLZ + $adresse = new adresse(); + $adresse->load_pers($person->person_id); + + $foundAdr = false; + foreach($adresse->result as $adr) + { + if($adr->plz == $parameters->Postleitzahl && $adr->typ == 'h') + $foundAdr = true; + } + if($foundAdr == false) + { + // es wurde keine übereinstimmung gefunden + $obj->result = 'false'; + $obj->fehler = '5'; + return $obj; + } + + // Überprüfe Geburtsdatum + if($person->gebdatum != $parameters->Geburtsdatum) + { + $obj->result = 'false'; + $obj->fehler = '4'; + return $obj; + } + + foreach($studenten_arr as $student_uid) + { + // hole prestudentID + if(!$student->load($student_uid)) + continue; + + // Übergabe von studiensemester -> z.b 11W, 12S auf WS2011, SS2012 + $year = mb_substr($parameters->Semesterkuerzel, 0,2); + $semester = mb_substr($parameters->Semesterkuerzel,2,1); + if($semester == 'S') + { + $semester = 'SS'; + } + else if($semester == 'W') + { + $semester= 'WS'; + } + else + { + // ungültiges Semester + $obj->result = 'false'; + $obj->fehler = '8'; + return $obj; + } + $studiensemester = $semester.'20'.$year; + + // letzten Status holen + $qry = "Select public.get_rolle_prestudent ('".$student->prestudent_id."', '".$studiensemester."')"; + + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + $status=$row->get_rolle_prestudent; + } + } + // Status Student und Diplomand gültig + if($status == 'Student' || $status == 'Diplomand') + { + $obj->result = 'true'; + $obj->fehler = ''; + return $obj; + } + else + { + continue; + } + } + + // es wurde kein passender student gefunden + $obj->result = 'false'; + $obj->fehler = '1'; + return $obj; + } + return $obj; +} + +/** + * + * Prüft die übergebenen Parameter auf Richtigkeit + * @param $parameter + */ +function validateRequest($parameter) +{ + /** + * Fehlercodes + * 1: Kein aufrechtes Studium + * 2: Fehlerhafter Request + * 3: Student wurde nicht gefunden + * 4: Fehler Geburtsdatum + * 5: Fehler Postleitzahl + * 6: Fehler Vorname + * 7: Fehler Nachname + * 8: Fehler Semester + * 9: Fehler Matrikelnummer + */ + + global $fehler; + + if(mb_strlen($parameter->Postleitzahl) > 10) + { + $fehler = '5'; + return false; + } + if(mb_strlen($parameter->Vorname) > 255) + { + $fehler = '6'; + return false; + } + if(mb_strlen($parameter->Name) > 255) + { + $fehler = '7'; + return false; + } + + if(mb_strlen($parameter->Matrikelnummer) >15 || $parameter->Matrikelnummer == '') + { + $fehler = '9'; + return false; + } + + return true; +} + +?> From 7a1027280e96d82b11a037fc15297f4579aa0039 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 28 Feb 2019 15:04:17 +0100 Subject: [PATCH 03/31] Added Reihungstest-Gebiete for person Now the areas for the Reihungstest are put together depending on the studies the examinee is interested in and if the examinee is a Quereinsteiger or not. Therefore all prestudents of the examinee are detected that are set for the actual and future studiensemester. The areas are chosen because of the Studienplan. If not available, they are chosen because of the Studiengang. --- cis/testtool/menu.php | 127 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 125 insertions(+), 2 deletions(-) diff --git a/cis/testtool/menu.php b/cis/testtool/menu.php index a9538ea8e..1399ad019 100644 --- a/cis/testtool/menu.php +++ b/cis/testtool/menu.php @@ -70,7 +70,7 @@ if(isset($_GET['sprache_user'])) setSpracheUser(DEFAULT_LANGUAGE); } -$sprache_user = getSpracheUser(); +$sprache_user = getSpracheUser(); $p = new phrasen($sprache_user); $sprache = getSprache(); @@ -103,7 +103,130 @@ if (isset($_SESSION['pruefling_id'])) $sprache_mehrsprachig = new sprache(); $bezeichnung_mehrsprachig = $sprache_mehrsprachig->getSprachQuery('bezeichnung_mehrsprachig'); - $qry = "SELECT vw_ablauf.*, ".$bezeichnung_mehrsprachig." FROM testtool.vw_ablauf JOIN testtool.tbl_gebiet USING (gebiet_id) WHERE studiengang_kz=".$db->db_add_param($_SESSION['studiengang_kz'])." ORDER BY semester,reihung"; + + /** + * Spaltennamen-Aliase extrahieren um sie im Outer-Select verwenden zu können + * $bezeichnung_mehrsprachig liefert: bezeichnung_mehrsprachig[1] as bezeichnung_mehrsprachig_1,... + * $bezeichnung_mehrsprachig_sel liefert: bezeichnung_mehrsprachig_1, bezeichnung_mehrsprachig_2,... + */ + $bezeichnung_mehrsprachig_sel = explode(",", $bezeichnung_mehrsprachig); + foreach ($bezeichnung_mehrsprachig_sel as &$bm) + { + $bm = strrchr($bm, ' as '); + } + $bezeichnung_mehrsprachig_sel = implode(', ', $bezeichnung_mehrsprachig_sel); + + /** + * Reihungstestgebiete der Person ermitteln; Zusammenfassen, falls RT für mehrere Studien + * 1. Aktuelle Prestudenten zur Person über den Prüfling ermitteln, + * 2. Einstiegssemester (Erstsemester/Quereinsteiger) und Studienplan pro Prestudent ermitteln, + * 3. RT-Gebiete falls vorhanden über Studienplan, sonst über STG ermitteln + * 4. Für Quereinsteiger zusätzlich auch Erstsemestrigen-Gebiete + */ + $qry = " + WITH prestudent_data AS + ( + SELECT DISTINCT ON (prestudent_id) + prestudent_id, + studienplan_id, + studiengang_kz, + ausbildungssemester AS semester + FROM + public.tbl_prestudentstatus + JOIN + public.tbl_prestudent USING (prestudent_id) + WHERE + tbl_prestudent.person_id = ( + SELECT + person_id + FROM + public.tbl_prestudent + WHERE + prestudent_id = ".$db->db_add_param($_SESSION['prestudent_id'])." + ) + + -- Filter only future studiensemester (incl. actual one) + AND + studiensemester_kurzbz IN ( + SELECT + studiensemester_kurzbz + FROM + public.tbl_studiensemester + WHERE + ende > now() + ) + + AND + status_kurzbz = 'Interessent' + + -- Order to get last semester when using distinct on + ORDER BY + prestudent_id, + datum DESC, + tbl_prestudentstatus.insertamum DESC, + tbl_prestudentstatus.ext_id DESC + ) + + + SELECT DISTINCT + semester, + gebiet_id, + bezeichnung, + ". $bezeichnung_mehrsprachig_sel. " + FROM + ( + (SELECT + prestudent_data.semester AS ps_sem, + gebiet_id, + bezeichnung, + tbl_ablauf.studienplan_id, + tbl_ablauf.studiengang_kz, + tbl_ablauf.semester, + tbl_ablauf.reihung, + ".$bezeichnung_mehrsprachig. " + FROM + prestudent_data + JOIN + testtool.tbl_ablauf USING (studiengang_kz) + JOIN + testtool.tbl_gebiet USING (gebiet_id) + WHERE + (prestudent_data.semester= 1 AND tbl_ablauf.semester = 1) + OR + (prestudent_data.semester= 3 AND tbl_ablauf.semester IN (1,3)) + ) + + UNION + + ( + SELECT + prestudent_data.semester AS ps_sem, + gebiet_id, + bezeichnung, + tbl_ablauf.studienplan_id, + tbl_ablauf.studiengang_kz, + tbl_ablauf.semester, + tbl_ablauf.reihung, + ". $bezeichnung_mehrsprachig. " + FROM + prestudent_data + JOIN + testtool.tbl_ablauf USING (studienplan_id) + JOIN + testtool.tbl_gebiet USING (gebiet_id) + WHERE + (prestudent_data.semester= 1 AND tbl_ablauf.semester = 1) + OR + (prestudent_data.semester= 3 AND tbl_ablauf.semester IN (1,3)) + ) + + ORDER BY + reihung + ) temp + + ORDER BY + semester + "; $result = $db->db_query($qry); $lastsemester = ''; From 2524aa90cc9535af71a468ee2e7184970b842d10 Mon Sep 17 00:00:00 2001 From: raab Date: Fri, 1 Mar 2019 09:27:24 +0100 Subject: [PATCH 04/31] LehreExtern nicht mehr zur Auswahl anzeigen --- cis/private/tools/zeitaufzeichnung.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index f044c1472..d763c0f73 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -91,12 +91,12 @@ $fieldheadings = array( if ($rechte->isBerechtigt('basis/servicezeitaufzeichnung')) { $za_simple = 0; - $activities = array('Design', 'Operativ', 'Betrieb', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe'); + $activities = array('Design', 'Operativ', 'Betrieb', 'Pause', 'LehreIntern', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe'); } else { $za_simple = 1; - $activities = array('Arbeit', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe'); + $activities = array('Arbeit', 'Pause', 'LehreIntern', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe'); } $activities_str = "'".implode("','", $activities)."'"; From 17aa4b775612ff096588853ad76395a604aa6bcb Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Fri, 1 Mar 2019 13:38:19 +0100 Subject: [PATCH 05/31] BugFix --- rdf/lehrauftrag.xml.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rdf/lehrauftrag.xml.php b/rdf/lehrauftrag.xml.php index 96565dac7..23de18bfb 100644 --- a/rdf/lehrauftrag.xml.php +++ b/rdf/lehrauftrag.xml.php @@ -419,7 +419,7 @@ function drawLehrauftrag($uid) $lv[$anzahl_lvs]['lehreinheit_id'] = (isset($row->projektarbeit_id)?$kuerzel.$row->projektarbeit_id:' '); $lv[$anzahl_lvs]['lehrveranstaltung'] = 'Betreuung '.$row->vorname.' '.$row->nachname; - $lv[$anzahl_lvs]['fachbereich'] = (isset($row->oe_kurzbz) && array_key_exists($row->oe_kurzbz, $fb_arr)?$fb_arr[$row->oe_kurzbz]:' '); + $lv[$anzahl_lvs]['fachbereich'] = (isset($row->oe_kurzbz) && array_key_exists($row->oe_kurzbz, $oe_arr)?$oe_arr[$row->oe_kurzbz]:' '); $lv[$anzahl_lvs]['gruppe'] = ' '; $lv[$anzahl_lvs]['stunden'] = (isset($row->stunden)?number_format($row->stunden,2):' '); $lv[$anzahl_lvs]['satz'] = (isset($row->stundensatz)?$row->stundensatz:' '); From d1588d00dc53ae2b1d534ba02fbfb55f94380b5b Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Fri, 1 Mar 2019 13:39:53 +0100 Subject: [PATCH 06/31] Neues Recht reservierungAdvanced MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Erlaubt das Einfügen von Reservierungen auch über bestehende - Berechtigung auf testtool.tbl_kategorie für web-user --- system/checksystem.php | 1 + system/dbupdate_3.3.php | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/system/checksystem.php b/system/checksystem.php index 7bdf96446..dbe251aa9 100644 --- a/system/checksystem.php +++ b/system/checksystem.php @@ -156,6 +156,7 @@ $berechtigungen = array( array('lehre/reihungstestOrt','Erlaubt die Zuteilung von Raeumen zu Reihungstests'), array('lehre/reservierung','erweiterte Reservierung inkl. Lektorauswahl, Stg, Sem und Gruppe'), array('lehre/reservierung:begrenzt','normale Raumreservierung im CIS'), + array('lehre/reservierungAdvanced','Unbegrenztes Einfügen von Reservierungen auch über bestehende'), array('lehre/studienordnung','Studienordnung'), array('lehre/studienordnungInaktiv','Studienordnung Inaktiv'), array('lehre/studienplan','Studienplan'), diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 052467098..10a78d54b 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -2728,6 +2728,21 @@ if(!$result = @$db->db_query('SELECT lehrfach_oe_kurzbz FROM campus.vw_lehreinhe echo '
campus.vw_lehreinheit lehrfach_oe_kurzbz added, fachbereich_kurzbz removed'; } +// Berechtigungen fuer web User auf testtool.tbl_kategorie +if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants WHERE table_name='tbl_kategorie' AND table_schema='testtool' AND grantee='web' AND privilege_type='SELECT'")) +{ + if($db->db_num_rows($result)==0) + { + + $qry = "GRANT SELECT, INSERT, UPDATE, DELETE ON testtool.tbl_kategorie TO web;"; + + if(!$db->db_query($qry)) + echo 'Testtool Berechtigungen: '.$db->db_last_error().'
'; + else + echo '
Web User fuer testtool.tbl_kategorie berechtigt'; + } +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; From 63877ef8f9671729021d89e7fb70c2afc17e2451 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Fri, 1 Mar 2019 13:42:34 +0100 Subject: [PATCH 07/31] Neues Recht lehre/reservierungAdvanced in LV-Plan implementiert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Reservierungen können damit überschrieben werden - Wenn Raum grundsätzlich nicht reservierbar, wird eine entsprechende Meldung angezeigt. --- cis/private/lvplan/stpl_week.php | 9 ++++++--- include/wochenplan.class.php | 21 ++++++++++++++++----- locale/de-AT/lvplan.php | 1 + locale/en-US/lvplan.php | 1 + vilesci/lehre/reservierung_insert.php | 4 ++-- 5 files changed, 26 insertions(+), 10 deletions(-) diff --git a/cis/private/lvplan/stpl_week.php b/cis/private/lvplan/stpl_week.php index fec76259f..c0ac5f152 100644 --- a/cis/private/lvplan/stpl_week.php +++ b/cis/private/lvplan/stpl_week.php @@ -40,6 +40,9 @@ if (!$db = new basis_db()) $uid=get_uid(); +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($uid); + // Variablen uebernehmen if (isset($_GET['type'])) $type=$_GET['type']; @@ -331,12 +334,12 @@ if (isset($reserve) && $raumres) $stpl = new stundenplan('stundenplan'); $stpldev = new stundenplan('stundenplandev'); - if(!$stpl->isBelegt($ort_kurzbz, $datum_res, $stunde) - && !$stpldev->isBelegt($ort_kurzbz, $datum_res, $stunde)) + if((!$stpl->isBelegt($ort_kurzbz, $datum_res, $stunde) + && !$stpldev->isBelegt($ort_kurzbz, $datum_res, $stunde)) || $rechte->isBerechtigt('lehre/reservierungAdvanced')) { $reservierung = new reservierung(); - if(!$reservierung->isReserviert($ort_kurzbz, $datum_res, $stunde)) + if(!$reservierung->isReserviert($ort_kurzbz, $datum_res, $stunde) || $rechte->isBerechtigt('lehre/reservierungAdvanced')) { if (empty($_REQUEST['titel']) && empty($_REQUEST['beschreibung'])) echo "
".$p->t('lvplan/titelUndBeschreibungFehlt')."!
"; diff --git a/include/wochenplan.class.php b/include/wochenplan.class.php index c9be5f567..bbc418c1b 100644 --- a/include/wochenplan.class.php +++ b/include/wochenplan.class.php @@ -645,6 +645,7 @@ class wochenplan extends basis_db die($this->db_last_error()); $result_stunde = $this->db_result; $num_rows_stunde = $this->db_num_rows($result_stunde); + $raumReservierbar = true; $stundenplandev_belegt = array(); // Formularbeginn wenn Lektor @@ -670,7 +671,10 @@ class wochenplan extends basis_db } } else - $raumres=false; + { + $raumres = false; + $raumReservierbar = false; + } } //Tabelle zeichnen @@ -696,6 +700,8 @@ class wochenplan extends basis_db if (!date("w",$this->datum)) $this->datum=jump_day($this->datum,1); $datum=$datum_mon=$this->datum; + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($user_uid); for ($i=1; $i<=TAGE_PRO_WOCHE; $i++) { @@ -887,7 +893,7 @@ class wochenplan extends basis_db } // Ausgabe einer Stunde im Raster (HTML) - echo ' '; + echo ' '; foreach($uEinheiten as $key=>$uEinheit) { @@ -945,6 +951,8 @@ class wochenplan extends basis_db } echo ''; } + if ($rechte->isBerechtigt('lehre/reservierungAdvanced', null, 'sui')) + echo ''; echo ''.$this->crlf; } } @@ -978,9 +986,6 @@ class wochenplan extends basis_db echo ' '.$p->t('global/titel').': '.$this->crlf; echo ' '.$p->t('global/beschreibung').': '.$this->crlf; - $rechte = new benutzerberechtigung(); - $rechte->getBerechtigungen($user_uid); - //Pruefen ob die erweiterte Reservierungsrechte vorhanden sind if ($rechte->isBerechtigt('lehre/reservierung', null, 'sui')) { @@ -1109,6 +1114,12 @@ class wochenplan extends basis_db echo ''; echo ' '.$p->t('lvplan/reservierungenLoeschen').' '; } + elseif ($this->type=='ort' && $raumReservierbar == false) + { + echo '

'; + echo ''.$p->t('lvplan/raumNichtReservierbar').''; + echo '
'; + } else { if ($this->type=='ort') diff --git a/locale/de-AT/lvplan.php b/locale/de-AT/lvplan.php index 3d95771fd..4c386aa23 100644 --- a/locale/de-AT/lvplan.php +++ b/locale/de-AT/lvplan.php @@ -98,4 +98,5 @@ $this->phrasen['lvplan/status']='Status'; $this->phrasen['lvplan/automatischeMail']='Dies ist eine automatische Mail!'; $this->phrasen['lvplan/folgendeAenderungen']='Es haben sich folgende Aenderungen in Ihrem LV-Plan ergeben:'; $this->phrasen['lvplan/reserviertInDev']='reserviert
für
lehre'; +$this->phrasen['lvplan/raumNichtReservierbar']='Die Möglichkeit der Reservierung ist für diesen Raum deaktiviert.'; ?> \ No newline at end of file diff --git a/locale/en-US/lvplan.php b/locale/en-US/lvplan.php index 993018ba1..2e098e41d 100644 --- a/locale/en-US/lvplan.php +++ b/locale/en-US/lvplan.php @@ -97,4 +97,5 @@ $this->phrasen['lvplan/status']='Status'; $this->phrasen['lvplan/automatischeMail']='This is an automatic email!'; $this->phrasen['lvplan/folgendeAenderungen']='There have been the following changes in your Schedule:'; $this->phrasen['lvplan/reserviertInDev']='not
available'; +$this->phrasen['lvplan/raumNichtReservierbar']='Reservation is disabled for this room.'; ?> diff --git a/vilesci/lehre/reservierung_insert.php b/vilesci/lehre/reservierung_insert.php index be26243bd..57b5039a7 100644 --- a/vilesci/lehre/reservierung_insert.php +++ b/vilesci/lehre/reservierung_insert.php @@ -37,7 +37,7 @@ $datum_obj = new datum(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($uid); -if(!$rechte->isBerechtigt('lehre/reservierung', null, 'sui')) +if(!$rechte->isBerechtigt('lehre/reservierungAdvanced', null, 'sui')) die('Sie haben keine Berechtigung für diese Seite'); $stgid=(isset($_REQUEST['stgid'])?$_REQUEST['stgid']:0); @@ -247,7 +247,7 @@ echo '
'; -if($rechte->isBerechtigt('lehre/reservierung', null, 'sui')) +if($rechte->isBerechtigt('lehre/reservierungAdvanced', null, 'sui')) { if ($type=="save") { From 10da7bde5a02e3f87c7edfcb01a9ff96df457613 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Fri, 1 Mar 2019 13:43:22 +0100 Subject: [PATCH 08/31] Typo corrected Wochenrythmus ausgebessert auf Wochenrhythmus --- content/lvplanung/lehrveranstaltungdetailoverlay.xul.php | 2 +- content/lvplanung/stpl-week-overlay.xul.php | 2 +- content/lvplanung/timetable-week.xul.php | 2 +- content/statistik/lvplanung.xls.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/content/lvplanung/lehrveranstaltungdetailoverlay.xul.php b/content/lvplanung/lehrveranstaltungdetailoverlay.xul.php index 2292c4a4d..de6c7cf17 100644 --- a/content/lvplanung/lehrveranstaltungdetailoverlay.xul.php +++ b/content/lvplanung/lehrveranstaltungdetailoverlay.xul.php @@ -228,7 +228,7 @@ echo '';