From b7d5fef30a4a852444332451aeda7c5c62d5e901 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Wed, 16 Jun 2021 08:03:54 +0200 Subject: [PATCH 001/354] nachrichten wegschicken auch wenn die Sprache nicht gefunden wurde --- application/libraries/VorlageLib.php | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/application/libraries/VorlageLib.php b/application/libraries/VorlageLib.php index 9679dff1c..d8d443a41 100644 --- a/application/libraries/VorlageLib.php +++ b/application/libraries/VorlageLib.php @@ -114,7 +114,7 @@ class VorlageLib if (!hasData($vorlage)) { // Builds where clause - $where = $this->_where($vorlage_kurzbz, $orgform_kurzbz, $sprache); + $where = $this->_where($vorlage_kurzbz); $vorlage = $this->ci->organisationseinheitlib->treeSearch( 'public', @@ -134,20 +134,11 @@ class VorlageLib /** * _where */ - private function _where($vorlage_kurzbz, $orgform_kurzbz, $sprache) + private function _where($vorlage_kurzbz) { // Builds where clause $where = "vorlage_kurzbz = ".$this->ci->VorlageModel->escape($vorlage_kurzbz); - if (is_null($sprache)) - { - $where .= " AND sprache IS NULL"; - } - else - { - $where .= " AND sprache = ".$this->ci->VorlageModel->escape($sprache); - } - $where .= " AND aktiv = true"; return $where; From dc5ca70645bb92047975e3e96f2881474db1410c Mon Sep 17 00:00:00 2001 From: Monika70 <46781283+Monika70@users.noreply.github.com> Date: Fri, 20 Aug 2021 13:55:13 +0200 Subject: [PATCH 002/354] Create zgvdoktor.rdf.php ZGV Doktor und zgv_erfuellt --- rdf/zgvdoktor.rdf.php | 79 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 rdf/zgvdoktor.rdf.php diff --git a/rdf/zgvdoktor.rdf.php b/rdf/zgvdoktor.rdf.php new file mode 100644 index 000000000..dc0b38ff7 --- /dev/null +++ b/rdf/zgvdoktor.rdf.php @@ -0,0 +1,79 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +// header fr no cache +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"); +// content type setzen +header("Content-type: application/xhtml+xml"); + +echo ''; +require_once('../config/vilesci.config.inc.php'); +require_once('../include/basis_db.class.php'); + +$rdf_url='http://www.technikum-wien.at/zgvdoktor'; + +?> + + + + + + + + + + -- keine Auswahl -- + -- keine Auswahl -- + + +'; +} +$qry = 'SELECT * FROM bis.tbl_zgvdoktor ORDER BY zgvdoktor_code'; +$db = new basis_db(); + +if($db->db_query($qry)) +{ + while($row = $db->db_fetch_object()) + { +?> + + + zgvdoktor_code; ?>]]> + zgvdoktor_bez; ?>]]> + zgvdoktor_kurzbz; ?>]]> + + + + + \ No newline at end of file From 713374f4d867ef1404807f79d20d2f40e53ec81c Mon Sep 17 00:00:00 2001 From: Monika70 <46781283+Monika70@users.noreply.github.com> Date: Fri, 20 Aug 2021 13:59:16 +0200 Subject: [PATCH 003/354] ZGV Doktor und zgv_erfuellt --- rdf/student.rdf.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/rdf/student.rdf.php b/rdf/student.rdf.php index 3771f7d5e..ae2016aea 100644 --- a/rdf/student.rdf.php +++ b/rdf/student.rdf.php @@ -126,14 +126,16 @@ function checkfilter($row, $filter2, $buchungstyp = null) elseif($filter2=='zgvohnedatum') { //Alle Personen die den ZGV Typ eingetragen haben aber noch kein Datum - $qry = "SELECT zgv_code, zgvdatum, zgvmas_code, zgvmadatum + $qry = "SELECT zgv_code, zgvdatum, zgvmas_code, zgvmadatum,zgvdoktor_code, zgvdoktordatum FROM public.tbl_prestudent WHERE prestudent_id=".$db->db_add_param($row->prestudent_id); if($db->db_query($qry)) { if($row_filter = $db->db_fetch_object()) { if(($row_filter->zgv_code!='' && $row_filter->zgvdatum=='') - || ($row_filter->zgvmas_code!='' && $row_filter->zgvmadatum=='')) + || ($row_filter->zgvmas_code!='' && $row_filter->zgvmadatum=='') + || ($row_filter->zgvdoktor_code!='' && $row_filter->zgvdoktordatum=='') + ) return true; else return false; @@ -352,11 +354,18 @@ function draw_prestudent($row) convertISODate($row->zgvdatum).']]> zgvdatum.']]> zgvnation.']]> + zgv_erfuellt.']]> zgvmas_code.']]> zgvmaort.']]> convertISODate($row->zgvmadatum).']]> zgvmadatum.']]> zgvmanation.']]> + zgvmas_erfuellt.']]> + zgvdoktor_code.']]> + zgvdoktorort.']]> + convertISODate($row->zgvdoktordatum).']]> + zgvdoktordatum.']]> + zgvdoktornation.']]> zgvdoktor_erfuellt.']]> ausstellungsstaat.']]> aufnahmeschluessel.']]> facheinschlberuf?'true':'false').']]> From ced3f0f97858f6e9f168e40f1d8d4c8d1648ad58 Mon Sep 17 00:00:00 2001 From: Monika70 <46781283+Monika70@users.noreply.github.com> Date: Fri, 20 Aug 2021 14:04:43 +0200 Subject: [PATCH 004/354] ZGV Doktor und zgv_erfuellt --- rdf/prestudent.rdf.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/rdf/prestudent.rdf.php b/rdf/prestudent.rdf.php index bc7c17036..b7b8aa6d9 100644 --- a/rdf/prestudent.rdf.php +++ b/rdf/prestudent.rdf.php @@ -68,11 +68,19 @@ if(isset($_GET['prestudent_id']) && is_numeric($_GET['prestudent_id'])) zgvdatum; ?>]]> convertISODate($prestd->zgvdatum); ?>]]> zgvnation; ?>]]> + zgv_erfuellt; ?>]]> zgvmas_code; ?>]]> zgvmaort; ?>]]> zgvmadatum; ?>]]> convertISODate($prestd->zgvmadatum); ?>]]> zgvmanation; ?>]]> + zgvmas_erfuellt; ?>]]> + zgvdoktor_code; ?>]]> + zgvdoktorort; ?>]]> + zgvdoktordatum; ?>]]> + convertISODate($prestd->zgvdoktordatum); ?>]]> + zgvdoktornation; ?>]]> + zgvdoktor_erfuellt; ?>]]> aufnahmeschluessel; ?>]]> facheinschlberuf?'true':'false'); ?>]]> reihungstest_id; ?>]]> From cf0957f8a494126561095503d1f8f618cf9b82db Mon Sep 17 00:00:00 2001 From: Monika70 <46781283+Monika70@users.noreply.github.com> Date: Fri, 20 Aug 2021 14:10:37 +0200 Subject: [PATCH 005/354] ZGV Doktor und zgv_erfuellt --- content/student/studentdetailoverlay.xul.php | 64 ++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/content/student/studentdetailoverlay.xul.php b/content/student/studentdetailoverlay.xul.php index 18e69874e..7771c17cb 100644 --- a/content/student/studentdetailoverlay.xul.php +++ b/content/student/studentdetailoverlay.xul.php @@ -294,6 +294,8 @@ echo ''; + + @@ -332,6 +334,14 @@ echo ''; + + + + + + From 8423b3e30af659d28ef2bf45d368987e26681d46 Mon Sep 17 00:00:00 2001 From: Monika70 <46781283+Monika70@users.noreply.github.com> Date: Fri, 20 Aug 2021 14:21:10 +0200 Subject: [PATCH 006/354] ZGV Doktor und zgv_erfuellt --- content/student/studentoverlay.js.php | 56 ++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php index f034ae473..fa142d8fa 100644 --- a/content/student/studentoverlay.js.php +++ b/content/student/studentoverlay.js.php @@ -1137,10 +1137,18 @@ function StudentAuswahl() zgvort = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvort" )); zgvnation = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvnation" )); zgvdatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdatum" )); + zgv_erfuellt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgv_erfuellt" )); zgvmaster_code = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmas_code" )); zgvmasterort = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmaort" )); zgvmasternation = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmanation" )); - zgvmasterdatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmadatum" )); + zgvmasterdatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmadatum" )); + zgvmas_erfuellt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmas_erfuellt" )); + zgvdoktor_code = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdoktor_code" )); + zgvdoktorort = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdoktorort" )); + zgvdoktornation = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdoktornation" )); + zgvdoktordatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdoktordatum" )); + zgvdoktor_erfuellt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdoktor_erfuellt" )); + aufnahmeschluessel = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#aufnahmeschluessel" )); facheinschlberuf = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#facheinschlberuf" )); bismelden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bismelden" )); @@ -1157,10 +1165,26 @@ function StudentAuswahl() document.getElementById('student-prestudent-textbox-zgvort').value=zgvort; MenulistSelectItemOnValue('student-prestudent-menulist-zgvnation', zgvnation); document.getElementById('student-prestudent-textbox-zgvdatum').value=zgvdatum; + if(zgv_erfuellt=='t') + document.getElementById('student-prestudent-checkbox-zgverfuellt').checked=true; + else + document.getElementById('student-prestudent-checkbox-zgverfuellt').checked=false; document.getElementById('student-prestudent-menulist-zgvmastercode').value=zgvmaster_code; document.getElementById('student-prestudent-textbox-zgvmasterort').value=zgvmasterort; MenulistSelectItemOnValue('student-prestudent-menulist-zgvmasternation', zgvmasternation); document.getElementById('student-prestudent-textbox-zgvmasterdatum').value=zgvmasterdatum; + if(zgvmas_erfuellt=='t') + document.getElementById('student-prestudent-checkbox-zgvmaserfuellt').checked=true; + else + document.getElementById('student-prestudent-checkbox-zgvmaserfuellt').checked=false; + document.getElementById('student-prestudent-menulist-zgvdoktorcode').value=zgvdoktor_code; + document.getElementById('student-prestudent-textbox-zgvdoktorort').value=zgvdoktorort; + MenulistSelectItemOnValue('student-prestudent-menulist-zgvdoktornation', zgvdoktornation); + document.getElementById('student-prestudent-textbox-zgvdoktordatum').value=zgvdoktordatum; + if(zgvdoktor_erfuellt=='t') + document.getElementById('student-prestudent-checkbox-zgvdoktorerfuellt').checked=true; + else + document.getElementById('student-prestudent-checkbox-zgvdoktorerfuellt').checked=false; document.getElementById('student-prestudent-menulist-aufnahmeschluessel').value=aufnahmeschluessel; if(facheinschlberuf=='true') document.getElementById('student-prestudent-checkbox-facheinschlberuf').checked=true; @@ -1694,10 +1718,18 @@ function StudentPrestudentDisableFields(val) document.getElementById('student-prestudent-textbox-zgvort').disabled=val; document.getElementById('student-prestudent-menulist-zgvnation').disabled=val; document.getElementById('student-prestudent-textbox-zgvdatum').disabled=val; + document.getElementById('student-prestudent-checkbox-zgverfuellt').disabled=val; document.getElementById('student-prestudent-menulist-zgvmastercode').disabled=val; document.getElementById('student-prestudent-textbox-zgvmasterort').disabled=val; document.getElementById('student-prestudent-menulist-zgvmasternation').disabled=val; document.getElementById('student-prestudent-textbox-zgvmasterdatum').disabled=val; + document.getElementById('student-prestudent-checkbox-zgvmaserfuellt').disabled=val; + document.getElementById('student-prestudent-menulist-zgvdoktorcode').disabled=val; + document.getElementById('student-prestudent-textbox-zgvdoktorort').disabled=val; + document.getElementById('student-prestudent-menulist-zgvdoktornation').disabled=val; + document.getElementById('student-prestudent-textbox-zgvdoktordatum').disabled=val; + document.getElementById('student-prestudent-checkbox-zgvdoktorerfuellt').disabled=val; + document.getElementById('student-prestudent-menulist-aufnahmeschluessel').disabled=val; document.getElementById('student-prestudent-checkbox-facheinschlberuf').disabled=val; document.getElementById('student-prestudent-checkbox-bismelden').disabled=val; @@ -1763,10 +1795,18 @@ function StudentPrestudentSave() zgvort = document.getElementById('student-prestudent-textbox-zgvort').value; zgvnation = document.getElementById('student-prestudent-menulist-zgvnation').value; zgvdatum = document.getElementById('student-prestudent-textbox-zgvdatum').value; + zgv_erfuellt = document.getElementById('student-prestudent-checkbox-zgverfuellt').checked; zgvmaster_code = document.getElementById('student-prestudent-menulist-zgvmastercode').value; zgvmasterort = document.getElementById('student-prestudent-textbox-zgvmasterort').value; zgvmasternation = document.getElementById('student-prestudent-menulist-zgvmasternation').value; zgvmasterdatum = document.getElementById('student-prestudent-textbox-zgvmasterdatum').value; + zgvmas_erfuellt = document.getElementById('student-prestudent-checkbox-zgvmaserfuellt').checked; + zgvdoktor_code = document.getElementById('student-prestudent-menulist-zgvdoktorcode').value; + zgvdoktorort = document.getElementById('student-prestudent-textbox-zgvdoktorort').value; + zgvdoktornation = document.getElementById('student-prestudent-menulist-zgvdoktornation').value; + zgvdoktordatum = document.getElementById('student-prestudent-textbox-zgvdoktordatum').value; + zgvdoktor_erfuellt = document.getElementById('student-prestudent-checkbox-zgvdoktorerfuellt').checked; + aufnahmeschluessel = document.getElementById('student-prestudent-menulist-aufnahmeschluessel').value; facheinschlberuf = document.getElementById('student-prestudent-checkbox-facheinschlberuf').checked; bismelden = document.getElementById('student-prestudent-checkbox-bismelden').checked; @@ -1790,7 +1830,11 @@ function StudentPrestudentSave() alert('ZGVMaster Datum ist ungueltig'); return false; } - + if(zgvdoktordatum!='' && !CheckDatum(zgvdoktordatum)) + { + alert('ZGVDoktor Datum ist ungueltig'); + return false; + } var url = 'content/student/studentDBDML.php'; var req = new phpRequest(url,'',''); @@ -1809,10 +1853,18 @@ function StudentPrestudentSave() req.add('zgvort', zgvort); req.add('zgvnation', zgvnation); req.add('zgvdatum', ConvertDateToISO(zgvdatum)); + req.add('zgv_erfuellt', zgv_erfuellt); req.add('zgvmas_code', zgvmaster_code); req.add('zgvmaort', zgvmasterort); req.add('zgvmanation', zgvmasternation); req.add('zgvmadatum', ConvertDateToISO(zgvmasterdatum)); + req.add('zgvmas_erfuellt', zgvmas_erfuellt); + req.add('zgvdoktor_code', zgvdoktor_code); + req.add('zgvdoktorort', zgvdoktorort); + req.add('zgvdoktornation', zgvdoktornation); + req.add('zgvdoktordatum', ConvertDateToISO(zgvdoktordatum)); + req.add('zgvdoktor_erfuellt', zgvdoktor_erfuellt); + req.add('aufnahmeschluessel', aufnahmeschluessel); req.add('facheinschlberuf', facheinschlberuf); req.add('bismelden', bismelden); From ed43b03e378fa057bbd5d3245a586528e147bcc7 Mon Sep 17 00:00:00 2001 From: Monika70 <46781283+Monika70@users.noreply.github.com> Date: Fri, 20 Aug 2021 14:33:03 +0200 Subject: [PATCH 007/354] ZGV Doktor und zgv_erfuellt --- content/student/studentDBDML.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index 79e330c7f..6aa407c5e 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -365,6 +365,7 @@ if(!$error) $error = true; $errormsg = 'Sie haben keine Schreibrechte fuer diesen Studiengang'; } + //Studentendaten speichern if(!$error) { @@ -384,7 +385,8 @@ if(!$error) $return = false; $errormsg = 'Geburtsdatum ist nicht korrekt.'; $error = true; - } + } + if(!$error) { $student->uid = $_POST['uid']; @@ -624,10 +626,17 @@ if(!$error) $prestudent->zgvort = $_POST['zgvort']; $prestudent->zgvdatum = $_POST['zgvdatum']; $prestudent->zgvnation = $_POST['zgvnation']; + $prestudent->zgv_erfuellt = $_POST['zgv_erfuellt']; $prestudent->zgvmas_code = $_POST['zgvmas_code']; $prestudent->zgvmaort = $_POST['zgvmaort']; $prestudent->zgvmadatum = $_POST['zgvmadatum']; $prestudent->zgvmanation = $_POST['zgvmanation']; + $prestudent->zgvmas_erfuellt = $_POST['zgvmas_erfuellt']; + $prestudent->zgvdoktor_code = $_POST['zgvdoktor_code']; + $prestudent->zgvdoktorort = $_POST['zgvdoktorort']; + $prestudent->zgvdoktordatum = $_POST['zgvdoktordatum']; + $prestudent->zgvdoktornation = $_POST['zgvdoktornation']; + $prestudent->zgvdoktor_erfuellt = $_POST['zgvdoktor_erfuellt']; $prestudent->aufnahmeschluessel = $_POST['aufnahmeschluessel']; $prestudent->facheinschlberuf = ($_POST['facheinschlberuf']=='true'?true:false); $prestudent->bismelden = ($_POST['bismelden']=='true'?true:false); @@ -2308,7 +2317,7 @@ if(!$error) { if ($dokument_kurzbz === 'Sonst' && $sonst !== 0) continue; - + if($dokument_kurzbz!='') { $dok = new dokument(); @@ -2321,6 +2330,7 @@ if(!$error) $dok->new = true; if ($dokument_kurzbz === 'Sonst') $sonst++; + if(!$dok->save()) { @@ -2515,7 +2525,6 @@ if(!$error) $dokumente = explode(';',$_POST['dokumente']); $errormsg = ''; $sonst = 0; - foreach ($dokumente as $dokument_kurzbz) { if ($dokument_kurzbz === 'Sonst' && $sonst !== 0) From 624b910edd9c396d47142d7508d3a2dd7783a8ac Mon Sep 17 00:00:00 2001 From: Monika70 <46781283+Monika70@users.noreply.github.com> Date: Fri, 20 Aug 2021 15:30:37 +0200 Subject: [PATCH 008/354] ZGV Doktor und zgv_erfuellt --- include/prestudent.class.php | 76 ++++++++++++++++++++++++++++-------- 1 file changed, 59 insertions(+), 17 deletions(-) diff --git a/include/prestudent.class.php b/include/prestudent.class.php index eb8767883..8ff3a8724 100644 --- a/include/prestudent.class.php +++ b/include/prestudent.class.php @@ -44,10 +44,12 @@ class prestudent extends person public $zgvort; public $zgvdatum; public $zgvnation; + public $zgv_erfuellt; public $zgvmas_code; public $zgvmaort; public $zgvmadatum; public $zgvmanation; + public $zgvmas_erfuellt; public $ausstellungsstaat; public $aufnahmeschluessel; public $facheinschlberuf; @@ -68,6 +70,7 @@ class prestudent extends person public $zgvdoktorort; public $zgvdoktordatum; public $zgvdoktornation; + public $zgvdoktor_erfuellt; public $gsstudientyp_kurzbz='Intern'; public $aufnahmegruppe_kurzbz; public $priorisierung = null; @@ -137,10 +140,12 @@ class prestudent extends person $this->zgvort = $row->zgvort; $this->zgvdatum = $row->zgvdatum; $this->zgvnation = $row->zgvnation; + $this->zgv_erfuellt = $row->zgv_erfuellt; $this->zgvmas_code = $row->zgvmas_code; $this->zgvmaort = $row->zgvmaort; $this->zgvmadatum = $row->zgvmadatum; $this->zgvmanation = $row->zgvmanation; + $this->zgvmas_erfuellt = $row->zgvmas_erfuellt; $this->aufnahmeschluessel = $row->aufnahmeschluessel; $this->facheinschlberuf = $this->db_parse_bool($row->facheinschlberuf); $this->anmeldungreihungstest = $row->anmeldungreihungstest; @@ -161,6 +166,7 @@ class prestudent extends person $this->zgvdoktorort = $row->zgvdoktorort; $this->zgvdoktordatum = $row->zgvdoktordatum; $this->zgvdoktornation = $row->zgvdoktornation; + $this->zgvdoktor_erfuellt = $row->zgvdoktor_erfuellt; $this->gsstudientyp_kurzbz = $row->gsstudientyp_kurzbz; $this->aufnahmegruppe_kurzbz = $row->aufnahmegruppe_kurzbz; $this->priorisierung = $row->priorisierung; @@ -220,6 +226,11 @@ class prestudent extends person $this->errormsg = 'ZGV Master Ort darf nicht länger als 64 Zeichen sein.'; return false; } + if(mb_strlen($this->zgvdoktorort)>64) + { + $this->errormsg = 'ZGV Doktor Ort darf nicht länger als 64 Zeichen sein.'; + return false; + } return true; } @@ -245,12 +256,13 @@ class prestudent extends person if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE { $qry = 'BEGIN;INSERT INTO public.tbl_prestudent (aufmerksamdurch_kurzbz, person_id, - studiengang_kz, berufstaetigkeit_code, ausbildungcode, zgv_code, zgvort, zgvdatum, zgvnation, - zgvmas_code, zgvmaort, zgvmadatum, zgvmanation, aufnahmeschluessel, facheinschlberuf, + studiengang_kz, berufstaetigkeit_code, ausbildungcode, zgv_code, zgvort, zgvdatum, zgvnation, zgv_erfuellt, + zgvmas_code, zgvmaort, zgvmadatum, zgvmanation, zgvmas_erfuellt, zgvdoktor_code, zgvdoktorort, zgvdoktordatum, + zgvdoktornation,aufnahmeschluessel, facheinschlberuf, reihungstest_id, anmeldungreihungstest, reihungstestangetreten, rt_gesamtpunkte, rt_punkte1, rt_punkte2, rt_punkte3, bismelden, insertamum, insertvon, updateamum, updatevon, anmerkung, dual, ausstellungsstaat, mentor, - gsstudientyp_kurzbz, aufnahmegruppe_kurzbz, priorisierung) VALUES('. + gsstudientyp_kurzbz, aufnahmegruppe_kurzbz, priorisierung,zgvdoktor_erfuellt) VALUES('. $this->db_add_param($this->aufmerksamdurch_kurzbz).",". $this->db_add_param($this->person_id).",". $this->db_add_param($this->studiengang_kz).",". @@ -260,10 +272,16 @@ class prestudent extends person $this->db_add_param($this->zgvort).",". $this->db_add_param($this->zgvdatum).",". $this->db_add_param($this->zgvnation).",". + $this->db_add_param($this->zgv_erfuellt).",". $this->db_add_param($this->zgvmas_code).",". $this->db_add_param($this->zgvmaort).",". $this->db_add_param($this->zgvmadatum).",". $this->db_add_param($this->zgvmanation).",". + $this->db_add_param($this->zgvmas_erfuellt).",". + $this->db_add_param($this->zgvdoktor_code).",". + $this->db_add_param($this->zgvdoktorort).",". + $this->db_add_param($this->zgvdoktordatum).",". + $this->db_add_param($this->zgvdoktornation).",". $this->db_add_param($this->aufnahmeschluessel).",". $this->db_add_param($this->facheinschlberuf, FHC_BOOLEAN).",". $this->db_add_param($this->reihungstest_id).",". @@ -284,7 +302,8 @@ class prestudent extends person $this->db_add_param($this->mentor).",". $this->db_add_param($this->gsstudientyp_kurzbz).",". $this->db_add_param($this->aufnahmegruppe_kurzbz).",". - $this->db_add_param($this->priorisierung).");"; + $this->db_add_param($this->priorisierung).",". + $this->db_add_param($this->zgvdoktor_erfuellt).");"; } else { @@ -298,10 +317,16 @@ class prestudent extends person ' zgvort='.$this->db_add_param($this->zgvort).",". ' zgvdatum='.$this->db_add_param($this->zgvdatum).",". ' zgvnation='.$this->db_add_param($this->zgvnation).",". + ' zgv_erfuellt='.$this->db_add_param($this->zgv_erfuellt).",". ' zgvmas_code='.$this->db_add_param($this->zgvmas_code).",". ' zgvmaort='.$this->db_add_param($this->zgvmaort).",". ' zgvmadatum='.$this->db_add_param($this->zgvmadatum).",". ' zgvmanation='.$this->db_add_param($this->zgvmanation).",". + ' zgvmas_erfuellt='.$this->db_add_param($this->zgvmas_erfuellt).",". + ' zgvdoktor_code='.$this->db_add_param($this->zgvdoktor_code).",". + ' zgvdoktorort='.$this->db_add_param($this->zgvdoktorort).",". + ' zgvdoktordatum='.$this->db_add_param($this->zgvdoktordatum).",". + ' zgvdoktornation='.$this->db_add_param($this->zgvdoktornation).",". ' aufnahmeschluessel='.$this->db_add_param($this->aufnahmeschluessel).",". ' facheinschlberuf='.$this->db_add_param($this->facheinschlberuf, FHC_BOOLEAN).",". ' reihungstest_id='.$this->db_add_param($this->reihungstest_id).",". @@ -320,7 +345,8 @@ class prestudent extends person ' dual='.$this->db_add_param($this->dual, FHC_BOOLEAN).",". ' ausstellungsstaat='.$this->db_add_param($this->ausstellungsstaat).",". ' aufnahmegruppe_kurzbz='.$this->db_add_param($this->aufnahmegruppe_kurzbz).",". - ' priorisierung='.$this->db_add_param($this->priorisierung).' '. + ' priorisierung='.$this->db_add_param($this->priorisierung).",". + ' zgvdoktor_erfuellt='.$this->db_add_param($this->zgvdoktor_erfuellt).' '. " WHERE prestudent_id=".$this->db_add_param($this->prestudent_id).";"; } @@ -796,10 +822,12 @@ class prestudent extends person case "zgv": $stg_obj = new studiengang(); $stg_obj->load($studiengang_kz); - if($stg_obj->typ=='m') - $qry.=" AND a.rolle='Interessent' AND a.zgvmas_code is not null"; + if($stg_obj->typ=='m') + $qry.=" AND a.rolle='Interessent' AND a.zgvmas_code is not null AND a.zgvmas_erfuellt = 't'"; + elseif($stg_obj->typ=='p') + $qry.=" AND a.rolle='Interessent' AND a.zgvdoktor_code is not null AND a.zgvdoktor_erfuellt = 't'"; else - $qry.=" AND a.rolle='Interessent' AND a.zgv_code is not null"; + $qry.=" AND a.rolle='Interessent' AND a.zgv_code is not null AND a.zgv_erfuellt = 't'"; break; case "reihungstestangemeldet": $qry.=" @@ -896,10 +924,17 @@ class prestudent extends person $ps->zgvort = $row->zgvort; $ps->zgvdatum = $row->zgvdatum; $ps->zgvnation = $row->zgvnation; + $ps->zgv_erfuellt = $row->zgv_erfuellt; $ps->zgvmas_code = $row->zgvmas_code; $ps->zgvmaort = $row->zgvmaort; $ps->zgvmadatum = $row->zgvmadatum; $ps->zgvmanation = $row->zgvmanation; + $ps->zgvmas_erfuellt = $row->zgvmas_erfuellt; + $ps->zgvdoktor_code = $row->zgvdoktor_code; + $ps->zgvdoktorort = $row->zgvdoktorort; + $ps->zgvdoktordatum = $row->zgvdoktordatum; + $ps->zgvdoktornation = $row->zgvdoktornation; + $ps->zgvdoktor_erfuellt = $row->zgvdoktor_erfuellt; $ps->ausstellungsstaat = $row->ausstellungsstaat; $ps->aufnahmeschluessel = $row->aufnahmeschluessel; $ps->facheinschlberuf = $this->db_parse_bool($row->facheinschlberuf); @@ -1418,10 +1453,12 @@ class prestudent extends person $obj->zgvort = $row->zgvort; $obj->zgvdatum = $row->zgvdatum; $obj->zgvnation = $row->zgvnation; + $obj->zgv_erfuellt = $row->zgv_erfuellt; $obj->zgvmas_code = $row->zgvmas_code; $obj->zgvmaort = $row->zgvmaort; $obj->zgvmadatum = $row->zgvmadatum; $obj->zgvmanation = $row->zgvmanation; + $obj->zgvmas_erfuellt = $row->zgvmas_erfuellt; $obj->aufnahmeschluessel = $row->aufnahmeschluessel; $obj->facheinschlberuf = $this->db_parse_bool($row->facheinschlberuf); $obj->anmeldungreihungstest = $row->anmeldungreihungstest; @@ -1441,11 +1478,12 @@ class prestudent extends person $obj->zgvdoktor_code = $row->zgvdoktor_code; $obj->zgvdoktorort = $row->zgvdoktorort; $obj->zgvdoktordatum = $row->zgvdoktordatum; - $obj->zgvdoktornation = $row->zgvdoktornation; + $obj->zgvdoktornation = $row->zgvdoktornation; $obj->gsstudientyp_kurzbz = $row->gsstudientyp_kurzbz; $obj->aufnahmegruppe_kurzbz = $row->aufnahmegruppe_kurzbz; $obj->priorisierung = $row->priorisierung; - + $obj->zgvdoktor_erfuellt = $row->zgvdoktor_erfuellt; + $this->result[] = $obj; } return true; @@ -1468,7 +1506,7 @@ class prestudent extends person ( 'bachelor' => array(), 'master' => array(), - //'doktor' => array(), + 'doktor' => array(), ); $attribute = array ( @@ -2065,11 +2103,11 @@ class prestudent extends person $log->sql = $qry; $log->sqlundo = 'INSERT INTO public.tbl_prestudent( prestudent_id, aufmerksamdurch_kurzbz, studiengang_kz, berufstaetigkeit_code, ausbildungcode, - zgv_code, zgvort, zgvdatum, zgvnation, zgvmas_code, zgvmaort, zgvmadatum, zgvmanation, + zgv_code, zgvort, zgvdatum, zgvnation,zgv_erfuellt, zgvmas_code, zgvmaort, zgvmadatum, zgvmanation,zgvmas_erfuellt, aufnahmeschluessel, facheinschlberuf, anmeldungreihungstest, reihungstestangetreten, reihungstest_id, punkte, rt_punkte1, rt_punkte2, rt_punkte3, bismelden, person_id, anmerkung, mentor, ext_id_prestudent, dual, ausstellungsstaat, zgvdoktor_code, zgvdoktorort, zgvdoktordatum, zgvdoktornation, - gsstudientyp_kurzbz, aufnahmegruppe_kurzbz, priorisierung) VALUES('. + gsstudientyp_kurzbz, aufnahmegruppe_kurzbz, priorisierung,zgvdoktor_erfuellt) VALUES('. $this->db_add_param($this->prestudent_id).','. $this->db_add_param($this->aufmerksamdurch_kurzbz).','. $this->db_add_param($this->studiengang_kz).','. @@ -2079,10 +2117,12 @@ class prestudent extends person $this->db_add_param($this->zgvort).','. $this->db_add_param($this->zgvdatum).','. $this->db_add_param($this->zgvnation).','. + $this->db_add_param($this->zgv_erfuellt).','. $this->db_add_param($this->zgvmas_code).','. $this->db_add_param($this->zgvmaort).','. $this->db_add_param($this->zgvmadatum).','. $this->db_add_param($this->zgvmanation).','. + $this->db_add_param($this->zgvmas_erfuellt).','. $this->db_add_param($this->aufnahmeschluessel).','. $this->db_add_param($this->facheinschlberuf, FHC_BOOLEAN).','. $this->db_add_param($this->anmeldungreihungstest).','. @@ -2105,7 +2145,8 @@ class prestudent extends person $this->db_add_param($this->zgvdoktornation).','. $this->db_add_param($this->gsstudientyp_kurzbz).','. $this->db_add_param($this->aufnahmegruppe_kurzbz).','. - $this->db_add_param($this->priorisierung).');'; + $this->db_add_param($this->priorisierung).','. + $this->db_add_param($this->zgvdoktor_erfuellt).');'; if($log->save(true)) { @@ -2216,9 +2257,9 @@ class prestudent extends person WHERE laststatus NOT IN ('Abbrecher', 'Abgewiesener', 'Absolvent') AND priorisierung <= ".$this->db_add_param($priorisierungAbsolut, FHC_INTEGER); - if ($result = $this->db_query($qry)) + if($result = $this->db_query($qry)) { - if ($row = $this->db_fetch_object($result)) + if($row = $this->db_fetch_object($result)) { return $row->prio_relativ; } @@ -2233,8 +2274,9 @@ class prestudent extends person $this->errormsg = 'Fehler beim Laden der Daten'; return false; } - } + + } /** * Prueft, ob eine Person einen aktuellen PreStudentstatus-Eintrag besitzt, der die ZGV Master ersetzt * @param int $person_id ID der zu überprüfenden Person. From a6d83ef321ed4fdb0f777a2866426a63b825d0cc Mon Sep 17 00:00:00 2001 From: Monika70 <46781283+Monika70@users.noreply.github.com> Date: Fri, 20 Aug 2021 15:39:36 +0200 Subject: [PATCH 009/354] ZGV Doktor und zgv_erfuellt --- system/dbupdate_3.3.php | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 7e0aefe09..ba6852747 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -2567,7 +2567,6 @@ if(!@$db->db_query("SELECT zeitaufzeichnungspflichtig FROM bis.tbl_bisverwendung . "
Fix angestellte Mitarbeiter auf true gesetzt, alle anderen auf false"; } - // Spalte Priorisierung für tbl_prestudent if(!$result = @$db->db_query("SELECT priorisierung FROM public.tbl_prestudent LIMIT 1")) { @@ -2579,6 +2578,40 @@ if(!$result = @$db->db_query("SELECT priorisierung FROM public.tbl_prestudent LI echo '
public.tbl_prestudent: Spalte priorisierung hinzugefuegt'; } +// Spalte zgv_erfuellt für tbl_prestudent +if(!$result = @$db->db_query("SELECT zgv_erfuellt FROM public.tbl_prestudent LIMIT 1")) +{ + $qry = "ALTER TABLE public.tbl_prestudent ADD COLUMN zgv_erfuellt boolean default false;"; + + if(!$db->db_query($qry)) + echo 'public.tbl_prestudent: '.$db->db_last_error().'
'; + else + echo '
public.tbl_prestudent: Spalte zgv_erfuellt hinzugefuegt'; +} + +// Spalte zgvmas_erfuellt für tbl_prestudent +if(!$result = @$db->db_query("SELECT zgvmas_erfuellt FROM public.tbl_prestudent LIMIT 1")) +{ + $qry = "ALTER TABLE public.tbl_prestudent ADD COLUMN zgvmas_erfuellt boolean default false;"; + + if(!$db->db_query($qry)) + echo 'public.tbl_prestudent: '.$db->db_last_error().'
'; + else + echo '
public.tbl_prestudent: Spalte zgvmas_erfuellt hinzugefuegt'; +} + +// Spalte zgvdoktor_erfuellt für tbl_prestudent +if(!$result = @$db->db_query("SELECT zgvdoktor_erfuellt FROM public.tbl_prestudent LIMIT 1")) +{ + $qry = "ALTER TABLE public.tbl_prestudent ADD COLUMN zgvdoktor_erfuellt boolean default false;"; + + if(!$db->db_query($qry)) + echo 'public.tbl_prestudent: '.$db->db_last_error().'
'; + else + echo '
public.tbl_prestudent: Spalte zgvdoktor_erfuellt hinzugefuegt'; +} + + // Spalte lieferant in tbl_firma if(!$result = @$db->db_query("SELECT lieferant FROM public.tbl_firma LIMIT 1")) { @@ -5145,7 +5178,7 @@ $tabellen=array( "public.tbl_preoutgoing_lehrveranstaltung" => array("preoutgoing_lehrveranstaltung_id","preoutgoing_id","bezeichnung","ects","endversion","insertamum","insertvon","updateamum","updatevon","wochenstunden","unitcode"), "public.tbl_preoutgoing_preoutgoing_status" => array("status_id","preoutgoing_status_kurzbz","preoutgoing_id","datum","insertamum","insertvon","updateamum","updatevon"), "public.tbl_preoutgoing_status" => array("preoutgoing_status_kurzbz","bezeichnung"), - "public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor","zgvnation","zgvmanation","zgvdoktornation","gsstudientyp_kurzbz","aufnahmegruppe_kurzbz","udf_values","priorisierung"), + "public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor","zgvnation","zgvmanation","zgvdoktornation","gsstudientyp_kurzbz","aufnahmegruppe_kurzbz","udf_values","priorisierung","zgv_erfuellt","zgvmas_erfuellt","zgvdoktor_erfuellt"), "public.tbl_prestudentstatus" => array("prestudent_id","status_kurzbz","studiensemester_kurzbz","ausbildungssemester","datum","orgform_kurzbz","insertamum","insertvon","updateamum","updatevon","ext_id","studienplan_id","bestaetigtam","bestaetigtvon","fgm","faktiv", "anmerkung","bewerbung_abgeschicktamum","rt_stufe","statusgrund_id"), "public.tbl_raumtyp" => array("raumtyp_kurzbz","beschreibung","kosten"), "public.tbl_reihungstest" => array("reihungstest_id","studiengang_kz","ort_kurzbz","anmerkung","datum","uhrzeit","updateamum","updatevon","insertamum","insertvon","ext_id","freigeschaltet","max_teilnehmer","oeffentlich","studiensemester_kurzbz","aufnahmegruppe_kurzbz","stufe","anmeldefrist"), @@ -5299,4 +5332,4 @@ if (!$result=@$db->db_query($sql_query)) } if($error==false) echo '
Gegenpruefung fehlerfrei'; -?> +?> \ No newline at end of file From b7c22ac56fb254ed3fc556d70884dabffe45d1e0 Mon Sep 17 00:00:00 2001 From: cris-technikum Date: Mon, 6 Sep 2021 12:25:29 +0200 Subject: [PATCH 010/354] Fixed: Now including correctly config start- and enddate Signed-off-by: cris-technikum --- .../controllers/lehre/anrechnung/RequestAnrechnung.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/application/controllers/lehre/anrechnung/RequestAnrechnung.php b/application/controllers/lehre/anrechnung/RequestAnrechnung.php index 45a770cf5..306ce5841 100644 --- a/application/controllers/lehre/anrechnung/RequestAnrechnung.php +++ b/application/controllers/lehre/anrechnung/RequestAnrechnung.php @@ -80,7 +80,7 @@ class requestAnrechnung extends Auth_Controller $prestudent_id = getData($result)[0]->prestudent_id; // Check if application deadline is expired - $is_expired = self::_checkAntragDeadline( + $is_expired = self::_isExpired( $this->config->item('submit_application_start'), $this->config->item('submit_application_end'), $studiensemester_kurzbz @@ -226,10 +226,10 @@ class requestAnrechnung extends Auth_Controller * @param $start Start date for application submission. * @param $ende End date for application submission. * @param $studiensemester_kurzbz - * @return bool True if today is not during the start- and ending deadlines (= if is expired) + * @return bool True if deadline is expired * @throws Exception */ - private function _checkAntragDeadline($start, $ende, $studiensemester_kurzbz) + private function _isExpired($start, $ende, $studiensemester_kurzbz) { $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); @@ -253,8 +253,8 @@ class requestAnrechnung extends Auth_Controller $start = new DateTime($start); $ende = new DateTime($ende); - // True if today is not during the start- and ending deadlines (= if is expired) - return ($today <= $start || $today >= $ende); + // True if expired + return ($today < $start || $today > $ende); } /** From 4f46476f877ec9c851446383b4c037d117cfc846 Mon Sep 17 00:00:00 2001 From: cris-technikum Date: Mon, 6 Sep 2021 12:56:43 +0200 Subject: [PATCH 011/354] Fixed: Now entitlement checked for all STGL. Also added hasData checks. Before only the first returning STGL was checked for entitlement. Also added hasData checks to avoid using getData on NULL values. Signed-off-by: cris-technikum --- .../anrechnung/ApproveAnrechnungDetail.php | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/application/controllers/lehre/anrechnung/ApproveAnrechnungDetail.php b/application/controllers/lehre/anrechnung/ApproveAnrechnungDetail.php index d76c0d79b..209ad75b9 100644 --- a/application/controllers/lehre/anrechnung/ApproveAnrechnungDetail.php +++ b/application/controllers/lehre/anrechnung/ApproveAnrechnungDetail.php @@ -412,28 +412,31 @@ class approveAnrechnungDetail extends Auth_Controller { $result = $this->AnrechnungModel->load($anrechnung_id); - if(!$result = getData($result)[0]) + if(!hasData($result)) { show_error('Failed loading Anrechnung'); } - + $result = $this->LehrveranstaltungModel->loadWhere(array( - 'lehrveranstaltung_id' => $result->lehrveranstaltung_id + 'lehrveranstaltung_id' => getData($result)[0]->lehrveranstaltung_id )); - if(!$result = getData($result)[0]) + if(!hasData($result)) { show_error('Failed loading Lehrveranstaltung'); } // Get STGL - $result = $this->StudiengangModel->getLeitung($result->studiengang_kz); - - if($result = getData($result)[0]) + $result = $this->StudiengangModel->getLeitung(getData($result)[0]->studiengang_kz); + + if (hasData($result)) { - if ($result->uid == $this->_uid) + foreach (getData($result) as $stgl) { - return; + if ($stgl->uid == $this->_uid) + { + return; + } } } From 2d755e82b47176f2aad46db29b44c15e1b2ce269 Mon Sep 17 00:00:00 2001 From: cris-technikum Date: Tue, 7 Sep 2021 14:36:06 +0200 Subject: [PATCH 012/354] Fixed: Added DB-Update Gegenchecks for new tables / columns in DB Signed-off-by: cris-technikum --- system/dbupdate_3.3.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 2bd3afed6..b60f09de4 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -5017,7 +5017,9 @@ $tabellen=array( "lehre.tbl_abschlusspruefung" => array("abschlusspruefung_id","student_uid","vorsitz","pruefer1","pruefer2","pruefer3","abschlussbeurteilung_kurzbz","akadgrad_id","pruefungstyp_kurzbz","datum","uhrzeit","sponsion","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","note","protokoll","endezeit","pruefungsantritt_kurzbz","freigabedatum"), "lehre.tbl_abschlusspruefung_antritt" => array("pruefungsantritt_kurzbz","bezeichnung","bezeichnung_english","sort"), "lehre.tbl_akadgrad" => array("akadgrad_id","akadgrad_kurzbz","studiengang_kz","titel","geschlecht"), - "lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id"), + "lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id", "dms_id", "studiensemester_kurzbz", "anmerkung_student", "empfehlung_anrechnung"), + "lehre.tbl_anrechnungstatus" => array("status_kurzbz", "bezeichnung_mehrsprachig"), + "lehre.tbl_anrechnung_anrechnungstatus" => array("anrechnungstatus_id", "anrechnung_id", "status_kurzbz", "datum", "insertamum", "insertvon"), "lehre.tbl_anrechnung_begruendung" => array("begruendung_id","bezeichnung"), "lehre.tbl_betreuerart" => array("betreuerart_kurzbz","beschreibung","aktiv"), "lehre.tbl_ferien" => array("bezeichnung","studiengang_kz","vondatum","bisdatum"), From 4cfad06f2d459506b1d74f57e65296bc7273ca80 Mon Sep 17 00:00:00 2001 From: cris-technikum Date: Tue, 7 Sep 2021 14:37:39 +0200 Subject: [PATCH 013/354] Fixed: Added check to only add columns if no already present Signed-off-by: cris-technikum --- system/dbupdate_3.3.php | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index b60f09de4..caf562368 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4565,19 +4565,22 @@ if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants // Change genehmigt_von and begruendung_id to be NULLABLE if(!$result = @$db->db_query("SELECT dms_id FROM lehre.tbl_anrechnung")) { - $qry = " - ALTER TABLE lehre.tbl_anrechnung ADD COLUMN dms_id bigint; - ALTER TABLE lehre.tbl_anrechnung ADD COLUMN studiensemester_kurzbz varchar(6); - ALTER TABLE lehre.tbl_anrechnung ADD COLUMN anmerkung_student text; - ALTER TABLE lehre.tbl_anrechnung ADD COLUMN empfehlung_anrechnung boolean; - - ALTER TABLE lehre.tbl_anrechnung ADD CONSTRAINT fk_anrechnung_studiensemester FOREIGN KEY (studiensemester_kurzbz) REFERENCES public.tbl_studiensemester(studiensemester_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; - ALTER TABLE lehre.tbl_anrechnung ADD CONSTRAINT fk_anrechnung_dms FOREIGN KEY (dms_id) REFERENCES campus.tbl_dms(dms_id) ON DELETE RESTRICT ON UPDATE CASCADE; - - ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN genehmigt_von DROP NOT NULL; - ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN begruendung_id DROP NOT NULL; - ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN insertamum SET DEFAULT NOW(); - "; + if($db->db_num_rows($result) == 0) + { + $qry = " + ALTER TABLE lehre.tbl_anrechnung ADD COLUMN dms_id bigint; + ALTER TABLE lehre.tbl_anrechnung ADD COLUMN studiensemester_kurzbz varchar(6); + ALTER TABLE lehre.tbl_anrechnung ADD COLUMN anmerkung_student text; + ALTER TABLE lehre.tbl_anrechnung ADD COLUMN empfehlung_anrechnung boolean; + + ALTER TABLE lehre.tbl_anrechnung ADD CONSTRAINT fk_anrechnung_studiensemester FOREIGN KEY (studiensemester_kurzbz) REFERENCES public.tbl_studiensemester(studiensemester_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; + ALTER TABLE lehre.tbl_anrechnung ADD CONSTRAINT fk_anrechnung_dms FOREIGN KEY (dms_id) REFERENCES campus.tbl_dms(dms_id) ON DELETE RESTRICT ON UPDATE CASCADE; + + ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN genehmigt_von DROP NOT NULL; + ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN begruendung_id DROP NOT NULL; + ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN insertamum SET DEFAULT NOW(); + "; + } if(!$db->db_query($qry)) From 0cf782601c7f851a1cad76702ae06004d628af4c Mon Sep 17 00:00:00 2001 From: ma0068 Date: Wed, 8 Sep 2021 15:40:17 +0200 Subject: [PATCH 014/354] =?UTF-8?q?Dropdown=20f=C3=BCr=20MA-Ansicht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/tools/zeitaufzeichnung.php | 76 +++++++++++++++++++++++--- 1 file changed, 68 insertions(+), 8 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 2a7939e17..0fd1f8e91 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -1,5 +1,5 @@ * Gerald Raab * Alexei Karpenko + * Manuela Thamer */ require_once('../../../config/cis.config.inc.php'); require_once('../../../include/functions.inc.php'); @@ -55,26 +56,64 @@ if (!$db = new basis_db()) $user = get_uid(); + $passuid = false; $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); -//Wenn User Administrator ist und UID uebergeben wurde, dann die Zeitaufzeichnung +$mas = new mitarbeiter(); +$mas->getUntergebene($user, true); +$untergebenen_arr = array(); +$untergebenen_arr = $mas->untergebene; + +//Wenn User Administrator ist und UID uebergeben wurde (bzw. Vorgesetzter ist und die übergebene UID von einem MA) dann die Zeitaufzeichnung //des uebergebenen Users anzeigen if(isset($_GET['uid'])) { - if($rechte->isBerechtigt('admin') || $rechte->isBerechtigt('mitarbeiter/urlaube', null, 'suid')) + if($rechte->isBerechtigt('admin') || (in_array($_GET['uid'], $untergebenen_arr)) ) { $user = $_GET['uid']; + //$username = $_GET['uid']; $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); $passuid = true; + // echo "Adminview"; + // + // if(in_array($user, $untergebenen_arr)) + // { + // echo "
" . $user . " ist ein/e Mitarbeiterin"; + // } + // echo "
"; } + // if($rechte->isBerechtigt('admin') || $rechte->isBerechtigt('mitarbeiter/urlaube', null, 'suid')) + // { + // $user = $_GET['uid']; + // $rechte = new benutzerberechtigung(); + // $rechte->getBerechtigungen($user); + // $passuid = true; + // echo "Adminview"; + // + // // if(in_array($_GET['uid'], $untergebenen_arr)) + // // { + // // echo "
" . $_GET['uid'] . " ist ein/e Mitarbeiterin"; + // // } + // // echo "
"; + // } + // elseif(($rechte->isBerechtigt('mitarbeiter')) && in_array($_GET['uid'], $untergebenen_arr)) + // { + // echo "Vorgesetztenview"; + // $user = $_GET['uid']; + // $rechte = new benutzerberechtigung(); + // $rechte->getBerechtigungen($user); + // $passuid = true; + // } else { die($p->t('global/FuerDieseAktionBenoetigenSieAdministrationsrechte')); } } + + if($rechte->isBerechtigt('addon/casetimeGenerateXLS')) $export_xls = 'true'; else { @@ -516,7 +555,7 @@ echo ' } return true; } - + function resetProjekt() { $("#projekt").val(""); @@ -1130,8 +1169,27 @@ if($projekt->getProjekteMitarbeiter($user, true)) } echo '

'.$p->t("urlaubstool/meineZeitsperren").'

'; echo $p->t("zeitaufzeichnung/supportAnfragen"); - echo ' - + + //Dropdown timesheets Mitarbeiter + if ($untergebenen_arr) + { + $ben = new benutzer(); + echo " +

+ + "; + } + echo ' '; echo ' @@ -1499,6 +1557,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) echo ''; echo '
'; echo ''; + echo '
'; echo '

'.($alle===true?$p->t('zeitaufzeichnung/alleEintraege'):$p->t('zeitaufzeichnung/xTageAnsicht', array($angezeigte_tage))).'

'; if ($alle===true) @@ -1525,6 +1584,9 @@ if($projekt->getProjekteMitarbeiter($user, true)) //var_dump($dr->result); + + + if(count($za->result)>0) { //Uebersichtstabelle @@ -1669,8 +1731,6 @@ if($projekt->getProjekteMitarbeiter($user, true)) // echo ''.$datum->formatDatum($row->datum,'D d.m.Y').' '; //} - - } // Nach jeder Woche eine Summenzeile einfuegen und eine neue Tabelle beginnen $datumwoche = $datum_obj->formatDatum($row->datum, 'W'); From 87ba21cf950a62213b2645aa4585385a0f45a627 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Thu, 9 Sep 2021 10:08:41 +0200 Subject: [PATCH 015/354] Entfernen von Buttons und Links in der Vorgesetzten- und Adminview --- cis/private/tools/zeitaufzeichnung.php | 1227 ++++++++++++------------ 1 file changed, 605 insertions(+), 622 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 0fd1f8e91..b2fad730b 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -46,17 +46,16 @@ require_once('../../../include/studiensemester.class.php'); require_once('../../../include/benutzerberechtigung.class.php'); $sprache = getSprache(); -$p=new phrasen($sprache); +$p = new phrasen($sprache); $sprache_obj = new sprache(); $sprache_obj->load($sprache); -$sprache_index=$sprache_obj->index; +$sprache_index = $sprache_obj->index; if (!$db = new basis_db()) die($p->t("global/fehlerBeimOeffnenDerDatenbankverbindung")); $user = get_uid(); - $passuid = false; $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); @@ -65,55 +64,27 @@ $mas = new mitarbeiter(); $mas->getUntergebene($user, true); $untergebenen_arr = array(); $untergebenen_arr = $mas->untergebene; +$adminView = false; -//Wenn User Administrator ist und UID uebergeben wurde (bzw. Vorgesetzter ist und die übergebene UID von einem MA) dann die Zeitaufzeichnung -//des uebergebenen Users anzeigen -if(isset($_GET['uid'])) +//Wenn User Administrator (bzw Vorgesetzter mit UID von MA) ist und UID uebergeben wurde +//dann die Zeitaufzeichnung des uebergebenen Users anzeigen +if (isset($_GET['uid'])) { - if($rechte->isBerechtigt('admin') || (in_array($_GET['uid'], $untergebenen_arr)) ) + if ($rechte->isBerechtigt('admin') || $rechte->isBerechtigt('mitarbeiter/urlaube', null, 'suid') || + (in_array($_GET['uid'], $untergebenen_arr))) { $user = $_GET['uid']; - //$username = $_GET['uid']; $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); $passuid = true; - // echo "Adminview"; - // - // if(in_array($user, $untergebenen_arr)) - // { - // echo "
" . $user . " ist ein/e Mitarbeiterin"; - // } - // echo "
"; + $adminView = true; } - // if($rechte->isBerechtigt('admin') || $rechte->isBerechtigt('mitarbeiter/urlaube', null, 'suid')) - // { - // $user = $_GET['uid']; - // $rechte = new benutzerberechtigung(); - // $rechte->getBerechtigungen($user); - // $passuid = true; - // echo "Adminview"; - // - // // if(in_array($_GET['uid'], $untergebenen_arr)) - // // { - // // echo "
" . $_GET['uid'] . " ist ein/e Mitarbeiterin"; - // // } - // // echo "
"; - // } - // elseif(($rechte->isBerechtigt('mitarbeiter')) && in_array($_GET['uid'], $untergebenen_arr)) - // { - // echo "Vorgesetztenview"; - // $user = $_GET['uid']; - // $rechte = new benutzerberechtigung(); - // $rechte->getBerechtigungen($user); - // $passuid = true; - // } else { die($p->t('global/FuerDieseAktionBenoetigenSieAdministrationsrechte')); } } - if($rechte->isBerechtigt('addon/casetimeGenerateXLS')) $export_xls = 'true'; else { @@ -1155,166 +1126,194 @@ if($projekt->getProjekteMitarbeiter($user, true)) echo " | ".$p->t("zeitaufzeichnung/projektexport").""; echo " "; - if ($p->t("dms_link/handbuchZeitaufzeichnung")!='') - { - // An der FHTW wird ins Moodle verlinkt - if (CAMPUS_NAME == 'FH Technikum Wien') - echo '

'.$p->t("zeitaufzeichnung/handbuchZeitaufzeichnung").'

'; - else - echo '

'.$p->t("zeitaufzeichnung/handbuchZeitaufzeichnung").'

'; - } - if ($p->t("dms_link/fiktiveNormalarbeitszeit")!='') - { - echo '

'.$p->t("zeitaufzeichnung/fiktiveNormalarbeitszeit").'

'; - } - echo '

'.$p->t("urlaubstool/meineZeitsperren").'

'; - echo $p->t("zeitaufzeichnung/supportAnfragen"); - - //Dropdown timesheets Mitarbeiter - if ($untergebenen_arr) - { - $ben = new benutzer(); - echo " -

- - "; - } - echo ' - '; - echo ' - - '; - - echo ''; + echo '\n"; - echo " \n"; - echo " \n"; + + if (!$adminView) + { + if(!isset($_GET['filter']) && ($row->uid==$user && $row->datum > $sperrdatum)) + echo ''.$p->t("global/bearbeiten").''; + } + echo "\n"; + echo " \n"; + echo " \n"; if (($tagesbeginn=='' || $datum->mktime_fromtimestamp($datum->formatDatum($tagesbeginn, $format='Y-m-d H:i:s')) > $datum->mktime_fromtimestamp($datum->formatDatum($row->start, $format='Y-m-d H:i:s'))) && $row->aktivitaet_kurzbz != 'LehreExtern' && $row->aktivitaet_kurzbz != 'Ersatzruhe') $tagesbeginn = $row->start; From 3f90efaed2be5155fd6aab62e0bf8e515a3dc583 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Tue, 19 Oct 2021 14:54:39 +0200 Subject: [PATCH 040/354] Hinweis: Pause fehlt bei AllIn eingetragen --- cis/private/tools/zeitaufzeichnung.php | 32 ++++++++++++++++++-------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index fcf3dd811..724323f4c 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -762,7 +762,6 @@ echo ' else { $("#homeofficeBlock").hide(); - } } }); @@ -932,12 +931,8 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $verwendung->getVerwendungDatum($data[0],$vonCSV); foreach ($verwendung->result as $v) - // echo "homeoffice für Tag " . $vonCSV . " ". $v->homeoffice . " " . $v->bisverwendung_id . "
"; - if ($v->homeoffice) { - - // echo "homeoffice erlaubt
"; $zeit->homeoffice = true; } else @@ -1800,10 +1795,29 @@ if ($projekt->getProjekteMitarbeiter($user, true)) $tagessaldo = $tagessaldo-$pausesumme; // fehlende Pausen berechnen $pausefehlt_str = ''; - if ($tagessaldo > 19800 && $pausesumme < 1800) - $pausefehlt_str = '-- Pause fehlt oder zu kurz --'; - elseif ($tagessaldo > 18000 && $tagessaldo < 19800 && $pausesumme < $tagessaldo - 18000) - $pausefehlt_str = '-- Pause fehlt oder zu kurz --'; + + //Prüfung auf azgrelevant + $azgrelevant = false; + $verwendung = new bisverwendung(); + + $verwendung->getVerwendungDatum($user, $datum->formatDatum($tag, 'Y-m-d')); + $azgrelevant = true; + foreach ($verwendung->result as $v) + { + if ($v->azgrelevant) + { + $azgrelevant = false; + } + } + + if ($tagessaldo > 19800 && $pausesumme < 1800 && !$azgrelevant) + $pausefehlt_str = '-- Pause fehlt oder zu kurz --'; + elseif ($tagessaldo > 19800 && $pausesumme < 1800 && $azgrelevant) + $pausefehlt_str = '-- Hinweis: Pause fehlt --'; + elseif ($tagessaldo > 18000 && $tagessaldo < 19800 && $pausesumme < $tagessaldo - 18000 && !$azgrelevant) + $pausefehlt_str = '-- Pause fehlt oder zu kurz --'; + elseif ($tagessaldo > 18000 && $tagessaldo < 19800 && $pausesumme < $tagessaldo - 18000 && $azgrelevant) + $pausefehlt_str = '-- Hinweis: Pause fehlt --'; $tagessaldo = date('H:i', ($tagessaldo)); From 8033c12665e79aa569c27cd6a3025fc32a523308 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 21 Oct 2021 13:03:16 +0200 Subject: [PATCH 041/354] Added / Adapted tables for Zeitwunsch Gueltigkeit pro Studiensemester - Added table campus.tbl_zeitwunsch_gueltigkeit and migrated initial data - Added column zeitwunsch_id (as new primary key) and zeitwunsch_gueltigkeit_id to campus.tbl_zeitwunsch - Initially copied all Zeitwunsch entries -- The basic entries are joined with Zeitwunsch Gueltigkeit for actual Studiensemester -- The copied entries are joined with Zeitwunsch Gueltigkeit for next Studiensemester This is necessary because the actual Zeitwunschplan represent for some lectors the plan for the actual semester, and for some - who have already planned forward - for the next semester. --- system/dbupdate_3.3.php | 161 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 160 insertions(+), 1 deletion(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index ffdd28bc3..a454ada77 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -5493,6 +5493,164 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht } } +// Add table campus.tbl_zeitwunsch_gueltigkeit and migrate initial data +if(!$result = @$db->db_query("SELECT 1 FROM campus.tbl_zeitwunsch_gueltigkeit LIMIT 1;")) +{ + $qry = " + CREATE TABLE campus.tbl_zeitwunsch_gueltigkeit + ( + zeitwunsch_gueltigkeit_id INTEGER NOT NULL, + mitarbeiter_uid CHARACTER VARYING(32) NOT NULL, + von DATE, + bis DATE, + insertamum TIMESTAMP WITHOUT TIME ZONE, + insertvon CHARACTER VARYING(32), + updateamum TIMESTAMP WITHOUT TIME ZONE, + updatevon CHARACTER VARYING(32) + ); + + CREATE SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + + -- Add Primary Key + ALTER TABLE campus.tbl_zeitwunsch_gueltigkeit ADD CONSTRAINT pk_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id PRIMARY KEY (zeitwunsch_gueltigkeit_id); + ALTER TABLE campus.tbl_zeitwunsch_gueltigkeit ALTER COLUMN zeitwunsch_gueltigkeit_id SET DEFAULT nextval('campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id'); + + -- Add Permissions + GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id TO vilesci; + + GRANT SELECT, INSERT, UPDATE, DELETE ON campus.tbl_zeitwunsch_gueltigkeit TO vilesci; + GRANT SELECT, INSERT, UPDATE ON campus.tbl_zeitwunsch_gueltigkeit TO web; + + -- Initial data migration + INSERT INTO campus.tbl_zeitwunsch_gueltigkeit + ( + mitarbeiter_uid, + von, + bis, + insertamum, + insertvon, + updateamum, + updatevon + ) + SELECT * FROM + ( + -- Unique Mitarbeiter from Zeitwunsch Tabelle, Start and End of actual Studiensemester + SELECT DISTINCT mitarbeiter_uid, + (SELECT start FROM public.tbl_studiensemester WHERE start <= NOW() AND ende >= NOW()), + (SELECT ende FROM public.tbl_studiensemester WHERE start <= NOW() AND ende >= NOW()), + NOW(), + 'system', + NOW(), + 'system' + FROM campus.tbl_zeitwunsch + + UNION + + -- Unique Mitarbeiter from Zeitwunsch Tabelle, Start of next Studiensemester and open end + SELECT DISTINCT mitarbeiter_uid, + (SELECT start FROM public.tbl_studiensemester WHERE ende > NOW() LIMIT 1), + NULL::DATE AS \"ende\", + NOW(), + 'system', + NOW(), + 'system' + FROM campus.tbl_zeitwunsch + ORDER BY start, mitarbeiter_uid + ) AS init_data + "; + + if(!$db->db_query($qry)) + echo 'campus.tbl_zeitwunsch_gueltigkeit: '.$db->db_last_error().'
'; + else + echo 'campus.tbl_zeitwunsch_gueltigkeit: Tabelle hinzugefuegt
'; +} + +// Add column zeitwunsch_id (as new primary key) and zeitwunsch_gueltigkeit_id to campus.tbl_zeitwunsch +if (!$result = @$db->db_query("SELECT zeitwunsch_id FROM campus.tbl_zeitwunsch LIMIT 1")) +{ + $qry = " + ALTER TABLE campus.tbl_zeitwunsch DROP CONSTRAINT IF EXISTS pk_tbl_zeitwunsch; -- Drop combined pk stunde/mitarbeiter_uid/tag + + -- Add primary key and foreign key + ALTER TABLE campus.tbl_zeitwunsch ADD COLUMN zeitwunsch_id INTEGER; + ALTER TABLE campus.tbl_zeitwunsch ADD COLUMN zeitwunsch_gueltigkeit_id INTEGER; + + -- Add comments + COMMENT ON COLUMN campus.tbl_zeitwunsch.zeitwunsch_gueltigkeit_id IS 'Ordnet die Zeitwuensche einer Gueltigkeitsdauer von-bis zu'; + COMMENT ON COLUMN campus.tbl_zeitwunsch.mitarbeiter_uid IS 'DEPRECATED'; + + CREATE SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + + ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_id SET DEFAULT nextval('campus.seq_zeitwunsch_zeitwunsch_id'); + UPDATE campus.tbl_zeitwunsch SET zeitwunsch_id = nextval('campus.seq_zeitwunsch_zeitwunsch_id'); + + ALTER TABLE campus.tbl_zeitwunsch ADD CONSTRAINT pk_zeitwunsch_zeitwunsch_id PRIMARY KEY (zeitwunsch_id); + ALTER TABLE campus.tbl_zeitwunsch ADD CONSTRAINT fk_zeitwunsch_zeitwunsch_gueltigkeit_id FOREIGN KEY (zeitwunsch_gueltigkeit_id) REFERENCES campus.tbl_zeitwunsch_gueltigkeit(zeitwunsch_gueltigkeit_id) ON DELETE RESTRICT ON UPDATE CASCADE; + + -- Set initial zeitwunsch_gueltigkeit_id values to Gueltigkeitszeitraum of actual Studiensemester + UPDATE campus.tbl_zeitwunsch + SET zeitwunsch_gueltigkeit_id = ( + SELECT zeitwunsch_gueltigkeit_id + FROM campus.tbl_zeitwunsch_gueltigkeit zwg + WHERE tbl_zeitwunsch.mitarbeiter_uid = zwg.mitarbeiter_uid + AND (zwg.von <= NOW() AND zwg.bis >= NOW()) + ); + + -- Duplicate existing data and set initial zeitwunsch_gueltigkeit_id values to Gueltigkeitszeitraum of next Studiensemester + INSERT INTO campus.tbl_zeitwunsch + ( + stunde, + mitarbeiter_uid, + tag, + gewicht, + updateamum, + updatevon, + insertamum, + insertvon, + zeitwunsch_gueltigkeit_id + ) + SELECT * FROM + ( + SELECT + stunde, + mitarbeiter_uid, + tag, + gewicht, + NOW(), + 'system', + NOW(), + 'system', + ( + SELECT zeitwunsch_gueltigkeit_id + FROM campus.tbl_zeitwunsch_gueltigkeit zwg + WHERE campus.tbl_zeitwunsch.mitarbeiter_uid = zwg.mitarbeiter_uid + AND bis IS NULL + ) AS \"zeitwunsch_gueltigkeit_id\" + FROM campus.tbl_zeitwunsch + ) AS basic_zeitwunsch_data; + + -- Set primary key and foreign key NOT NULL + ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_id SET NOT NULL; + ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_gueltigkeit_id SET NOT NULL; + + -- Set permissions + GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id TO vilesci; + "; + + if(!$db->db_query($qry)) + echo 'campus.tbl_zeitwunsch: '.$db->db_last_error().'
'; + else + echo '
campus.tbl_zeitwunsch: Neue Spalte zeitwunsch_id hinzugefuegt.'; +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -5585,7 +5743,8 @@ $tabellen=array( "campus.tbl_zeitaufzeichnung_gd" => array("zeitaufzeichnung_gd_id","uid","studiensemester_kurzbz","selbstverwaltete_pause","insertamum","insertvon","updateamum","updatevon"), "campus.tbl_zeitsperre" => array("zeitsperre_id","zeitsperretyp_kurzbz","mitarbeiter_uid","bezeichnung","vondatum","vonstunde","bisdatum","bisstunde","vertretung_uid","updateamum","updatevon","insertamum","insertvon","erreichbarkeit_kurzbz","freigabeamum","freigabevon"), "campus.tbl_zeitsperretyp" => array("zeitsperretyp_kurzbz","beschreibung","farbe"), - "campus.tbl_zeitwunsch" => array("stunde","mitarbeiter_uid","tag","gewicht","updateamum","updatevon","insertamum","insertvon"), + "campus.tbl_zeitwunsch" => array("stunde","mitarbeiter_uid","tag","gewicht","updateamum","updatevon","insertamum","insertvon", "zeitwunsch_id", "zeitwunsch_gueltigkeit_id"), + "campus.tbl_zeitwunsch_gueltigkeit" => array("zeitwunsch_gueltigkeit_id","mitarbeiter_uid","von","bis","insertamum","insertvon", "updateamum","updatevon"), "fue.tbl_aktivitaet" => array("aktivitaet_kurzbz","beschreibung","sort"), "fue.tbl_aufwandstyp" => array("aufwandstyp_kurzbz","bezeichnung"), "fue.tbl_projekt" => array("projekt_kurzbz","nummer","titel","beschreibung","beginn","ende","oe_kurzbz","budget","farbe","aufwandstyp_kurzbz","ressource_id","anzahl_ma","aufwand_pt","projekt_id","projekttyp_kurzbz"), From 4fb4b72b26c0cee617c9a856c0d36932a47c3c63 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Fri, 22 Oct 2021 10:39:48 +0200 Subject: [PATCH 042/354] =?UTF-8?q?Hinweis-=20und=20Warnsymbol=20f=C3=BCr?= =?UTF-8?q?=20Pause=20fehlt=20erg=C3=A4nzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/tools/zeitaufzeichnung.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 1d4bb418d..cfa2105cf 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -1846,6 +1846,8 @@ if ($projekt->getProjekteMitarbeiter($user, true)) $verwendung->getVerwendungDatum($user, $datum->formatDatum($tag, 'Y-m-d')); $azgrelevant = true; + $linkExclamation = APP_ROOT. 'skin/images/exclamation.png'; + $linkInformation = APP_ROOT. 'skin/images/information.png'; foreach ($verwendung->result as $v) { if ($v->azgrelevant) @@ -1855,14 +1857,13 @@ if ($projekt->getProjekteMitarbeiter($user, true)) } if ($tagessaldo > 19800 && $pausesumme < 1800 && !$azgrelevant) - $pausefehlt_str = '-- Pause fehlt oder zu kurz --'; + $pausefehlt_str = ' -- Pause fehlt oder zu kurz --'; elseif ($tagessaldo > 19800 && $pausesumme < 1800 && $azgrelevant) - $pausefehlt_str = '-- Hinweis: Pause fehlt --'; + $pausefehlt_str = ' -- Pause fehlt --'; elseif ($tagessaldo > 18000 && $tagessaldo < 19800 && $pausesumme < $tagessaldo - 18000 && !$azgrelevant) - $pausefehlt_str = '-- Pause fehlt oder zu kurz --'; + $pausefehlt_str = ' -- Pause fehlt oder zu kurz --'; elseif ($tagessaldo > 18000 && $tagessaldo < 19800 && $pausesumme < $tagessaldo - 18000 && $azgrelevant) - $pausefehlt_str = '-- Hinweis: Pause fehlt --'; - + $pausefehlt_str = ' -- Pause fehlt --'; $tagessaldo = date('H:i', ($tagessaldo)); $colspan = ($za_simple)?6:8; From e6ba6f9beabc74c3b8a3115653b0fbf7a1e48b80 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Fri, 22 Oct 2021 10:44:54 +0200 Subject: [PATCH 043/354] dropdown im fas angepasst --- content/student/studentprojektarbeit.js.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/student/studentprojektarbeit.js.php b/content/student/studentprojektarbeit.js.php index 66f52f15c..c30f7ea1c 100644 --- a/content/student/studentprojektarbeit.js.php +++ b/content/student/studentprojektarbeit.js.php @@ -652,11 +652,11 @@ function StudentProjektarbeitNeu() StudentProjektarbeitResetFields(); StudentProjektarbeitDetailDisableFields(false); StudentProjektbetreuerDisableFields(true); - var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value; + var student_uid = document.getElementById('student-detail-textbox-uid').value; //Lehrveranstaltung DropDown laden var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung'); - url='rdf/lehrveranstaltung.rdf.php?stg_kz='+stg_kz+"&projektarbeit=true&"+gettimestamp(); + url='rdf/lehrveranstaltung.rdf.php?uid='+student_uid+"&projektarbeit=true&"+gettimestamp(); //Alte DS entfernen var oldDatasources = LvDropDown.database.GetDataSources(); From 4e9eb12a71dccafce527114c6759bffe630cd29b Mon Sep 17 00:00:00 2001 From: ma0068 Date: Sat, 23 Oct 2021 10:40:05 +0200 Subject: [PATCH 044/354] =?UTF-8?q?Detailsicht:=20Parameteruebergabe=20uid?= =?UTF-8?q?=20f=C3=BCr=20Projekt-=20und=20Projekt=C3=BCbersichtexport?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/tools/zeitaufzeichnung.php | 20 +++++++++++-------- .../tools/zeitaufzeichnung_projektliste.php | 11 +++++++--- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index cfa2105cf..10d2efdd7 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -182,7 +182,7 @@ if(isset($_POST['export'])) } //CSV export für Übersicht zugeteilter Projekte - Konflikt mit normalen HTML headern deshalb weiter vorne -if(isset($_POST['projektübersichtexport'])) +if(isset($_GET['projektübersichtexport'])) { exportProjectOverviewAsCSV($user, ','); } @@ -1275,13 +1275,19 @@ if ($projekt->getProjekteMitarbeiter($user, true)) echo "
'; - echo ''; - if (isset($_GET['projektexport'])) - { - $projektexpurl = dirname($_SERVER["PHP_SELF"]) .'/zeitaufzeichnung_projektliste.php'; - $aktjahr = intval(date("Y")); - $aktmonat = intval(date("m")) - 1; - $jahreanz = 3; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - if ($passuid) - echo ''; - echo ''; - echo ''; - echo ''; - } - - //Formular - echo '
'; - -/* echo '

'.$p->t('zeitaufzeichnung/projektexport').''.$p->t('zeitaufzeichnung/monat').' '.$p->t('zeitaufzeichnung/jahr').'

- - +
'; - echo '';*/ - if (isset($_GET['csvimport'])) - { - echo ''; - echo ''; - echo ''; - echo ''; - } + if ($p->t("dms_link/handbuchZeitaufzeichnung")!='') + { + // An der FHTW wird ins Moodle verlinkt + if (CAMPUS_NAME == 'FH Technikum Wien') + echo '

'.$p->t("zeitaufzeichnung/handbuchZeitaufzeichnung").'

'; else - echo ''; + echo '

'.$p->t("zeitaufzeichnung/handbuchZeitaufzeichnung").'

'; + } + if ($p->t("dms_link/fiktiveNormalarbeitszeit")!='') + { + echo '

'.$p->t("zeitaufzeichnung/fiktiveNormalarbeitszeit").'

'; + } + echo '

'.$p->t("urlaubstool/meineZeitsperren").'

'; + echo $p->t("zeitaufzeichnung/supportAnfragen"); - if (isset($_GET['csvexport'])) + //Dropdown timesheets Mitarbeiter + if ($untergebenen_arr) + { + $ben = new benutzer(); + echo " +

+ + '; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - - if (isset($_GET['projektübersichtexport'])) - { - - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - - } - - //Aktivitaet - echo ''; - echo ''; - - - if($za_simple >= 0) + echo ""; + echo ""; + } + echo ' +

CSV-Import
Informationen zum Format der CSV-Datei s. Leitfaden Arbeitszeitaufzeichnung


CSV-Export'.$p->t('zeitaufzeichnung/startdatum').' '.$p->t('zeitaufzeichnung/enddatum').'


CSV-Export

'.$p->t("zeitaufzeichnung/aktivitaet").''; - //if ($za_simple == 1) - $qry = "SELECT * FROM fue.tbl_aktivitaet where aktivitaet_kurzbz in (".$activities_str.") ORDER by sort,beschreibung"; - //else - // $qry = "SELECT * FROM fue.tbl_aktivitaet where sort != 5 or sort is null ORDER by sort,beschreibung"; - if($result = $db->db_query($qry)) - { - echo ''; } - echo '
'; + echo ' + + '; - if (!$za_simple) - { - echo ''; - } - echo ''; - if (!$za_simple) - { - echo ' - '; - } - echo ' - - - - - '; + if (!$za_simple) + { + echo ''; + } + echo ''; + if (!$za_simple) + { + echo ' + '; + } + echo ' + + + + + '; } /** From ab4c7ee19480e89a97f6a564fd813e6f8602ab9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 15 Sep 2021 18:24:42 +0200 Subject: [PATCH 016/354] =?UTF-8?q?Limit=20beim=20Pr=C3=BCfen=20der=20Spal?= =?UTF-8?q?tenverf=C3=BCgbarkeit=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- system/dbupdate_3.3.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index caf562368..a12729383 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4563,7 +4563,7 @@ if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants // Add column dms_id, studiensemester_kurzbz, anmerkung_student und empfehlung_anrechnung // Change genehmigt_von and begruendung_id to be NULLABLE -if(!$result = @$db->db_query("SELECT dms_id FROM lehre.tbl_anrechnung")) +if(!$result = @$db->db_query("SELECT dms_id FROM lehre.tbl_anrechnung LIMIT 1")) { if($db->db_num_rows($result) == 0) { @@ -4572,10 +4572,10 @@ if(!$result = @$db->db_query("SELECT dms_id FROM lehre.tbl_anrechnung")) ALTER TABLE lehre.tbl_anrechnung ADD COLUMN studiensemester_kurzbz varchar(6); ALTER TABLE lehre.tbl_anrechnung ADD COLUMN anmerkung_student text; ALTER TABLE lehre.tbl_anrechnung ADD COLUMN empfehlung_anrechnung boolean; - + ALTER TABLE lehre.tbl_anrechnung ADD CONSTRAINT fk_anrechnung_studiensemester FOREIGN KEY (studiensemester_kurzbz) REFERENCES public.tbl_studiensemester(studiensemester_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE lehre.tbl_anrechnung ADD CONSTRAINT fk_anrechnung_dms FOREIGN KEY (dms_id) REFERENCES campus.tbl_dms(dms_id) ON DELETE RESTRICT ON UPDATE CASCADE; - + ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN genehmigt_von DROP NOT NULL; ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN begruendung_id DROP NOT NULL; ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN insertamum SET DEFAULT NOW(); From 9d59fcbfbfda3c01a8c31381db29b1bba9f3cf1a Mon Sep 17 00:00:00 2001 From: Monika70 <46781283+Monika70@users.noreply.github.com> Date: Wed, 22 Sep 2021 10:34:06 +0200 Subject: [PATCH 017/354] change of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64) change Datatype of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64) --- system/dbupdate_3.3.php | 246 ++++++++++++++++++++++++++-------------- 1 file changed, 158 insertions(+), 88 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index ba6852747..1f7fff366 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -504,6 +504,38 @@ if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_pruefungstyp WHERE pruefung } } +// change Datatype of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64) +if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='lehre' AND TABLE_NAME='tbl_note' AND COLUMN_NAME = 'bezeichnung' AND character_maximum_length < 64")) +{ + if($db->db_num_rows($result)>0) + { + $qry = " + ALTER TABLE lehre.tbl_note ALTER COLUMN bezeichnung TYPE varchar(64); + "; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_note '.$db->db_last_error().'
'; + else + echo '
Spalte bezeichnung in lehre.tbl_note von kleiner varchar(64) auf varchar(64) geändert
'; + } +} + +// change Datatype of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64) +if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='lehre' AND TABLE_NAME='tbl_note' AND COLUMN_NAME = 'bezeichnung' AND character_maximum_length < 64")) +{ + if($db->db_num_rows($result)>0) + { + $qry = " + ALTER TABLE lehre.tbl_note ALTER COLUMN bezeichnung TYPE varchar(64); + "; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_note '.$db->db_last_error().'
'; + else + echo '
Spalte bezeichnung in lehre.tbl_note von kleiner varchar(64) auf varchar(64) geändert
'; + } +} + // Note "entschuldigt" hinzufügen if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'en' AND (bezeichnung = 'entschuldigt' OR bezeichnung = 'Entschuldigt');")) { @@ -532,6 +564,46 @@ if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'ue' } } +// Note "intern angerechnet" hinzufügen +if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'iar' AND (bezeichnung = 'intern angerechnet' OR bezeichnung = 'Intern angerechnet');")) +{ + if($db->db_num_rows($result) == 0) + { + $qry = " + INSERT INTO + lehre.tbl_note(note, bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre, offiziell, bezeichnung_mehrsprachig, lkt_ueberschreibbar) + VALUES( + (SELECT max(note)+1 FROM lehre.tbl_note),'intern angerechnet', 'iar', NULL, TRUE, NULL, TRUE, FALSE, FALSE, '{\"intern angerechnet\",\"internally credited\"}', FALSE + ); + "; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_note: '.$db->db_last_error().'
'; + else + echo '
lehre.tbl_note: Note intern angerechnet hinzugefuegt!
'; + } +} + +// Note "nicht zugelassen" hinzufügen +if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'nz' AND (bezeichnung = 'nicht zugelassen' OR bezeichnung = 'Nicht zugelassen');")) +{ + if($db->db_num_rows($result) == 0) + { + $qry = " + INSERT INTO + lehre.tbl_note(note, bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre, offiziell, bezeichnung_mehrsprachig, lkt_ueberschreibbar) + VALUES( + (SELECT max(note)+1 FROM lehre.tbl_note), 'nicht zugelassen', 'nz', NULL, TRUE, NULL, TRUE, FALSE, FALSE, '{\"nicht zugelassen\",\"not admitted\"}', FALSE + ); + "; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_note: '.$db->db_last_error().'
'; + else + echo '
lehre.tbl_note: Note nicht zugelassen hinzugefuegt!
'; + } +} + // Spalte offiziell in lehre.tbl_note if(!$result = @$db->db_query("SELECT offiziell FROM lehre.tbl_note LIMIT 1;")) { @@ -1315,7 +1387,7 @@ if (!$result = @$db->db_query("SELECT 1 FROM system.tbl_verarbeitungstaetigkeit" } // system.tbl_log.taetigkeit_kurzbz -if (!$result = @$db->db_query("SELECT taetigkeit_kurzbz FROM system.tbl_log")) +if (!$result = @$db->db_query("SELECT taetigkeit_kurzbz FROM system.tbl_log LIMIT 1")) { $qry = " ALTER TABLE system.tbl_log ADD COLUMN taetigkeit_kurzbz varchar(32); @@ -2567,6 +2639,7 @@ if(!@$db->db_query("SELECT zeitaufzeichnungspflichtig FROM bis.tbl_bisverwendung . "
Fix angestellte Mitarbeiter auf true gesetzt, alle anderen auf false"; } + // Spalte Priorisierung für tbl_prestudent if(!$result = @$db->db_query("SELECT priorisierung FROM public.tbl_prestudent LIMIT 1")) { @@ -2578,40 +2651,6 @@ if(!$result = @$db->db_query("SELECT priorisierung FROM public.tbl_prestudent LI echo '
public.tbl_prestudent: Spalte priorisierung hinzugefuegt'; } -// Spalte zgv_erfuellt für tbl_prestudent -if(!$result = @$db->db_query("SELECT zgv_erfuellt FROM public.tbl_prestudent LIMIT 1")) -{ - $qry = "ALTER TABLE public.tbl_prestudent ADD COLUMN zgv_erfuellt boolean default false;"; - - if(!$db->db_query($qry)) - echo 'public.tbl_prestudent: '.$db->db_last_error().'
'; - else - echo '
public.tbl_prestudent: Spalte zgv_erfuellt hinzugefuegt'; -} - -// Spalte zgvmas_erfuellt für tbl_prestudent -if(!$result = @$db->db_query("SELECT zgvmas_erfuellt FROM public.tbl_prestudent LIMIT 1")) -{ - $qry = "ALTER TABLE public.tbl_prestudent ADD COLUMN zgvmas_erfuellt boolean default false;"; - - if(!$db->db_query($qry)) - echo 'public.tbl_prestudent: '.$db->db_last_error().'
'; - else - echo '
public.tbl_prestudent: Spalte zgvmas_erfuellt hinzugefuegt'; -} - -// Spalte zgvdoktor_erfuellt für tbl_prestudent -if(!$result = @$db->db_query("SELECT zgvdoktor_erfuellt FROM public.tbl_prestudent LIMIT 1")) -{ - $qry = "ALTER TABLE public.tbl_prestudent ADD COLUMN zgvdoktor_erfuellt boolean default false;"; - - if(!$db->db_query($qry)) - echo 'public.tbl_prestudent: '.$db->db_last_error().'
'; - else - echo '
public.tbl_prestudent: Spalte zgvdoktor_erfuellt hinzugefuegt'; -} - - // Spalte lieferant in tbl_firma if(!$result = @$db->db_query("SELECT lieferant FROM public.tbl_firma LIMIT 1")) { @@ -4670,7 +4709,7 @@ if ($result = @$db->db_query("SELECT 1 FROM campus.tbl_dms_kategorie_gruppe WHER } } -// Add table anrechnung_status +// Add table anrechnungstatus if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnungstatus LIMIT 1;")) { $qry = " @@ -4698,42 +4737,6 @@ if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnungstatus LIMIT 1;" echo ' lehre.tbl_anrechnungstatus: Tabelle hinzugefuegt
'; } -// GRANT INSERT, UPDATE, DELETE ON TABLE lehre.tbl_anrechnungstatus TO web; -$qry = 'GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE lehre.tbl_anrechnungstatus TO web;'; -if (!$db->db_query($qry)) - echo 'lehre.tbl_anrechnungstatus '.$db->db_last_error().'
'; -else - echo '
Granted privileges to web on lehre.tbl_anrechnungstatus'; - - -// SEQUENCE seq_anrechnungstatus_status_kurzbz -if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'seq_anrechnungstatus_status_kurzbz'")) -{ - if ($db->db_num_rows($result) == 0) - { - $qry = ' - CREATE SEQUENCE lehre.seq_anrechnungstatus_status_kurzbz - START WITH 1 - INCREMENT BY 1 - NO MAXVALUE - NO MINVALUE - CACHE 1; - '; - - if(!$db->db_query($qry)) - echo 'lehre.seq_anrechnungstatus_status_kurzbz '.$db->db_last_error().'
'; - else - echo '
Created sequence: lehre.seq_anrechnungstatus_status_kurzbz'; - - // GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_anrechnungstatus_status_kurzbz_seq to web; - $qry = 'GRANT SELECT, UPDATE ON SEQUENCE lehre.seq_anrechnungstatus_status_kurzbz TO web;'; - if (!$db->db_query($qry)) - echo 'lehre.seq_anrechnungstatus_status_kurzbz '.$db->db_last_error().'
'; - else - echo '
Granted privileges to vilesci on lehre.seq_anrechnungstatus_status_kurzbz'; - } -} - // Add table anrechnung_anrechnungstatus // Für bestehende genehmigte Anrechnungsanträge wird ein Eintrag mit dem Status 'approved' angelegt if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnung_anrechnungstatus LIMIT 1;")) @@ -4763,9 +4766,10 @@ if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnung_anrechnungstatu INSERT INTO lehre.tbl_anrechnung_anrechnungstatus(anrechnung_id, status_kurzbz) SELECT anrechnung_id, 'approved' as status_kurzbz FROM lehre.tbl_anrechnung WHERE genehmigt_von is not null; - GRANT SELECT ON lehre.tbl_anrechnung_anrechnungstatus TO web; + GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_anrechnung_anrechnungstatus TO web; GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_anrechnung_anrechnungstatus TO vilesci; GRANT SELECT, UPDATE ON lehre.seq_anrechnung_anrechnungstatus_anrechnungstatus_id TO vilesci; + GRANT SELECT, UPDATE ON lehre.seq_anrechnung_anrechnungstatus_anrechnungstatus_id TO web; "; if(!$db->db_query($qry)) @@ -4829,6 +4833,19 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht } } +// Add permission to create Anrechnung +if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'lehre/anrechnung_anlegen';")) +{ + if($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('lehre/anrechnung_anlegen', 'Anrechnung anlegen');"; + + if(!$db->db_query($qry)) + echo 'system.tbl_berechtigung '.$db->db_last_error().'
'; + else + echo ' system.tbl_berechtigung: Added permission for lehre/anrechnung_anlegen
'; + } +} // INSERT,DELETE,UPDATE Berechtigung für tbl_dokumentprestudent hinzufügen if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants WHERE table_name='tbl_dokumentprestudent' AND table_schema='public' AND grantee='web' AND privilege_type in ('INSERT','DELETE','UPDATE')")) @@ -4853,13 +4870,11 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_zgvpruefungstatus LIMIT 1 status_kurzbz character varying(32), bezeichnung character varying(256) ); - ALTER TABLE public.tbl_zgvpruefungstatus ADD CONSTRAINT status_kurzbz PRIMARY KEY (status_kurzbz); INSERT INTO public.tbl_zgvpruefungstatus(status_kurzbz, bezeichnung) VALUES('pruefung_stg', 'Wird vom Studiengang geprüft'); INSERT INTO public.tbl_zgvpruefungstatus(status_kurzbz, bezeichnung) VALUES('rejected', 'Vom Studiengang abgelehnt'); INSERT INTO public.tbl_zgvpruefungstatus(status_kurzbz, bezeichnung) VALUES('accepted', 'Vom Studiengang akzeptiert'); INSERT INTO public.tbl_zgvpruefungstatus(status_kurzbz, bezeichnung) VALUES('accepted_pruefung', 'Vom Studiengang akzeptiert mit Prüfung'); - GRANT SELECT, INSERT, UPDATE, DELETE ON public.tbl_zgvpruefungstatus TO vilesci; GRANT SELECT ON public.tbl_zgvpruefungstatus TO web; "; @@ -4883,8 +4898,7 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_zgvpruefung LIMIT 1;")) updateamum timestamp without time zone, updatevon character varying(32) ); - - CREATE SEQUENCE public.tbl_zgvpruefung_id_seq + CREATE SEQUENCE public.tbl_zgvpruefung_id_seq INCREMENT BY 1 NO MAXVALUE NO MINVALUE @@ -4892,11 +4906,9 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_zgvpruefung LIMIT 1;")) ALTER TABLE public.tbl_zgvpruefung ADD CONSTRAINT pk_tbl_zgvpruefung PRIMARY KEY (zgvpruefung_id); ALTER TABLE public.tbl_zgvpruefung ALTER COLUMN zgvpruefung_id SET DEFAULT nextval('public.tbl_zgvpruefung_id_seq'); ALTER TABLE public.tbl_zgvpruefung ADD CONSTRAINT fk_tbl_zgvpruefung_student FOREIGN KEY (prestudent_id) REFERENCES public.tbl_prestudent (prestudent_id) ON DELETE RESTRICT ON UPDATE CASCADE; - GRANT SELECT, UPDATE ON public.tbl_zgvpruefung_id_seq TO vilesci; GRANT SELECT, INSERT, UPDATE, DELETE ON public.tbl_zgvpruefung TO vilesci; GRANT SELECT ON public.tbl_zgvpruefung TO web; - "; if(!$db->db_query($qry)) @@ -4916,18 +4928,15 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_zgvpruefungstatus_status status character varying(32), datum timestamp without time zone DEFAULT now() ); - - CREATE SEQUENCE public.tbl_zgvpruefungstatus_status_id_seq + CREATE SEQUENCE public.tbl_zgvpruefungstatus_status_id_seq INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; - ALTER TABLE public.tbl_zgvpruefungstatus_status ADD CONSTRAINT pk_tbl_zgvpruefungstatus_status PRIMARY KEY (zgv_pruefung_status_id); ALTER TABLE public.tbl_zgvpruefungstatus_status ALTER COLUMN zgv_pruefung_status_id SET DEFAULT nextval('tbl_zgvpruefungstatus_status_id_seq'); ALTER TABLE public.tbl_zgvpruefungstatus_status ADD CONSTRAINT fk_tbl_zgvpruefung_zgvpruefung FOREIGN KEY (zgvpruefung_id) REFERENCES public.tbl_zgvpruefung (zgvpruefung_id) ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE public.tbl_zgvpruefungstatus_status ADD CONSTRAINT fk_tbl_zgvpruefung_status FOREIGN KEY (status) REFERENCES public.tbl_zgvpruefungstatus (status_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; - GRANT SELECT, UPDATE ON public.tbl_zgvpruefungstatus_status_id_seq TO vilesci; GRANT SELECT, INSERT, UPDATE, DELETE ON public.tbl_zgvpruefungstatus_status TO vilesci; GRANT SELECT ON public.tbl_zgvpruefungstatus_status TO web; @@ -4939,8 +4948,7 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_zgvpruefungstatus_status echo ' public.tbl_zgvpruefungstatus_status: Tabelle hinzugefuegt
'; } - -// Add index to system.tbl_log +// Add index to lehre.tbl_pruefung if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_tbl_pruefung_student_uid'")) { if ($db->db_num_rows($result) == 0) @@ -4966,6 +4974,67 @@ if ($result = @$db->db_query("SELECT 1 FROM public.tbl_buchungstyp WHERE buchung echo ' public.tbl_buchungstyp: Added buchungstyp "ZuschussIO"
'; } } +//Add Column statusgrund_kurzbz to public.tbl_status_grund +if(!@$db->db_query("SELECT statusgrund_kurzbz FROM public.tbl_status_grund LIMIT 1")) +{ + $qry = "ALTER TABLE public.tbl_status_grund ADD COLUMN statusgrund_kurzbz varchar(32); + ALTER TABLE public.tbl_status_grund ADD CONSTRAINT uk_tbl_statusgrund_kurzbz UNIQUE (statusgrund_kurzbz); + "; + + if(!$db->db_query($qry)) + echo 'public.tbl_status_grund '.$db->db_last_error().'
'; + else + echo '
Neue Spalte statusgrund_kurzbz zu Tabelle public.tbl_status_grund hinzugefügt'; +} + +// INDEX idx_anrechnung_anrechnung_status_anrechnung_id +if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'idx_anrechnung_anrechnung_status_anrechnung_id'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = 'CREATE INDEX idx_anrechnung_anrechnung_status_anrechnung_id ON lehre.tbl_anrechnung_anrechnungstatus USING btree (anrechnung_id)'; + if (!$db->db_query($qry)) + echo 'idx_anrechnung_anrechnung_status_anrechnung_id '.$db->db_last_error().'
'; + else + echo '
Created Index idx_anrechnung_anrechnung_status_anrechnung_id'; + } +} + +// Add Table lehre.tbl_lehrmodus +if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_lehrmodus LIMIT 1;")) +{ + $qry = " + CREATE TABLE lehre.tbl_lehrmodus + ( + lehrmodus_kurzbz varchar(32) NOT NULL, + bezeichnung_mehrsprachig varchar(255)[], + aktiv boolean DEFAULT true + ); + ALTER TABLE lehre.tbl_lehrmodus ADD CONSTRAINT pk_lehrmodus PRIMARY KEY (lehrmodus_kurzbz); + INSERT INTO lehre.tbl_lehrmodus(lehrmodus_kurzbz, bezeichnung_mehrsprachig) VALUES('regulaer', '{\"regulaer\",\"regular\"}'); + INSERT INTO lehre.tbl_lehrmodus(lehrmodus_kurzbz, bezeichnung_mehrsprachig) VALUES('standardisiert', '{\"standardisiert\",\"standardized\"}'); + GRANT SELECT ON lehre.tbl_lehrmodus TO web; + GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_lehrmodus TO vilesci; + "; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_lehrmodus: '.$db->db_last_error().'
'; + else + echo ' lehre.tbl_lehrmodus: Tabelle hinzugefuegt
'; +} + +//Add Column lehrmodus_kurzbz to lehre.tbl_lehrveranstaltung +if(!@$db->db_query("SELECT lehrmodus_kurzbz FROM lehre.tbl_lehrveranstaltung LIMIT 1")) +{ + $qry = "ALTER TABLE lehre.tbl_lehrveranstaltung ADD COLUMN lehrmodus_kurzbz varchar(32); + ALTER TABLE lehre.tbl_lehrveranstaltung ADD CONSTRAINT fk_lehrveranstaltung_lehrmodus FOREIGN KEY (lehrmodus_kurzbz) REFERENCES lehre.tbl_lehrmodus(lehrmodus_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT; + "; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_lehrveranstaltung '.$db->db_last_error().'
'; + else + echo '
Spalte lehrmodus_kurzbz in lehre.tbl_lehrveranstaltung hinzugefügt'; +} // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -5084,8 +5153,9 @@ $tabellen=array( "lehre.tbl_lehrform" => array("lehrform_kurzbz","bezeichnung","verplanen","bezeichnung_kurz","bezeichnung_lang"), "lehre.tbl_lehrfunktion" => array("lehrfunktion_kurzbz","beschreibung","standardfaktor","sort"), "lehre.tbl_lehrmittel" => array("lehrmittel_kurzbz","beschreibung","ort_kurzbz"), + "lehre.tbl_lehrmodus" => array("lehrmodus_kurzbz","bezeichnung_mehrsprachig","aktiv"), "lehre.tbl_lehrtyp" => array("lehrtyp_kurzbz","bezeichnung"), - "lehre.tbl_lehrveranstaltung" => array("lehrveranstaltung_id","kurzbz","bezeichnung","lehrform_kurzbz","studiengang_kz","semester","sprache","ects","semesterstunden","anmerkung","lehre","lehreverzeichnis","aktiv","planfaktor","planlektoren","planpersonalkosten","plankostenprolektor","koordinator","sort","zeugnis","projektarbeit","updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung_english","orgform_kurzbz","incoming","lehrtyp_kurzbz","oe_kurzbz","raumtyp_kurzbz","anzahlsemester","semesterwochen","lvnr","farbe","semester_alternativ","old_lehrfach_id","sws","lvs","alvs","lvps","las","benotung","lvinfo","lehrauftrag"), + "lehre.tbl_lehrveranstaltung" => array("lehrveranstaltung_id","kurzbz","bezeichnung","lehrform_kurzbz","studiengang_kz","semester","sprache","ects","semesterstunden","anmerkung","lehre","lehreverzeichnis","aktiv","planfaktor","planlektoren","planpersonalkosten","plankostenprolektor","koordinator","sort","zeugnis","projektarbeit","updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung_english","orgform_kurzbz","incoming","lehrtyp_kurzbz","oe_kurzbz","raumtyp_kurzbz","anzahlsemester","semesterwochen","lvnr","farbe","semester_alternativ","old_lehrfach_id","sws","lvs","alvs","lvps","las","benotung","lvinfo","lehrauftrag","lehrmodus_kurzbz"), "lehre.tbl_lehrveranstaltung_kompatibel" => array("lehrveranstaltung_id","lehrveranstaltung_id_kompatibel"), "lehre.tbl_lvangebot" => array("lvangebot_id","lehrveranstaltung_id","studiensemester_kurzbz","gruppe_kurzbz","incomingplaetze","gesamtplaetze","anmeldefenster_start","anmeldefenster_ende","insertamum","insertvon","updateamum","updatevon"), "lehre.tbl_lvregel" => array("lvregel_id","lvregeltyp_kurzbz","operator","parameter","lvregel_id_parent","lehrveranstaltung_id","studienplan_lehrveranstaltung_id","insertamum","insertvon","updateamum","updatevon"), @@ -5178,7 +5248,7 @@ $tabellen=array( "public.tbl_preoutgoing_lehrveranstaltung" => array("preoutgoing_lehrveranstaltung_id","preoutgoing_id","bezeichnung","ects","endversion","insertamum","insertvon","updateamum","updatevon","wochenstunden","unitcode"), "public.tbl_preoutgoing_preoutgoing_status" => array("status_id","preoutgoing_status_kurzbz","preoutgoing_id","datum","insertamum","insertvon","updateamum","updatevon"), "public.tbl_preoutgoing_status" => array("preoutgoing_status_kurzbz","bezeichnung"), - "public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor","zgvnation","zgvmanation","zgvdoktornation","gsstudientyp_kurzbz","aufnahmegruppe_kurzbz","udf_values","priorisierung","zgv_erfuellt","zgvmas_erfuellt","zgvdoktor_erfuellt"), + "public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor","zgvnation","zgvmanation","zgvdoktornation","gsstudientyp_kurzbz","aufnahmegruppe_kurzbz","udf_values","priorisierung"), "public.tbl_prestudentstatus" => array("prestudent_id","status_kurzbz","studiensemester_kurzbz","ausbildungssemester","datum","orgform_kurzbz","insertamum","insertvon","updateamum","updatevon","ext_id","studienplan_id","bestaetigtam","bestaetigtvon","fgm","faktiv", "anmerkung","bewerbung_abgeschicktamum","rt_stufe","statusgrund_id"), "public.tbl_raumtyp" => array("raumtyp_kurzbz","beschreibung","kosten"), "public.tbl_reihungstest" => array("reihungstest_id","studiengang_kz","ort_kurzbz","anmerkung","datum","uhrzeit","updateamum","updatevon","insertamum","insertvon","ext_id","freigeschaltet","max_teilnehmer","oeffentlich","studiensemester_kurzbz","aufnahmegruppe_kurzbz","stufe","anmeldefrist"), @@ -5186,7 +5256,7 @@ $tabellen=array( "public.tbl_rt_person" => array("rt_person_id","person_id","rt_id","studienplan_id","anmeldedatum","teilgenommen","ort_kurzbz","punkte","insertamum","insertvon","updateamum","updatevon"), "public.tbl_rt_studienplan" => array("reihungstest_id","studienplan_id"), "public.tbl_status" => array("status_kurzbz","beschreibung","anmerkung","ext_id","bezeichnung_mehrsprachig"), - "public.tbl_status_grund" => array("statusgrund_id","status_kurzbz","aktiv","bezeichnung_mehrsprachig","beschreibung"), + "public.tbl_status_grund" => array("statusgrund_id","status_kurzbz","aktiv","bezeichnung_mehrsprachig","beschreibung","statusgrund_kurzbz"), "public.tbl_semesterwochen" => array("semester","studiengang_kz","wochen"), "public.tbl_service" => array("service_id", "bezeichnung","beschreibung","ext_id","oe_kurzbz","content_id","design_uid","betrieb_uid","operativ_uid","servicekategorie_kurzbz"), "public.tbl_servicekategorie" => array("servicekategorie_kurzbz", "bezeichnung","sort"), From bfa0f722ae4fdca5a2a2ed1cce711cf02e840e6e Mon Sep 17 00:00:00 2001 From: Monika70 <46781283+Monika70@users.noreply.github.com> Date: Wed, 22 Sep 2021 10:46:28 +0200 Subject: [PATCH 018/354] change Datatype of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64) change Datatype of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64) --- system/dbupdate_3.3.php | 230 +++++++++++++++------------------------- 1 file changed, 88 insertions(+), 142 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 1f7fff366..1d4f33d36 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -520,22 +520,6 @@ if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE } } -// change Datatype of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64) -if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='lehre' AND TABLE_NAME='tbl_note' AND COLUMN_NAME = 'bezeichnung' AND character_maximum_length < 64")) -{ - if($db->db_num_rows($result)>0) - { - $qry = " - ALTER TABLE lehre.tbl_note ALTER COLUMN bezeichnung TYPE varchar(64); - "; - - if(!$db->db_query($qry)) - echo 'lehre.tbl_note '.$db->db_last_error().'
'; - else - echo '
Spalte bezeichnung in lehre.tbl_note von kleiner varchar(64) auf varchar(64) geändert
'; - } -} - // Note "entschuldigt" hinzufügen if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'en' AND (bezeichnung = 'entschuldigt' OR bezeichnung = 'Entschuldigt');")) { @@ -564,46 +548,6 @@ if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'ue' } } -// Note "intern angerechnet" hinzufügen -if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'iar' AND (bezeichnung = 'intern angerechnet' OR bezeichnung = 'Intern angerechnet');")) -{ - if($db->db_num_rows($result) == 0) - { - $qry = " - INSERT INTO - lehre.tbl_note(note, bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre, offiziell, bezeichnung_mehrsprachig, lkt_ueberschreibbar) - VALUES( - (SELECT max(note)+1 FROM lehre.tbl_note),'intern angerechnet', 'iar', NULL, TRUE, NULL, TRUE, FALSE, FALSE, '{\"intern angerechnet\",\"internally credited\"}', FALSE - ); - "; - - if(!$db->db_query($qry)) - echo 'lehre.tbl_note: '.$db->db_last_error().'
'; - else - echo '
lehre.tbl_note: Note intern angerechnet hinzugefuegt!
'; - } -} - -// Note "nicht zugelassen" hinzufügen -if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'nz' AND (bezeichnung = 'nicht zugelassen' OR bezeichnung = 'Nicht zugelassen');")) -{ - if($db->db_num_rows($result) == 0) - { - $qry = " - INSERT INTO - lehre.tbl_note(note, bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre, offiziell, bezeichnung_mehrsprachig, lkt_ueberschreibbar) - VALUES( - (SELECT max(note)+1 FROM lehre.tbl_note), 'nicht zugelassen', 'nz', NULL, TRUE, NULL, TRUE, FALSE, FALSE, '{\"nicht zugelassen\",\"not admitted\"}', FALSE - ); - "; - - if(!$db->db_query($qry)) - echo 'lehre.tbl_note: '.$db->db_last_error().'
'; - else - echo '
lehre.tbl_note: Note nicht zugelassen hinzugefuegt!
'; - } -} - // Spalte offiziell in lehre.tbl_note if(!$result = @$db->db_query("SELECT offiziell FROM lehre.tbl_note LIMIT 1;")) { @@ -1387,7 +1331,7 @@ if (!$result = @$db->db_query("SELECT 1 FROM system.tbl_verarbeitungstaetigkeit" } // system.tbl_log.taetigkeit_kurzbz -if (!$result = @$db->db_query("SELECT taetigkeit_kurzbz FROM system.tbl_log LIMIT 1")) +if (!$result = @$db->db_query("SELECT taetigkeit_kurzbz FROM system.tbl_log")) { $qry = " ALTER TABLE system.tbl_log ADD COLUMN taetigkeit_kurzbz varchar(32); @@ -2639,7 +2583,6 @@ if(!@$db->db_query("SELECT zeitaufzeichnungspflichtig FROM bis.tbl_bisverwendung . "
Fix angestellte Mitarbeiter auf true gesetzt, alle anderen auf false"; } - // Spalte Priorisierung für tbl_prestudent if(!$result = @$db->db_query("SELECT priorisierung FROM public.tbl_prestudent LIMIT 1")) { @@ -2651,6 +2594,40 @@ if(!$result = @$db->db_query("SELECT priorisierung FROM public.tbl_prestudent LI echo '
public.tbl_prestudent: Spalte priorisierung hinzugefuegt'; } +// Spalte zgv_erfuellt für tbl_prestudent +if(!$result = @$db->db_query("SELECT zgv_erfuellt FROM public.tbl_prestudent LIMIT 1")) +{ + $qry = "ALTER TABLE public.tbl_prestudent ADD COLUMN zgv_erfuellt boolean default false;"; + + if(!$db->db_query($qry)) + echo 'public.tbl_prestudent: '.$db->db_last_error().'
'; + else + echo '
public.tbl_prestudent: Spalte zgv_erfuellt hinzugefuegt'; +} + +// Spalte zgvmas_erfuellt für tbl_prestudent +if(!$result = @$db->db_query("SELECT zgvmas_erfuellt FROM public.tbl_prestudent LIMIT 1")) +{ + $qry = "ALTER TABLE public.tbl_prestudent ADD COLUMN zgvmas_erfuellt boolean default false;"; + + if(!$db->db_query($qry)) + echo 'public.tbl_prestudent: '.$db->db_last_error().'
'; + else + echo '
public.tbl_prestudent: Spalte zgvmas_erfuellt hinzugefuegt'; +} + +// Spalte zgvdoktor_erfuellt für tbl_prestudent +if(!$result = @$db->db_query("SELECT zgvdoktor_erfuellt FROM public.tbl_prestudent LIMIT 1")) +{ + $qry = "ALTER TABLE public.tbl_prestudent ADD COLUMN zgvdoktor_erfuellt boolean default false;"; + + if(!$db->db_query($qry)) + echo 'public.tbl_prestudent: '.$db->db_last_error().'
'; + else + echo '
public.tbl_prestudent: Spalte zgvdoktor_erfuellt hinzugefuegt'; +} + + // Spalte lieferant in tbl_firma if(!$result = @$db->db_query("SELECT lieferant FROM public.tbl_firma LIMIT 1")) { @@ -4709,7 +4686,7 @@ if ($result = @$db->db_query("SELECT 1 FROM campus.tbl_dms_kategorie_gruppe WHER } } -// Add table anrechnungstatus +// Add table anrechnung_status if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnungstatus LIMIT 1;")) { $qry = " @@ -4737,6 +4714,42 @@ if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnungstatus LIMIT 1;" echo ' lehre.tbl_anrechnungstatus: Tabelle hinzugefuegt
'; } +// GRANT INSERT, UPDATE, DELETE ON TABLE lehre.tbl_anrechnungstatus TO web; +$qry = 'GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE lehre.tbl_anrechnungstatus TO web;'; +if (!$db->db_query($qry)) + echo 'lehre.tbl_anrechnungstatus '.$db->db_last_error().'
'; +else + echo '
Granted privileges to web on lehre.tbl_anrechnungstatus'; + + +// SEQUENCE seq_anrechnungstatus_status_kurzbz +if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'seq_anrechnungstatus_status_kurzbz'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = ' + CREATE SEQUENCE lehre.seq_anrechnungstatus_status_kurzbz + START WITH 1 + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + '; + + if(!$db->db_query($qry)) + echo 'lehre.seq_anrechnungstatus_status_kurzbz '.$db->db_last_error().'
'; + else + echo '
Created sequence: lehre.seq_anrechnungstatus_status_kurzbz'; + + // GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_anrechnungstatus_status_kurzbz_seq to web; + $qry = 'GRANT SELECT, UPDATE ON SEQUENCE lehre.seq_anrechnungstatus_status_kurzbz TO web;'; + if (!$db->db_query($qry)) + echo 'lehre.seq_anrechnungstatus_status_kurzbz '.$db->db_last_error().'
'; + else + echo '
Granted privileges to vilesci on lehre.seq_anrechnungstatus_status_kurzbz'; + } +} + // Add table anrechnung_anrechnungstatus // Für bestehende genehmigte Anrechnungsanträge wird ein Eintrag mit dem Status 'approved' angelegt if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnung_anrechnungstatus LIMIT 1;")) @@ -4766,10 +4779,9 @@ if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnung_anrechnungstatu INSERT INTO lehre.tbl_anrechnung_anrechnungstatus(anrechnung_id, status_kurzbz) SELECT anrechnung_id, 'approved' as status_kurzbz FROM lehre.tbl_anrechnung WHERE genehmigt_von is not null; - GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_anrechnung_anrechnungstatus TO web; + GRANT SELECT ON lehre.tbl_anrechnung_anrechnungstatus TO web; GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_anrechnung_anrechnungstatus TO vilesci; GRANT SELECT, UPDATE ON lehre.seq_anrechnung_anrechnungstatus_anrechnungstatus_id TO vilesci; - GRANT SELECT, UPDATE ON lehre.seq_anrechnung_anrechnungstatus_anrechnungstatus_id TO web; "; if(!$db->db_query($qry)) @@ -4833,19 +4845,6 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht } } -// Add permission to create Anrechnung -if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'lehre/anrechnung_anlegen';")) -{ - if($db->db_num_rows($result) == 0) - { - $qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('lehre/anrechnung_anlegen', 'Anrechnung anlegen');"; - - if(!$db->db_query($qry)) - echo 'system.tbl_berechtigung '.$db->db_last_error().'
'; - else - echo ' system.tbl_berechtigung: Added permission for lehre/anrechnung_anlegen
'; - } -} // INSERT,DELETE,UPDATE Berechtigung für tbl_dokumentprestudent hinzufügen if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants WHERE table_name='tbl_dokumentprestudent' AND table_schema='public' AND grantee='web' AND privilege_type in ('INSERT','DELETE','UPDATE')")) @@ -4870,11 +4869,13 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_zgvpruefungstatus LIMIT 1 status_kurzbz character varying(32), bezeichnung character varying(256) ); + ALTER TABLE public.tbl_zgvpruefungstatus ADD CONSTRAINT status_kurzbz PRIMARY KEY (status_kurzbz); INSERT INTO public.tbl_zgvpruefungstatus(status_kurzbz, bezeichnung) VALUES('pruefung_stg', 'Wird vom Studiengang geprüft'); INSERT INTO public.tbl_zgvpruefungstatus(status_kurzbz, bezeichnung) VALUES('rejected', 'Vom Studiengang abgelehnt'); INSERT INTO public.tbl_zgvpruefungstatus(status_kurzbz, bezeichnung) VALUES('accepted', 'Vom Studiengang akzeptiert'); INSERT INTO public.tbl_zgvpruefungstatus(status_kurzbz, bezeichnung) VALUES('accepted_pruefung', 'Vom Studiengang akzeptiert mit Prüfung'); + GRANT SELECT, INSERT, UPDATE, DELETE ON public.tbl_zgvpruefungstatus TO vilesci; GRANT SELECT ON public.tbl_zgvpruefungstatus TO web; "; @@ -4898,7 +4899,8 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_zgvpruefung LIMIT 1;")) updateamum timestamp without time zone, updatevon character varying(32) ); - CREATE SEQUENCE public.tbl_zgvpruefung_id_seq + + CREATE SEQUENCE public.tbl_zgvpruefung_id_seq INCREMENT BY 1 NO MAXVALUE NO MINVALUE @@ -4906,9 +4908,11 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_zgvpruefung LIMIT 1;")) ALTER TABLE public.tbl_zgvpruefung ADD CONSTRAINT pk_tbl_zgvpruefung PRIMARY KEY (zgvpruefung_id); ALTER TABLE public.tbl_zgvpruefung ALTER COLUMN zgvpruefung_id SET DEFAULT nextval('public.tbl_zgvpruefung_id_seq'); ALTER TABLE public.tbl_zgvpruefung ADD CONSTRAINT fk_tbl_zgvpruefung_student FOREIGN KEY (prestudent_id) REFERENCES public.tbl_prestudent (prestudent_id) ON DELETE RESTRICT ON UPDATE CASCADE; + GRANT SELECT, UPDATE ON public.tbl_zgvpruefung_id_seq TO vilesci; GRANT SELECT, INSERT, UPDATE, DELETE ON public.tbl_zgvpruefung TO vilesci; GRANT SELECT ON public.tbl_zgvpruefung TO web; + "; if(!$db->db_query($qry)) @@ -4928,15 +4932,18 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_zgvpruefungstatus_status status character varying(32), datum timestamp without time zone DEFAULT now() ); - CREATE SEQUENCE public.tbl_zgvpruefungstatus_status_id_seq + + CREATE SEQUENCE public.tbl_zgvpruefungstatus_status_id_seq INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; + ALTER TABLE public.tbl_zgvpruefungstatus_status ADD CONSTRAINT pk_tbl_zgvpruefungstatus_status PRIMARY KEY (zgv_pruefung_status_id); ALTER TABLE public.tbl_zgvpruefungstatus_status ALTER COLUMN zgv_pruefung_status_id SET DEFAULT nextval('tbl_zgvpruefungstatus_status_id_seq'); ALTER TABLE public.tbl_zgvpruefungstatus_status ADD CONSTRAINT fk_tbl_zgvpruefung_zgvpruefung FOREIGN KEY (zgvpruefung_id) REFERENCES public.tbl_zgvpruefung (zgvpruefung_id) ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE public.tbl_zgvpruefungstatus_status ADD CONSTRAINT fk_tbl_zgvpruefung_status FOREIGN KEY (status) REFERENCES public.tbl_zgvpruefungstatus (status_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; + GRANT SELECT, UPDATE ON public.tbl_zgvpruefungstatus_status_id_seq TO vilesci; GRANT SELECT, INSERT, UPDATE, DELETE ON public.tbl_zgvpruefungstatus_status TO vilesci; GRANT SELECT ON public.tbl_zgvpruefungstatus_status TO web; @@ -4948,7 +4955,8 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_zgvpruefungstatus_status echo ' public.tbl_zgvpruefungstatus_status: Tabelle hinzugefuegt
'; } -// Add index to lehre.tbl_pruefung + +// Add index to system.tbl_log if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_tbl_pruefung_student_uid'")) { if ($db->db_num_rows($result) == 0) @@ -4974,67 +4982,6 @@ if ($result = @$db->db_query("SELECT 1 FROM public.tbl_buchungstyp WHERE buchung echo ' public.tbl_buchungstyp: Added buchungstyp "ZuschussIO"
'; } } -//Add Column statusgrund_kurzbz to public.tbl_status_grund -if(!@$db->db_query("SELECT statusgrund_kurzbz FROM public.tbl_status_grund LIMIT 1")) -{ - $qry = "ALTER TABLE public.tbl_status_grund ADD COLUMN statusgrund_kurzbz varchar(32); - ALTER TABLE public.tbl_status_grund ADD CONSTRAINT uk_tbl_statusgrund_kurzbz UNIQUE (statusgrund_kurzbz); - "; - - if(!$db->db_query($qry)) - echo 'public.tbl_status_grund '.$db->db_last_error().'
'; - else - echo '
Neue Spalte statusgrund_kurzbz zu Tabelle public.tbl_status_grund hinzugefügt'; -} - -// INDEX idx_anrechnung_anrechnung_status_anrechnung_id -if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'idx_anrechnung_anrechnung_status_anrechnung_id'")) -{ - if ($db->db_num_rows($result) == 0) - { - $qry = 'CREATE INDEX idx_anrechnung_anrechnung_status_anrechnung_id ON lehre.tbl_anrechnung_anrechnungstatus USING btree (anrechnung_id)'; - if (!$db->db_query($qry)) - echo 'idx_anrechnung_anrechnung_status_anrechnung_id '.$db->db_last_error().'
'; - else - echo '
Created Index idx_anrechnung_anrechnung_status_anrechnung_id'; - } -} - -// Add Table lehre.tbl_lehrmodus -if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_lehrmodus LIMIT 1;")) -{ - $qry = " - CREATE TABLE lehre.tbl_lehrmodus - ( - lehrmodus_kurzbz varchar(32) NOT NULL, - bezeichnung_mehrsprachig varchar(255)[], - aktiv boolean DEFAULT true - ); - ALTER TABLE lehre.tbl_lehrmodus ADD CONSTRAINT pk_lehrmodus PRIMARY KEY (lehrmodus_kurzbz); - INSERT INTO lehre.tbl_lehrmodus(lehrmodus_kurzbz, bezeichnung_mehrsprachig) VALUES('regulaer', '{\"regulaer\",\"regular\"}'); - INSERT INTO lehre.tbl_lehrmodus(lehrmodus_kurzbz, bezeichnung_mehrsprachig) VALUES('standardisiert', '{\"standardisiert\",\"standardized\"}'); - GRANT SELECT ON lehre.tbl_lehrmodus TO web; - GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_lehrmodus TO vilesci; - "; - - if(!$db->db_query($qry)) - echo 'lehre.tbl_lehrmodus: '.$db->db_last_error().'
'; - else - echo ' lehre.tbl_lehrmodus: Tabelle hinzugefuegt
'; -} - -//Add Column lehrmodus_kurzbz to lehre.tbl_lehrveranstaltung -if(!@$db->db_query("SELECT lehrmodus_kurzbz FROM lehre.tbl_lehrveranstaltung LIMIT 1")) -{ - $qry = "ALTER TABLE lehre.tbl_lehrveranstaltung ADD COLUMN lehrmodus_kurzbz varchar(32); - ALTER TABLE lehre.tbl_lehrveranstaltung ADD CONSTRAINT fk_lehrveranstaltung_lehrmodus FOREIGN KEY (lehrmodus_kurzbz) REFERENCES lehre.tbl_lehrmodus(lehrmodus_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT; - "; - - if(!$db->db_query($qry)) - echo 'lehre.tbl_lehrveranstaltung '.$db->db_last_error().'
'; - else - echo '
Spalte lehrmodus_kurzbz in lehre.tbl_lehrveranstaltung hinzugefügt'; -} // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -5153,9 +5100,8 @@ $tabellen=array( "lehre.tbl_lehrform" => array("lehrform_kurzbz","bezeichnung","verplanen","bezeichnung_kurz","bezeichnung_lang"), "lehre.tbl_lehrfunktion" => array("lehrfunktion_kurzbz","beschreibung","standardfaktor","sort"), "lehre.tbl_lehrmittel" => array("lehrmittel_kurzbz","beschreibung","ort_kurzbz"), - "lehre.tbl_lehrmodus" => array("lehrmodus_kurzbz","bezeichnung_mehrsprachig","aktiv"), "lehre.tbl_lehrtyp" => array("lehrtyp_kurzbz","bezeichnung"), - "lehre.tbl_lehrveranstaltung" => array("lehrveranstaltung_id","kurzbz","bezeichnung","lehrform_kurzbz","studiengang_kz","semester","sprache","ects","semesterstunden","anmerkung","lehre","lehreverzeichnis","aktiv","planfaktor","planlektoren","planpersonalkosten","plankostenprolektor","koordinator","sort","zeugnis","projektarbeit","updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung_english","orgform_kurzbz","incoming","lehrtyp_kurzbz","oe_kurzbz","raumtyp_kurzbz","anzahlsemester","semesterwochen","lvnr","farbe","semester_alternativ","old_lehrfach_id","sws","lvs","alvs","lvps","las","benotung","lvinfo","lehrauftrag","lehrmodus_kurzbz"), + "lehre.tbl_lehrveranstaltung" => array("lehrveranstaltung_id","kurzbz","bezeichnung","lehrform_kurzbz","studiengang_kz","semester","sprache","ects","semesterstunden","anmerkung","lehre","lehreverzeichnis","aktiv","planfaktor","planlektoren","planpersonalkosten","plankostenprolektor","koordinator","sort","zeugnis","projektarbeit","updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung_english","orgform_kurzbz","incoming","lehrtyp_kurzbz","oe_kurzbz","raumtyp_kurzbz","anzahlsemester","semesterwochen","lvnr","farbe","semester_alternativ","old_lehrfach_id","sws","lvs","alvs","lvps","las","benotung","lvinfo","lehrauftrag"), "lehre.tbl_lehrveranstaltung_kompatibel" => array("lehrveranstaltung_id","lehrveranstaltung_id_kompatibel"), "lehre.tbl_lvangebot" => array("lvangebot_id","lehrveranstaltung_id","studiensemester_kurzbz","gruppe_kurzbz","incomingplaetze","gesamtplaetze","anmeldefenster_start","anmeldefenster_ende","insertamum","insertvon","updateamum","updatevon"), "lehre.tbl_lvregel" => array("lvregel_id","lvregeltyp_kurzbz","operator","parameter","lvregel_id_parent","lehrveranstaltung_id","studienplan_lehrveranstaltung_id","insertamum","insertvon","updateamum","updatevon"), @@ -5248,7 +5194,7 @@ $tabellen=array( "public.tbl_preoutgoing_lehrveranstaltung" => array("preoutgoing_lehrveranstaltung_id","preoutgoing_id","bezeichnung","ects","endversion","insertamum","insertvon","updateamum","updatevon","wochenstunden","unitcode"), "public.tbl_preoutgoing_preoutgoing_status" => array("status_id","preoutgoing_status_kurzbz","preoutgoing_id","datum","insertamum","insertvon","updateamum","updatevon"), "public.tbl_preoutgoing_status" => array("preoutgoing_status_kurzbz","bezeichnung"), - "public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor","zgvnation","zgvmanation","zgvdoktornation","gsstudientyp_kurzbz","aufnahmegruppe_kurzbz","udf_values","priorisierung"), + "public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor","zgvnation","zgvmanation","zgvdoktornation","gsstudientyp_kurzbz","aufnahmegruppe_kurzbz","udf_values","priorisierung","zgv_erfuellt","zgvmas_erfuellt","zgvdoktor_erfuellt"), "public.tbl_prestudentstatus" => array("prestudent_id","status_kurzbz","studiensemester_kurzbz","ausbildungssemester","datum","orgform_kurzbz","insertamum","insertvon","updateamum","updatevon","ext_id","studienplan_id","bestaetigtam","bestaetigtvon","fgm","faktiv", "anmerkung","bewerbung_abgeschicktamum","rt_stufe","statusgrund_id"), "public.tbl_raumtyp" => array("raumtyp_kurzbz","beschreibung","kosten"), "public.tbl_reihungstest" => array("reihungstest_id","studiengang_kz","ort_kurzbz","anmerkung","datum","uhrzeit","updateamum","updatevon","insertamum","insertvon","ext_id","freigeschaltet","max_teilnehmer","oeffentlich","studiensemester_kurzbz","aufnahmegruppe_kurzbz","stufe","anmeldefrist"), @@ -5256,7 +5202,7 @@ $tabellen=array( "public.tbl_rt_person" => array("rt_person_id","person_id","rt_id","studienplan_id","anmeldedatum","teilgenommen","ort_kurzbz","punkte","insertamum","insertvon","updateamum","updatevon"), "public.tbl_rt_studienplan" => array("reihungstest_id","studienplan_id"), "public.tbl_status" => array("status_kurzbz","beschreibung","anmerkung","ext_id","bezeichnung_mehrsprachig"), - "public.tbl_status_grund" => array("statusgrund_id","status_kurzbz","aktiv","bezeichnung_mehrsprachig","beschreibung","statusgrund_kurzbz"), + "public.tbl_status_grund" => array("statusgrund_id","status_kurzbz","aktiv","bezeichnung_mehrsprachig","beschreibung"), "public.tbl_semesterwochen" => array("semester","studiengang_kz","wochen"), "public.tbl_service" => array("service_id", "bezeichnung","beschreibung","ext_id","oe_kurzbz","content_id","design_uid","betrieb_uid","operativ_uid","servicekategorie_kurzbz"), "public.tbl_servicekategorie" => array("servicekategorie_kurzbz", "bezeichnung","sort"), From ad95088abd4b258ef3e669859dfccfb938bc2440 Mon Sep 17 00:00:00 2001 From: Monika70 <46781283+Monika70@users.noreply.github.com> Date: Wed, 22 Sep 2021 10:53:51 +0200 Subject: [PATCH 019/354] Update dbupdate_3.3.php --- system/dbupdate_3.3.php | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 1d4f33d36..ba6852747 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -504,22 +504,6 @@ if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_pruefungstyp WHERE pruefung } } -// change Datatype of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64) -if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='lehre' AND TABLE_NAME='tbl_note' AND COLUMN_NAME = 'bezeichnung' AND character_maximum_length < 64")) -{ - if($db->db_num_rows($result)>0) - { - $qry = " - ALTER TABLE lehre.tbl_note ALTER COLUMN bezeichnung TYPE varchar(64); - "; - - if(!$db->db_query($qry)) - echo 'lehre.tbl_note '.$db->db_last_error().'
'; - else - echo '
Spalte bezeichnung in lehre.tbl_note von kleiner varchar(64) auf varchar(64) geändert
'; - } -} - // Note "entschuldigt" hinzufügen if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'en' AND (bezeichnung = 'entschuldigt' OR bezeichnung = 'Entschuldigt');")) { From 3acf5ba45e769bbe38a8175279c0c454a724f95c Mon Sep 17 00:00:00 2001 From: Monika70 <46781283+Monika70@users.noreply.github.com> Date: Wed, 22 Sep 2021 11:03:25 +0200 Subject: [PATCH 020/354] change Datatype of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64) change Datatype of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64) --- system/dbupdate_3.3.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index ba6852747..1d4f33d36 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -504,6 +504,22 @@ if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_pruefungstyp WHERE pruefung } } +// change Datatype of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64) +if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='lehre' AND TABLE_NAME='tbl_note' AND COLUMN_NAME = 'bezeichnung' AND character_maximum_length < 64")) +{ + if($db->db_num_rows($result)>0) + { + $qry = " + ALTER TABLE lehre.tbl_note ALTER COLUMN bezeichnung TYPE varchar(64); + "; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_note '.$db->db_last_error().'
'; + else + echo '
Spalte bezeichnung in lehre.tbl_note von kleiner varchar(64) auf varchar(64) geändert
'; + } +} + // Note "entschuldigt" hinzufügen if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'en' AND (bezeichnung = 'entschuldigt' OR bezeichnung = 'Entschuldigt');")) { From a20d947b377bd3f5c02b9fc48b46e112a31587b9 Mon Sep 17 00:00:00 2001 From: Monika70 <46781283+Monika70@users.noreply.github.com> Date: Wed, 22 Sep 2021 11:19:48 +0200 Subject: [PATCH 021/354] Update dbupdate_3.3.php --- system/dbupdate_3.3.php | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 1d4f33d36..ba6852747 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -504,22 +504,6 @@ if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_pruefungstyp WHERE pruefung } } -// change Datatype of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64) -if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='lehre' AND TABLE_NAME='tbl_note' AND COLUMN_NAME = 'bezeichnung' AND character_maximum_length < 64")) -{ - if($db->db_num_rows($result)>0) - { - $qry = " - ALTER TABLE lehre.tbl_note ALTER COLUMN bezeichnung TYPE varchar(64); - "; - - if(!$db->db_query($qry)) - echo 'lehre.tbl_note '.$db->db_last_error().'
'; - else - echo '
Spalte bezeichnung in lehre.tbl_note von kleiner varchar(64) auf varchar(64) geändert
'; - } -} - // Note "entschuldigt" hinzufügen if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'en' AND (bezeichnung = 'entschuldigt' OR bezeichnung = 'Entschuldigt');")) { From d704e09e822705a0ae64614af71bd3b732bf08b8 Mon Sep 17 00:00:00 2001 From: Monika70 <46781283+Monika70@users.noreply.github.com> Date: Wed, 22 Sep 2021 11:29:36 +0200 Subject: [PATCH 022/354] Revert "Update dbupdate_3.3.php" This reverts commit a20d947b377bd3f5c02b9fc48b46e112a31587b9. --- system/dbupdate_3.3.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index ba6852747..1d4f33d36 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -504,6 +504,22 @@ if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_pruefungstyp WHERE pruefung } } +// change Datatype of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64) +if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='lehre' AND TABLE_NAME='tbl_note' AND COLUMN_NAME = 'bezeichnung' AND character_maximum_length < 64")) +{ + if($db->db_num_rows($result)>0) + { + $qry = " + ALTER TABLE lehre.tbl_note ALTER COLUMN bezeichnung TYPE varchar(64); + "; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_note '.$db->db_last_error().'
'; + else + echo '
Spalte bezeichnung in lehre.tbl_note von kleiner varchar(64) auf varchar(64) geändert
'; + } +} + // Note "entschuldigt" hinzufügen if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'en' AND (bezeichnung = 'entschuldigt' OR bezeichnung = 'Entschuldigt');")) { From 9493d6a99b3eb0362411aee4eab8b5aa8086d988 Mon Sep 17 00:00:00 2001 From: Monika70 <46781283+Monika70@users.noreply.github.com> Date: Wed, 22 Sep 2021 11:35:17 +0200 Subject: [PATCH 023/354] Revert "change Datatype of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64)" This reverts commit 3acf5ba45e769bbe38a8175279c0c454a724f95c. --- system/dbupdate_3.3.php | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 1d4f33d36..ba6852747 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -504,22 +504,6 @@ if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_pruefungstyp WHERE pruefung } } -// change Datatype of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64) -if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='lehre' AND TABLE_NAME='tbl_note' AND COLUMN_NAME = 'bezeichnung' AND character_maximum_length < 64")) -{ - if($db->db_num_rows($result)>0) - { - $qry = " - ALTER TABLE lehre.tbl_note ALTER COLUMN bezeichnung TYPE varchar(64); - "; - - if(!$db->db_query($qry)) - echo 'lehre.tbl_note '.$db->db_last_error().'
'; - else - echo '
Spalte bezeichnung in lehre.tbl_note von kleiner varchar(64) auf varchar(64) geändert
'; - } -} - // Note "entschuldigt" hinzufügen if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'en' AND (bezeichnung = 'entschuldigt' OR bezeichnung = 'Entschuldigt');")) { From 6cb8987fb429662304db478b3380ecd29203239a Mon Sep 17 00:00:00 2001 From: Monika70 <46781283+Monika70@users.noreply.github.com> Date: Wed, 22 Sep 2021 11:41:03 +0200 Subject: [PATCH 024/354] change Datatype of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64) change Datatype of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64) --- system/dbupdate_3.3.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index ba6852747..1d4f33d36 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -504,6 +504,22 @@ if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_pruefungstyp WHERE pruefung } } +// change Datatype of lehre.tbl_note.bezeichnung from varchar(32) to varchar(64) +if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='lehre' AND TABLE_NAME='tbl_note' AND COLUMN_NAME = 'bezeichnung' AND character_maximum_length < 64")) +{ + if($db->db_num_rows($result)>0) + { + $qry = " + ALTER TABLE lehre.tbl_note ALTER COLUMN bezeichnung TYPE varchar(64); + "; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_note '.$db->db_last_error().'
'; + else + echo '
Spalte bezeichnung in lehre.tbl_note von kleiner varchar(64) auf varchar(64) geändert
'; + } +} + // Note "entschuldigt" hinzufügen if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'en' AND (bezeichnung = 'entschuldigt' OR bezeichnung = 'Entschuldigt');")) { From bd90876277b3571b279d3177aae3c6d4227f6a6e Mon Sep 17 00:00:00 2001 From: cris-technikum Date: Thu, 23 Sep 2021 12:34:58 +0200 Subject: [PATCH 025/354] Fixed: Now sending mails to ALL STGLs of the concerning STG Before it was sending only to first in array. Now sending to all. Signed-off-by: cris-technikum --- .../controllers/jobs/AnrechnungJob.php | 49 +++++++++++-------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/application/controllers/jobs/AnrechnungJob.php b/application/controllers/jobs/AnrechnungJob.php index f92410dbc..f32a8268a 100644 --- a/application/controllers/jobs/AnrechnungJob.php +++ b/application/controllers/jobs/AnrechnungJob.php @@ -188,7 +188,7 @@ class AnrechnungJob extends JOB_Controller $studiengang_bezeichnung = $this->StudiengangModel->load($studiengang_kz)->retval[0]->stg_bezeichnung; // Get STGL mail address - list ($to, $vorname) = self::_getSTGLMailAddress($studiengang_kz); + $stglMailReceiver_arr = self::_getSTGLMailAddress($studiengang_kz); // Get HTML table with new Anrechnungen of that STG plus amount of them list ($anrechnungen_amount, $anrechnungen_table) = self::_getSTGLMailDataTable($studiengang_kz, $anrechnungen); @@ -199,22 +199,25 @@ class AnrechnungJob extends JOB_Controller CIS_ROOT. 'cis/menu.php?content_id=&content='. CIS_ROOT. index_page(). self::APPROVE_ANRECHNUNG_URI; + foreach ($stglMailReceiver_arr as $stgl) + { // Prepare mail content - $body_fields = array( - 'vorname' => $vorname, - 'studiengang' => $studiengang_bezeichnung, - 'anzahl' => $anrechnungen_amount, - 'datentabelle' => $anrechnungen_table, - 'link' => anchor($url, 'Anrechnungsanträge Übersicht') - ); - - // Send mail - sendSanchoMail( - 'AnrechnungAntragStellen', - $body_fields, - $to, - 'Anerkennung nachgewiesener Kenntnisse: Neuer Antrag wurde gestellt' - ); + $body_fields = array( + 'vorname' => $stgl['vorname'], + 'studiengang' => $studiengang_bezeichnung, + 'anzahl' => $anrechnungen_amount, + 'datentabelle' => $anrechnungen_table, + 'link' => anchor($url, 'Anrechnungsanträge Übersicht') + ); + + // Send mail + sendSanchoMail( + 'AnrechnungAntragStellen', + $body_fields, + $stgl['to'], + 'Anerkennung nachgewiesener Kenntnisse: Neuer Antrag wurde gestellt' + ); + } } $this->logInfo('SUCCEDED: Sending emails to STGL about yesterdays new Anrechnungen succeded.'); @@ -342,15 +345,21 @@ html; // Get STGL mail address private function _getSTGLMailAddress($studiengang_kz) { + $stglMailAdress_arr = array(); $result = $this->StudiengangModel->getLeitung($studiengang_kz); // Get STGL mail address if (hasData($result)) { - return array( - $result->retval[0]->uid. '@'. DOMAIN, - $result->retval[0]->vorname - ); + foreach (getData($result) as $stgl) + { + $stglMailAdress_arr[]= array( + 'to' => $stgl->uid. '@'. DOMAIN, + 'vorname' => $stgl->vorname + ); + } + + return $stglMailAdress_arr; } // If not available, get assistance mail address else From 72868f4207e428c4b0e6f42f4b38b741ca81ba55 Mon Sep 17 00:00:00 2001 From: cris-technikum Date: Thu, 23 Sep 2021 12:47:05 +0200 Subject: [PATCH 026/354] Fixed: Now downloading documents is possible for ALL STGLs of the concerning STG Before it was possible only for first in array. Now sending to all. Signed-off-by: cris-technikum --- .../lehre/anrechnung/ApproveAnrechnungUebersicht.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/application/controllers/lehre/anrechnung/ApproveAnrechnungUebersicht.php b/application/controllers/lehre/anrechnung/ApproveAnrechnungUebersicht.php index d59d97514..70fae2b57 100644 --- a/application/controllers/lehre/anrechnung/ApproveAnrechnungUebersicht.php +++ b/application/controllers/lehre/anrechnung/ApproveAnrechnungUebersicht.php @@ -285,11 +285,14 @@ class approveAnrechnungUebersicht extends Auth_Controller // Get STGL $result = $this->StudiengangModel->getLeitung($result->studiengang_kz); - if($result = getData($result)[0]) + if (hasData($result)) { - if ($result->uid == $this->_uid) + foreach (getData($result) as $stgl) { - return; + if ($stgl->uid == $this->_uid) + { + return; + } } } From 072d1437e6a0ad7512bf6f89204933e3436b5510 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Mon, 27 Sep 2021 13:31:01 +0200 Subject: [PATCH 027/354] Bugfix: nun werden nach jedem Fehler die Projektphasen neu geladen --- cis/private/tools/zeitaufzeichnung.php | 44 +++++++++++++------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 824c0ba3c..626150dac 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -853,11 +853,11 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) if($data[0] == $user){ if(!empty($data[6]) && !in_array($data[6], $project_kurzbz_array) && empty($data[7])) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie folgendem Projekt entweder nicht zugewiesen sind oder das Projekt schon abgeschlossen wurde: ('.$data[6].')
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie folgendem Projekt entweder nicht zugewiesen sind oder das Projekt schon abgeschlossen wurde: ('.$data[6].')
'; } elseif(!empty($data[7]) && !in_array($data[7], $projectphasen_kurzbz_array)) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie folgender Projektphase entweder nicht zugewiesen sind oder die Projektphase schon abgeschlossen wurde: ('.$data[7].')
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie folgender Projektphase entweder nicht zugewiesen sind oder die Projektphase schon abgeschlossen wurde: ('.$data[7].')
'; } else { @@ -875,24 +875,24 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) if (!isset($data[8])) $data[8] = NULL; if ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') < $sperrdatum) - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')
'; elseif ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') > $limitdatum) - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da ('.$data[2].') zu weit in der Zukunft liegt.
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da ('.$data[2].') zu weit in der Zukunft liegt.
'; elseif ($dateVonCSV!=$dateBisCSV && $data[1]!="DienstreiseMT") { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da keine Zeitaufzeichnung über mehrere Tage erlaubt ist (ausgenommen Dienstreisen).
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da keine Zeitaufzeichnung über mehrere Tage erlaubt ist (ausgenommen Dienstreisen).
'; } elseif (empty($data[7]) && !empty($data[6]) && !$projects_of_user->checkProjectInCorrectTime($data[6], $data[2], $data[3])) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt: ('.$data[2].') ('.$data[3].')
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt: ('.$data[2].') ('.$data[3].')
'; } elseif (!empty($data[7]) && !$projektph_of_user ->checkProjectphaseInCorrectTime($data[7], $data[2], $data[3])) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektphasenzeitrahmen fällt: ('.$data[2].') ('.$data[3].')
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektphasenzeitrahmen fällt: ('.$data[2].') ('.$data[3].')
'; } elseif (checkVals($data[5],$data[6],$data[7],$data[8])) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Fehlerhafte Werte ('.$data[2].')
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Fehlerhafte Werte ('.$data[2].')
'; } else { @@ -982,7 +982,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $pause->homeoffice = $homeoffice; if(!$pause->save()) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg.'
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg.'
'; } } } @@ -999,7 +999,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) */ if(!$zeit->save()) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'('.$zeit->start.')
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'('.$zeit->start.')
'; } else $anzahl++; @@ -1012,7 +1012,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) } else if (strpos($data[0],'#') === false) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Falsche UID nicht importiert ('.$data[0].')
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Falsche UID nicht importiert ('.$data[0].')
'; } } if($anzahl>0) @@ -1030,7 +1030,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) } } else if ($datum->formatDatum($von, $format='Y-m-d H:i:s') < $sperrdatum) - echo '' .$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum'; + echo '' .$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum'; else if (isset($_POST['save']) || isset($_POST['edit'])) { @@ -1066,12 +1066,12 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) if (!$projects_of_user->checkProjectInCorrectTime($projekt_kurzbz, $datum->formatDatum($von, $format='Y-m-d'), $datum->formatDatum($bis, $format='Y-m-d'))) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.
'; $saveerror = 1; } elseif ($datum->formatDatum($von, $format='Y-m-d') > $limitdatum || $datum->formatDatum($bis, $format='Y-m-d') > $limitdatum) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs oder Enddatum zu weit in der Zukunft liegt.
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs oder Enddatum zu weit in der Zukunft liegt.
'; $saveerror = 1; } elseif (!$projectphase->checkProjectphaseInCorrectTime($projektphase_id, $datum->formatDatum($von, $format='Y-m-d'), $datum->formatDatum($bis, $format='Y-m-d'))) @@ -1083,7 +1083,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) } elseif (abs($von-$bis)>0 && $aktivitaet_kurzbz!="DienstreiseMT") { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da keine Zeitaufzeichnung über mehrere Tage erlaubt ist (ausgenommen Dienstreisen).
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da keine Zeitaufzeichnung über mehrere Tage erlaubt ist (ausgenommen Dienstreisen).
'; $saveerror = 1; } elseif (isset($_POST['genPause']) && (isset($_POST['save']) || isset($_POST['edit']))) @@ -1095,13 +1095,13 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) // checken ob Pause innerhalb der Arbeitszeit ist if ($zeit->start > $p_start || $zeit->ende < $p_end) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Pause außerhalb der Arbeitszeit
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Pause außerhalb der Arbeitszeit
'; $saveerror = 1; } elseif ($p_start > $p_end) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Fehlerhafte Pausenzeiten
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Fehlerhafte Pausenzeiten
'; $saveerror = 1; } else @@ -1110,7 +1110,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $zeit->ende = $datum->formatDatum($von_pause, $format='Y-m-d H:i:s'); if(!$zeit->save()) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'
'; $saveerror = 1; } //Eintrag für die Pause @@ -1128,7 +1128,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $pause->beschreibung = ''; if(!$pause->save()) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg.'
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg.'
'; $saveerror = 1; } // Eintrag Arbeit ab der Pause @@ -1143,7 +1143,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $zeit->ende = $datum->formatDatum($bis, $format='Y-m-d H:i:s'); if(!$zeit->save()) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'
'; $saveerror = 1; } } @@ -1152,7 +1152,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) { if(!$zeit->save()) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.''; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.''; $saveerror = 1; } } @@ -1189,7 +1189,7 @@ if(isset($_GET['type']) && $_GET['type']=='delete') { if ($zeit->start < $sperrdatum) - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum'; else { if($zeit->uid==$user) From ddfee4499a760cd9d1aba1ba1b31db16b5581de1 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Mon, 27 Sep 2021 13:35:13 +0200 Subject: [PATCH 028/354] correct typo --- cis/private/tools/zeitaufzeichnung.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 626150dac..85156b1a0 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -1,5 +1,5 @@ Date: Mon, 4 Oct 2021 09:55:21 +0200 Subject: [PATCH 029/354] neuer adresstyp fuer homeoffice und dynmaischen adressentyp im FAS --- cis/private/profile/index.php | 29 +-------------- content/adressedialog.xul.php | 12 ++++--- include/adresse.class.php | 34 ++++++++++++++++-- rdf/adressentyp.rdf.php | 67 +++++++++++++++++++++++++++++++++++ system/dbupdate_3.3.php | 37 +++++++++++++++++++ 5 files changed, 143 insertions(+), 36 deletions(-) create mode 100644 rdf/adressentyp.rdf.php diff --git a/cis/private/profile/index.php b/cis/private/profile/index.php index 80062a932..1f1330839 100644 --- a/cis/private/profile/index.php +++ b/cis/private/profile/index.php @@ -293,36 +293,9 @@ if (!$ansicht) $adresse = new adresse(); $adresse->load_pers($user->person_id); - function sortAdresse($a , $b) - { - if ($a->typ === $b->typ) - return 0; - - return ($a->typ < $b->typ) ? -1 : 1; - } - usort($adresse->result, "sortAdresse"); foreach($adresse->result as $a) { - if ($a->zustelladresse) - { - switch ($a->typ) - { - case "h": - $typ = $p->t("global/hauptwohnsitz"); - break; - case "n": - $typ = $p->t("global/nebenwohnsitz"); - break; - default: - $typ = NULL; - break; - } - if ($typ !== NULL) - { - echo "".$typ.":
"; - echo $a->strasse."
".$a->plz." ".$a->ort."

"; - } - } + echo $a->strasse . " (" . $a->bezeichnung_mehrsprachig[$sprache] .") " . "
".$a->plz." ".$a->ort."

"; } } diff --git a/content/adressedialog.xul.php b/content/adressedialog.xul.php index f4f530bf0..50fb92b00 100644 --- a/content/adressedialog.xul.php +++ b/content/adressedialog.xul.php @@ -70,13 +70,15 @@ else diff --git a/include/adresse.class.php b/include/adresse.class.php index ffdb08582..801a95650 100644 --- a/include/adresse.class.php +++ b/include/adresse.class.php @@ -53,6 +53,9 @@ class adresse extends basis_db public $rechnungsadresse=false; // boolean public $anmerkung; // string public $co_name; + public $adressentyp; + public $bezeichnung; + public $bezeichnung_mehrsprachig; /** * Konstruktor @@ -133,10 +136,10 @@ class adresse extends basis_db $this->errormsg = 'person_id muss eine gültige Zahl sein'; return false; } - + $sprache = new sprache(); //Lesen der Daten aus der Datenbank - $qry = "SELECT * FROM public.tbl_adresse WHERE person_id=".$this->db_add_param($pers_id, FHC_INTEGER, false); - $qry.=" ORDER BY zustelladresse DESC"; + $qry = "SELECT *, ". $sprache->getSprachQuery('bezeichnung_mehrsprachig') ." FROM public.tbl_adresse JOIN public.tbl_adressentyp ON typ = adressentyp_kurzbz WHERE person_id=".$this->db_add_param($pers_id, FHC_INTEGER, false); + $qry.=" ORDER BY zustelladresse DESC, sort"; if(!$this->db_query($qry)) { @@ -167,6 +170,7 @@ class adresse extends basis_db $adr_obj->co_name = $row->co_name; $adr_obj->rechnungsadresse = $this->db_parse_bool($row->rechnungsadresse); $adr_obj->anmerkung = $row->anmerkung; + $adr_obj->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig',$row); $this->result[] = $adr_obj; } @@ -519,5 +523,29 @@ class adresse extends basis_db } return true; } + + public function getAdressentyp() + { + $qry = "SELECT * FROM public.tbl_adressentyp ORDER BY sort;"; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new adresse(); + + $obj->adressentyp = $row->adressentyp_kurzbz; + $obj->bezeichnung = $row->bezeichnung; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } } ?> diff --git a/rdf/adressentyp.rdf.php b/rdf/adressentyp.rdf.php new file mode 100644 index 000000000..b34a96cc6 --- /dev/null +++ b/rdf/adressentyp.rdf.php @@ -0,0 +1,67 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +// header für no cache +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"); +// content type setzen +header("Content-type: application/xhtml+xml"); +// xml +echo ''; +// DAO +require_once('../config/vilesci.config.inc.php'); +require_once('../include/adresse.class.php'); + +$adresse = new adresse(); + +$rdf_url='http://www.technikum-wien.at/adressentyp'; +echo ' + + + +'; + +if ($adresse->getAdressentyp()) +{ + foreach ($adresse->result as $row) + { + echo ' + + + adressentyp.']]> + bezeichnung.']]> + + + '; + } +} +else +{ + echo $adresse->errormsg; +} +?> + + diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 45c9e9e42..7d16dad1b 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4916,6 +4916,42 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_zgvpruefungstatus_status echo ' public.tbl_zgvpruefungstatus_status: Tabelle hinzugefuegt
'; } +// Add table adressentyp +if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_adressentyp LIMIT 1;")) +{ + $qry = " + CREATE TABLE public.tbl_adressentyp + ( + adressentyp_kurzbz varchar(32), + bezeichnung varchar(256), + bezeichnung_mehrsprachig varchar(256)[], + sort smallint + ); + + COMMENT ON TABLE public.tbl_adressentyp IS 'Types of Addresses'; + ALTER TABLE public.tbl_adressentyp ADD CONSTRAINT pk_tbl_adressentyp PRIMARY KEY (adressentyp_kurzbz); + + INSERT INTO public.tbl_adressentyp(adressentyp_kurzbz, bezeichnung, bezeichnung_mehrsprachig, sort) VALUES ('h', 'Hauptwohnsitz', '{\"Hauptwohnsitz\", \"Principal residence\"}', 1); + INSERT INTO public.tbl_adressentyp(adressentyp_kurzbz, bezeichnung, bezeichnung_mehrsprachig, sort) VALUES ('n', 'Nebenwohnsitz', '{\"Nebenwohnsitz\", \"Secondary residence\"}', 2); + INSERT INTO public.tbl_adressentyp(adressentyp_kurzbz, bezeichnung, bezeichnung_mehrsprachig, sort) VALUES ('ho', 'Homeoffice', '{\"Homeoffice\", \"Homeoffice\"}', 3); + INSERT INTO public.tbl_adressentyp(adressentyp_kurzbz, bezeichnung, bezeichnung_mehrsprachig, sort) VALUES ('r', 'Rechnungsadresse', '{\"Rechnungsadresse\", \"Billing address\"}', 4); + INSERT INTO public.tbl_adressentyp(adressentyp_kurzbz, bezeichnung, bezeichnung_mehrsprachig, sort) VALUES ('f', 'Firma', '{\"Firma\", \"Company\"}', 5); + + UPDATE public.tbl_adresse SET typ = 'f' WHERE person_id IS NULL AND (typ IS NULL OR typ = ''); + UPDATE public.tbl_adresse SET typ = 'h' WHERE person_id IS NOT NULL AND typ IS NULL; + + ALTER TABLE public.tbl_adresse ADD CONSTRAINT fk_tbl_adresse_adressentyp FOREIGN KEY (typ) REFERENCES public.tbl_adressentyp (adressentyp_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT; + + GRANT SELECT, INSERT, UPDATE, DELETE ON public.tbl_adressentyp TO vilesci; + GRANT SELECT ON public.tbl_adressentyp TO web; + "; + + if(!$db->db_query($qry)) + echo 'public.tbl_adressentyp: '.$db->db_last_error().'
'; + else + echo ' public.tbl_adressentyp: Tabelle hinzugefuegt
'; +} + // Add index to lehre.tbl_pruefung if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_tbl_pruefung_student_uid'")) { @@ -5181,6 +5217,7 @@ $tabellen=array( "lehre.tbl_zeugnisnote" => array("lehrveranstaltung_id","student_uid","studiensemester_kurzbz","note","uebernahmedatum","benotungsdatum","bemerkung","updateamum","updatevon","insertamum","insertvon","ext_id","punkte"), "public.ci_apikey" => array("apikey_id","key","level","ignore_limits","date_created"), "public.tbl_adresse" => array("adresse_id","person_id","name","strasse","plz","ort","gemeinde","nation","typ","heimatadresse","zustelladresse","firma_id","updateamum","updatevon","insertamum","insertvon","ext_id","rechnungsadresse","anmerkung", "co_name"), + "public.tbl_adressentyp" => array("adressentyp_kurzbz", "bezeichnung", "bezeichnung_mehrsprachig", "sort"), "public.tbl_akte" => array("akte_id","person_id","dokument_kurzbz","uid","inhalt","mimetype","erstelltam","gedruckt","titel","bezeichnung","updateamum","updatevon","insertamum","insertvon","ext_id","dms_id","nachgereicht","anmerkung","titel_intern","anmerkung_intern","nachgereicht_am","ausstellungsnation","formal_geprueft_amum","archiv","signiert","stud_selfservice","akzeptiertamum"), "public.tbl_ampel" => array("ampel_id","kurzbz","beschreibung","benutzer_select","deadline","vorlaufzeit","verfallszeit","insertamum","insertvon","updateamum","updatevon","email","verpflichtend","buttontext"), "public.tbl_ampel_benutzer_bestaetigt" => array("ampel_benutzer_bestaetigt_id","ampel_id","uid","insertamum","insertvon"), From 79d7f91794892954366f48a05d0d6fdcc0352379 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Mon, 4 Oct 2021 09:57:51 +0200 Subject: [PATCH 030/354] deleted ; --- include/adresse.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/adresse.class.php b/include/adresse.class.php index 801a95650..0d4e6a7ca 100644 --- a/include/adresse.class.php +++ b/include/adresse.class.php @@ -526,7 +526,7 @@ class adresse extends basis_db public function getAdressentyp() { - $qry = "SELECT * FROM public.tbl_adressentyp ORDER BY sort;"; + $qry = "SELECT * FROM public.tbl_adressentyp ORDER BY sort"; if($this->db_query($qry)) { From 3ff3353aae398d9dc910b4bd5ee5490d217752ec Mon Sep 17 00:00:00 2001 From: ma0068 Date: Fri, 8 Oct 2021 10:24:46 +0200 Subject: [PATCH 031/354] Aufnahme von hacek-Sonderzeichen in Funktion covertProblemChars --- content/mitarbeiter/mitarbeiteroverlay.js.php | 13 ++++ include/functions.inc.php | 64 +++++++++++-------- 2 files changed, 49 insertions(+), 28 deletions(-) diff --git a/content/mitarbeiter/mitarbeiteroverlay.js.php b/content/mitarbeiter/mitarbeiteroverlay.js.php index b87a309f8..13a6d011c 100644 --- a/content/mitarbeiter/mitarbeiteroverlay.js.php +++ b/content/mitarbeiter/mitarbeiteroverlay.js.php @@ -2010,3 +2010,16 @@ function MitarbeiterUDFIFrameLoad() } catch(e) {} } + +// **** +// * Validierung Alias auf Sonderzeichen (analog zu checkWunschUid, außerdem . und _ erlaubt) +// **** +function checkAlias() +{ + var alias = document.getElementById('mitarbeiter-detail-textbox-alias').value; + + if (/^[a-z0-9 . _]*$/i.test(alias) === false) + { + alert('Der Alias darf keine Sonderzeichen enthalten'); + } +} diff --git a/include/functions.inc.php b/include/functions.inc.php index 587860982..8109a2035 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -455,42 +455,50 @@ function intersect($str1, $str2) * Konvertiert Problematische Sonderzeichen in Strings fuer * Accountnamen und EMail-Aliase * - * @param $str - * @return bereinigter String + * @param string $str Inputparameter. + * @return string bereinigter String. */ function convertProblemChars($str) { $enc = 'UTF-8'; $acentos = array( - 'A' => '/À|Á|Â|Ã|Å/', - 'Ae' => '/Ä/', - 'a' => '/à|á|â|ã|å/', - 'ae'=> '/ä/', - 'C' => '/Ç/', - 'c' => '/ç/', - 'E' => '/È|É|Ê|Ë/', - 'e' => '/è|é|ê|ë/', - 'I' => '/Ì|Í|Î|Ï/', - 'i' => '/ì|í|î|ï/', - 'N' => '/Ñ/', - 'n' => '/ñ/', - 'O' => '/Ò|Ó|Ô|Õ/', - 'Oe' => '/Ö/', - 'o' => '/ò|ó|ô|õ/', - 'oe' => '/ö/', - 'U' => '/Ù|Ú|Û/', - 'Ue' => '/Ü/', - 'u' => '/ù|ú|û/', - 'ue' => '/ü/', - 'Y' => '/Ý/', - 'y' => '/ý|ÿ/', - 'a.' => '/ª/', - 'o.' => '/º/', - 'ss' => '/ß/' + 'A' => '/À|Á|Â|Ã|Å|Ă|Ǎ/', + 'Ae' => '/Ä/', + 'a' => '/à|á|â|ã|å|ă|ǎ/', + 'ae' => '/ä/', + 'C' => '/Ç|Č/', + 'c' => '/ç|č/', + 'E' => '/È|É|Ê|Ë/', + 'e' => '/è|é|ê|ë/', + 'I' => '/Ì|Í|Î|Ï|Ǐ/', + 'i' => '/ì|í|î|ï|ǐ/', + 'N' => '/Ñ|Ň|ň/', + 'n' => '/ñ/', + 'O' => '/Ò|Ó|Ô|Õ|Ǒ/', + 'Oe' => '/Ö/', + 'o' => '/ò|ó|ô|õ|ǒ/', + 'oe' => '/ö/', + 'R' => '/Ř/', + 'r' => '/ř/', + 'S' => '/Š/', + 's' => '/š/', + 'T' => '/Ť/', + 't' => '/ť/', + 'U' => '/Ù|Ú|Û|Ŭ|Ǔ/', + 'Ue' => '/Ü/', + 'u' => '/ù|ú|û|ŭ|ǔ/', + 'ue' => '/ü/', + 'Y' => '/Ý/', + 'y' => '/ý|ÿ/', + 'Z' => '/Ž/', + 'z' => '/ž/', + 'a.' => '/ª/', + 'o.' => '/º/', + 'ss' => '/ß/' ); - return preg_replace($acentos, array_keys($acentos), htmlentities($str,ENT_NOQUOTES, $enc)); + return preg_replace($acentos, array_keys($acentos), htmlentities($str, ENT_NOQUOTES | ENT_HTML5, $enc)); } //Ersetzt alle Problemzeichen in einem String bevor dieser als xml oder rdf ausgegeben wird From 4f0b34137b3a943067094beba2785c7e6bb93f5a Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Mon, 11 Oct 2021 18:48:25 +0200 Subject: [PATCH 032/354] replacement of hatschek letters added in hlp_common_helper.php to be the same as in function.inc.php --- application/helpers/hlp_common_helper.php | 34 ++++++++++++++--------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/application/helpers/hlp_common_helper.php b/application/helpers/hlp_common_helper.php index a7eda8827..7b937d73d 100644 --- a/application/helpers/hlp_common_helper.php +++ b/application/helpers/hlp_common_helper.php @@ -314,32 +314,40 @@ function sanitizeProblemChars($str) $enc = 'UTF-8'; $acentos = array( - 'A' => '/À|Á|Â|Ã|Å/', + 'A' => '/À|Á|Â|Ã|Å|Ă|Ǎ/', 'Ae' => '/Ä/', - 'a' => '/à|á|â|ã|å/', - 'ae'=> '/ä/', - 'C' => '/Ç/', - 'c' => '/ç/', + 'a' => '/à|á|â|ã|å|ă|ǎ/', + 'ae' => '/ä/', + 'C' => '/Ç|Č/', + 'c' => '/ç|č/', 'E' => '/È|É|Ê|Ë/', 'e' => '/è|é|ê|ë/', - 'I' => '/Ì|Í|Î|Ï/', - 'i' => '/ì|í|î|ï/', - 'N' => '/Ñ/', + 'I' => '/Ì|Í|Î|Ï|Ǐ/', + 'i' => '/ì|í|î|ï|ǐ/', + 'N' => '/Ñ|Ň|ň/', 'n' => '/ñ/', - 'O' => '/Ò|Ó|Ô|Õ/', + 'O' => '/Ò|Ó|Ô|Õ|Ǒ/', 'Oe' => '/Ö/', - 'o' => '/ò|ó|ô|õ/', + 'o' => '/ò|ó|ô|õ|ǒ/', 'oe' => '/ö/', - 'U' => '/Ù|Ú|Û/', + 'R' => '/Ř/', + 'r' => '/ř/', + 'S' => '/Š/', + 's' => '/š/', + 'T' => '/Ť/', + 't' => '/ť/', + 'U' => '/Ù|Ú|Û|Ŭ|Ǔ/', 'Ue' => '/Ü/', - 'u' => '/ù|ú|û/', + 'u' => '/ù|ú|û|ŭ|ǔ/', 'ue' => '/ü/', 'Y' => '/Ý/', 'y' => '/ý|ÿ/', + 'Z' => '/Ž/', + 'z' => '/ž/', 'a.' => '/ª/', 'o.' => '/º/', 'ss' => '/ß/' ); - return preg_replace($acentos, array_keys($acentos), htmlentities($str,ENT_NOQUOTES, $enc)); + return preg_replace($acentos, array_keys($acentos), htmlentities($str, ENT_NOQUOTES | ENT_HTML5, $enc)); } From 35cdac0438dc7399028c2b500a5b0e64bd981295 Mon Sep 17 00:00:00 2001 From: cris-technikum Date: Tue, 12 Oct 2021 10:51:10 +0200 Subject: [PATCH 033/354] Small Code Enhencement Signed-off-by: cris-technikum --- .../lehre/anrechnung/ApproveAnrechnungUebersicht.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/application/controllers/lehre/anrechnung/ApproveAnrechnungUebersicht.php b/application/controllers/lehre/anrechnung/ApproveAnrechnungUebersicht.php index 70fae2b57..25c802caf 100644 --- a/application/controllers/lehre/anrechnung/ApproveAnrechnungUebersicht.php +++ b/application/controllers/lehre/anrechnung/ApproveAnrechnungUebersicht.php @@ -379,23 +379,24 @@ class approveAnrechnungUebersicht extends Auth_Controller $this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel'); $result = $this->LehrveranstaltungModel->getLecturersByLv($anrechnung['studiensemester_kurzbz'], $anrechnung['lehrveranstaltung_id']); - if (!$result = getData($result)) + if (!hasData($result)) { show_error('Failed retrieving lectors of Lehrveranstaltung'); } + $lecturersByLv = getData($result); + // Check if lv has LV-Leitung - $key = array_search(true, array_column($result, 'lvleiter')); - + $key = array_search(true, array_column($lecturersByLv, 'lvleiter')); // If lv has LV-Leitung, keep only the one if ($key !== false) { - $lector_arr[]= $result[$key]; + $lector_arr[]= $lecturersByLv[$key]; } // ...otherwise keep all lectors else { - $lector_arr = array_merge($lector_arr, $result); + $lector_arr = array_merge($lector_arr, $lecturersByLv); } } From 8677cbf6dc9dd4b1c878cf8ba404534ff2e90d8b Mon Sep 17 00:00:00 2001 From: cris-technikum Date: Tue, 12 Oct 2021 12:11:06 +0200 Subject: [PATCH 034/354] Fixed requesting Anrechnungsantrag although grade is a blocking grade Blocking grades (eg angerechnet), that should not allow the student to request for Anrechnung, were not fully blocking. This is fixed now. Signed-off-by: cris-technikum --- .../controllers/lehre/anrechnung/RequestAnrechnung.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/controllers/lehre/anrechnung/RequestAnrechnung.php b/application/controllers/lehre/anrechnung/RequestAnrechnung.php index 306ce5841..bc886a876 100644 --- a/application/controllers/lehre/anrechnung/RequestAnrechnung.php +++ b/application/controllers/lehre/anrechnung/RequestAnrechnung.php @@ -324,8 +324,8 @@ class requestAnrechnung extends Auth_Controller private function _LVhasBlockingGrades($studiensemester_kurzbz, $lehrveranstaltung_id) { // Get Note of Lehrveranstaltung - $this->load->model('education/Lvgesamtnote_model', 'LvgesamtnoteModel'); - $result = $this->LvgesamtnoteModel->load(array( + $this->load->model('education/Zeugnisnote_model', 'ZeugnisnoteModel'); + $result = $this->ZeugnisnoteModel->load(array( 'student_uid' => $this->_uid, 'studiensemester_kurzbz' => $studiensemester_kurzbz, 'lehrveranstaltung_id' => $lehrveranstaltung_id From f82315cfe748aaa25bdf1241eddf6aa9969df3aa Mon Sep 17 00:00:00 2001 From: ma0048 Date: Wed, 13 Oct 2021 10:46:05 +0200 Subject: [PATCH 035/354] ermoeglicht das einloggen wenn 2 Reihungstests am selben Tag sind --- cis/testtool/login.php | 5 +++-- include/reihungstest.class.php | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/cis/testtool/login.php b/cis/testtool/login.php index a738c0a88..f10d4928a 100644 --- a/cis/testtool/login.php +++ b/cis/testtool/login.php @@ -132,7 +132,7 @@ if (isset($_REQUEST['prestudent'])) } else { - if ($rt->getReihungstestPersonDatum($ps->prestudent_id, date('Y-m-d'))) + if ($rt->getReihungstestPersonDatum($ps->prestudent_id, $ps->studiengang_kz, date('Y-m-d'))) { // TODO Was ist wenn da mehrere Zurueckkommen?! if (isset($rt->result[0])) @@ -149,6 +149,7 @@ if (isset($_REQUEST['prestudent'])) } if ($reihungstest_id != '' && $rt->load($reihungstest_id)) { + if ($rt->freigeschaltet) { // regenerate Session ID after Login @@ -699,7 +700,7 @@ else // LOGIN Site (vor Login) else $selected=''; echo ' - \n'; + \n'; } // An der FHTW gibt es 3 Testuser für den Camus International if (CAMPUS_NAME == 'FH Technikum Wien') diff --git a/include/reihungstest.class.php b/include/reihungstest.class.php index f5cd72b4a..138c6996e 100644 --- a/include/reihungstest.class.php +++ b/include/reihungstest.class.php @@ -1245,7 +1245,7 @@ class reihungstest extends basis_db * @param date $datum Datum an dem der Reihugnstest stattfindet. * @return boolean true wenn erfolgreich geladen, false im Fehlerfall */ - public function getReihungstestPersonDatum($prestudent_id, $datum) + public function getReihungstestPersonDatum($prestudent_id, $studiengang_kz,$datum) { $qry = "SELECT tbl_rt_person.* @@ -1255,6 +1255,7 @@ class reihungstest extends basis_db JOIN public.tbl_reihungstest ON(tbl_reihungstest.reihungstest_id=tbl_rt_person.rt_id) WHERE tbl_prestudent.prestudent_id = ".$this->db_add_param($prestudent_id)." + AND tbl_reihungstest.studiengang_kz = ". $this->db_add_param($studiengang_kz) ." AND tbl_reihungstest.datum=".$this->db_add_param($datum); if ($result = $this->db_query($qry)) { From 9d08d0067653e3321d499acbecbfaaad59034a73 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Thu, 14 Oct 2021 15:37:15 +0200 Subject: [PATCH 036/354] tbl_adresse typ von char auf varchar geaendert --- system/dbupdate_3.3.php | 1 + 1 file changed, 1 insertion(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 7d16dad1b..b857c7c64 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4941,6 +4941,7 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_adressentyp LIMIT 1;")) UPDATE public.tbl_adresse SET typ = 'h' WHERE person_id IS NOT NULL AND typ IS NULL; ALTER TABLE public.tbl_adresse ADD CONSTRAINT fk_tbl_adresse_adressentyp FOREIGN KEY (typ) REFERENCES public.tbl_adressentyp (adressentyp_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT; + ALTER TABLE public.tbl_adresse ALTER COLUMN typ TYPE varchar(32); GRANT SELECT, INSERT, UPDATE, DELETE ON public.tbl_adressentyp TO vilesci; GRANT SELECT ON public.tbl_adressentyp TO web; From 269f3542d7b28bd4f485ef877c8b69a43d751fd8 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Thu, 14 Oct 2021 15:39:17 +0200 Subject: [PATCH 037/354] Zeiterfassung: keine Bis-Buchungen 00:00:00 bzw. 24:00:00 erlaubt --- cis/private/tools/zeitaufzeichnung.php | 27 +++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index fcf3dd811..92f32d114 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -861,10 +861,11 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) } else { - $vonCSV = $datum->formatDatum($data[2], $format='Y-m-d'); - $bisCSV = $datum->formatDatum($data[3], $format='Y-m-d'); + $vonCSV = $datum->formatDatum($data[2], $format = 'Y-m-d'); + $bisCSV = $datum->formatDatum($data[3], $format = 'Y-m-d'); $dateVonCSV = new DateTime($vonCSV); $dateBisCSV = new DateTime($bisCSV); + $extractHourBis = $datum->formatDatum($data[3], $format = 'H:i:s'); if (!isset($data[5])) $data[5] = NULL; @@ -882,6 +883,10 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) { echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da keine Zeitaufzeichnung über mehrere Tage erlaubt ist (ausgenommen Dienstreisen).
'; } + elseif ($extractHourBis == '00:00:00') + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Bitte Arbeitszeiten gemäß Arbeitsaufzeichnung Leitfaden tagesgenau abgrenzen: Nur Eingaben von 00:00 bis 23:59 erlaubt!
'; + } elseif (empty($data[7]) && !empty($data[6]) && !$projects_of_user->checkProjectInCorrectTime($data[6], $data[2], $data[3])) { echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt: ('.$data[2].') ('.$data[3].')
'; @@ -932,18 +937,13 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $verwendung->getVerwendungDatum($data[0],$vonCSV); foreach ($verwendung->result as $v) - // echo "homeoffice für Tag " . $vonCSV . " ". $v->homeoffice . " " . $v->bisverwendung_id . "
"; - if ($v->homeoffice) { - - // echo "homeoffice erlaubt
"; $zeit->homeoffice = true; } else { echo ''.$p->t("zeitaufzeichnung/homeofficeNichtErlaubt", ($vonCSV)) .'
'; - $zeit->homeoffice = false; } } @@ -1050,8 +1050,8 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $zeit->uid = $user; $zeit->aktivitaet_kurzbz = $aktivitaet_kurzbz; - $zeit->start = $datum->formatDatum($von, $format='Y-m-d H:i:s'); - $zeit->ende = $datum->formatDatum($bis, $format='Y-m-d H:i:s'); + $zeit->start = $datum->formatDatum($von, $format = 'Y-m-d H:i:s'); + $zeit->ende = $datum->formatDatum($bis, $format = 'Y-m-d H:i:s'); $zeit->beschreibung = $beschreibung; $zeit->oe_kurzbz_1 = $oe_kurzbz_1; $zeit->oe_kurzbz_2 = $oe_kurzbz_2; @@ -1063,6 +1063,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $zeit->service_id = $service_id; $zeit->kunde_uid = $kunde_uid; $saveerror = 0; + $extractTimeBis = $datum->formatDatum($bis, $format = 'H:i:s'); if (!$projects_of_user->checkProjectInCorrectTime($projekt_kurzbz, $datum->formatDatum($von, $format='Y-m-d'), $datum->formatDatum($bis, $format='Y-m-d'))) { @@ -1081,11 +1082,16 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $saveerror = 1; } - elseif (abs($von-$bis)>0 && $aktivitaet_kurzbz!="DienstreiseMT") + elseif (abs($von-$bis)>0 && $aktivitaet_kurzbz!="DienstreiseMT" && $extractTimeBis != '00:00:00') { echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da keine Zeitaufzeichnung über mehrere Tage erlaubt ist (ausgenommen Dienstreisen).
'; $saveerror = 1; } + elseif ($extractTimeBis == '00:00:00') + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Bitte Arbeitszeiten gemäß Arbeitsaufzeichnung Leitfaden tagesgenau abgrenzen: Nur Eingaben von 00:00 bis 23:59 erlaubt!
'; + $saveerror = 1; + } elseif (isset($_POST['genPause']) && (isset($_POST['save']) || isset($_POST['edit']))) { @@ -1765,7 +1771,6 @@ if ($projekt->getProjekteMitarbeiter($user, true)) } else $zeitsperre_text = ''; - //var_dump($zs->result); if (isset($_GET["von_datum"]) && $datum->formatDatum($tag, 'd.m.Y') == $_GET["von_datum"]) $style = 'style="border-top: 3px solid #8DBDD8; border-bottom: 3px solid #8DBDD8"'; From aa3a52f201ad0ead1dbf4f561a99d45fb148fade Mon Sep 17 00:00:00 2001 From: ma0068 Date: Fri, 15 Oct 2021 11:36:15 +0200 Subject: [PATCH 038/354] =?UTF-8?q?Aufnahme=20PhasenReset=20f=C3=BCr=20neu?= =?UTF-8?q?e=20Validierung=20Zeitabgrenzung=2000:00:00?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/tools/zeitaufzeichnung.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index b938b3cb1..8171262b4 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -1089,7 +1089,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) } elseif ($extractTimeBis == '00:00:00') { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Bitte Arbeitszeiten gemäß Arbeitsaufzeichnung Leitfaden tagesgenau abgrenzen: Nur Eingaben von 00:00 bis 23:59 erlaubt!
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Bitte Arbeitszeiten gemäß Arbeitsaufzeichnung Leitfaden tagesgenau abgrenzen: Nur Eingaben von 00:00 bis 23:59 erlaubt!
'; $saveerror = 1; } elseif (isset($_POST['genPause']) && (isset($_POST['save']) || isset($_POST['edit']))) From b6b347ff8b0274568cf823b97e0499977f765817 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Mon, 18 Oct 2021 11:10:13 +0200 Subject: [PATCH 039/354] Merge Detailsicht Vorgesetzte --- cis/private/tools/zeitaufzeichnung.php | 99 ++++++++++++++++++-------- 1 file changed, 71 insertions(+), 28 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index fcf3dd811..e4cfbf892 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -61,16 +61,24 @@ $passuid = false; $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); +$mas = new mitarbeiter(); +$mas->getUntergebene($user, true); +$untergebenen_arr = array(); +$untergebenen_arr = $mas->untergebene; +$adminView = false; + //Wenn User Administrator ist und UID uebergeben wurde, dann die Zeitaufzeichnung //des uebergebenen Users anzeigen if(isset($_GET['uid'])) { - if($rechte->isBerechtigt('admin') || $rechte->isBerechtigt('mitarbeiter/urlaube', null, 'suid')) + if ($rechte->isBerechtigt('admin') || $rechte->isBerechtigt('mitarbeiter/urlaube', null, 'suid') || + (in_array($_GET['uid'], $untergebenen_arr))) { $user = $_GET['uid']; $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); $passuid = true; + $adminView = true; } else { @@ -1287,13 +1295,33 @@ if ($projekt->getProjekteMitarbeiter($user, true)) } echo '

'.$p->t("urlaubstool/meineZeitsperren").'

'; echo $p->t("zeitaufzeichnung/supportAnfragen"); - echo ' - -
'; + echo ''; + if (isset($_GET['projektexport'])) + { + $projektexpurl = dirname($_SERVER["PHP_SELF"]) .'/zeitaufzeichnung_projektliste.php'; + $aktjahr = intval(date("Y")); + $aktmonat = intval(date("m")) - 1; + $jahreanz = 3; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + if ($passuid) + echo ''; + echo ''; + echo ''; + echo ''; + } - //OE_KURZBZ_1 - echo ' - '; + echo '

'.$p->t('zeitaufzeichnung/projektexport').''.$p->t('zeitaufzeichnung/monat').' '.$p->t('zeitaufzeichnung/jahr').'

'.$p->t("zeitaufzeichnung/organisationseinheiten").' + + '; + if (!$adminView) + { + echo '
'; + } + echo ''; + echo '
'; - echo '
'; + echo '';*/ + if (isset($_GET['csvimport'])) + { + echo ''; + echo ''; + echo ''; + echo ''; + } + else + echo ''; + + if (isset($_GET['csvexport'])) + { + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + } + + if (isset($_GET['projektübersichtexport'])) + { + + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + + } + + //Aktivitaet + echo ''; + echo ''; + + + if($za_simple >= 0) + { + $oestyle = ''; + if($za_simple == 0) + $oestyle = 'style="width:200px;"'; + + //OE_KURZBZ_1 + echo ' + '; + echo ''; } + echo ''; + } - //Projekte werden nicht angezeigt wenn es keine gibt - if($anzprojekte > 0) + //Projekte werden nicht angezeigt wenn es keine gibt + if($anzprojekte > 0) + { + //Projekt + echo ' + + - - '; + echo ''; } + echo ''; + } - if ($za_simple == 0) + if ($za_simple == 0) + { + // Service + echo ' + + - - - '; - - // person für Kundenvoransicht laden - $kunde_name = ''; - if($kunde_uid != '') - { - $user_kunde = new benutzer(); - - if($user_kunde->load($kunde_uid)) - $kunde_name=$user_kunde->vorname.' '.$user_kunde->nachname; - } - echo ' - - - + echo ''; + } + echo ''; - echo ''; - } - //Start/Ende - $von_ts = $datum->mktime_fromtimestamp($datum->formatDatum($von, $format='Y-m-d H:i:s')); - $bis_ts = $datum->mktime_fromtimestamp($datum->formatDatum($bis, $format='Y-m-d H:i:s')); - $diff = $bis_ts - $von_ts; + // person für Kundenvoransicht laden + $kunde_name = ''; + if($kunde_uid != '') + { + $user_kunde = new benutzer(); + + if($user_kunde->load($kunde_uid)) + $kunde_name=$user_kunde->vorname.' '.$user_kunde->nachname; + } echo ' - - + + '; + echo ''; + } + + //Start/Ende + $von_ts = $datum->mktime_fromtimestamp($datum->formatDatum($von, $format='Y-m-d H:i:s')); + $bis_ts = $datum->mktime_fromtimestamp($datum->formatDatum($bis, $format='Y-m-d H:i:s')); + $diff = $bis_ts - $von_ts; + echo ' + + + '; + if ($za_simple == 0 || $anzprojekte > 0) + { + echo ' + '; - if ($za_simple == 0 || $anzprojekte > 0) - { - echo ' - '; + } + echo ' + + '; + echo ' + + + + + '; -   + - - min. - -   - - '; - } - else - { - echo ''; - } - echo ' - - '; - echo ' - - - - - '; + if (!$adminView) + { //Beschreibung echo ''; echo ''; else { @@ -1514,91 +1488,93 @@ if($projekt->getProjekteMitarbeiter($user, true)) echo '  '; echo ''; } + } echo '

CSV-Import
Informationen zum Format der CSV-Datei s. Leitfaden Arbeitszeitaufzeichnung


CSV-Export'.$p->t('zeitaufzeichnung/startdatum').' '.$p->t('zeitaufzeichnung/enddatum').'


CSV-Export

'.$p->t("zeitaufzeichnung/aktivitaet").''; + //if ($za_simple == 1) + $qry = "SELECT * FROM fue.tbl_aktivitaet where aktivitaet_kurzbz in (".$activities_str.") ORDER by sort,beschreibung"; + //else + // $qry = "SELECT * FROM fue.tbl_aktivitaet where sort != 5 or sort is null ORDER by sort,beschreibung"; + if($result = $db->db_query($qry)) + { + echo ''; + } + echo '
'.$p->t("zeitaufzeichnung/organisationseinheiten").'     '; + if($za_simple == 0) + { + //OE_KURZBZ_2 + echo '     '; - if($za_simple == 0) - { - //OE_KURZBZ_2 - echo ''; - } - echo '
'.$p->t("zeitaufzeichnung/projekt").'
'.$p->t("zeitaufzeichnung/projekt").''; + + //Projektphase + $showprojphases = isset($projektphasen) && is_array($projektphasen) && count($projektphasen) > 0 && $projektfound; + $hiddentext = $showprojphases ? "" : " style='display:none'"; + + echo + '    '. + $p->t("zeitaufzeichnung/projektphase").' + '; - - //Projektphase - $showprojphases = isset($projektphasen) && is_array($projektphasen) && count($projektphasen) > 0 && $projektfound; - $hiddentext = $showprojphases ? "" : " style='display:none'"; - - echo - '    '. - $p->t("zeitaufzeichnung/projektphase").' - '; - } - echo '
'.$p->t('zeitaufzeichnung/service').'
'.$p->t('zeitaufzeichnung/service').'
'.$p->t("zeitaufzeichnung/kunde").' '.$p->t("zeitaufzeichnung/oderKartennummerOptional").' -
 
'.$p->t("global/von").' - '.$p->t("global/bis").' - - + '.$p->t("zeitaufzeichnung/kunde").' '.$p->t("zeitaufzeichnung/oderKartennummerOptional").' +
 
'.$p->t("global/von").' - '.$p->t("global/bis").' + + + +   + + +   + + + min. + +   + -   - + } + else + { + echo ' -  + + +
  + + '.$p->t("zeitaufzeichnung/pauseEinfuegen").' - + +
 -  - - -
  - - '.$p->t("zeitaufzeichnung/pauseEinfuegen").' - - -
'.$p->t("global/beschreibung").'
'; //SpeichernButton - if($zeitaufzeichnung_id=='') + if($zeitaufzeichnung_id == '') echo '
'; + echo '


'; - echo '


'; - echo '
'; + // Summen Lehre anzeigen + $bv = new bisverwendung(); + $bv->getLastAktVerwendung($user); + $lehre_inkludiert = $bv->inkludierte_lehre; + if (!$lehre_inkludiert) + $lehre_inkludiert = 0; - // Summen Lehre anzeigen - $bv = new bisverwendung(); - $bv->getLastAktVerwendung($user); - $lehre_inkludiert = $bv->inkludierte_lehre; - if (!$lehre_inkludiert) - $lehre_inkludiert = 0; - - $stsem = new studiensemester(); - $sem_akt = $stsem->getakt(); - $lehre = new zeitaufzeichnung(); - $l_arr = $lehre->getLehreForUser($user, $sem_akt); - if ($l_arr["LehreAuftraege"]>0 || $l_arr["Lehre"] > 0 || $l_arr["LehreExtern"] > 0) + $stsem = new studiensemester(); + $sem_akt = $stsem->getakt(); + $lehre = new zeitaufzeichnung(); + $l_arr = $lehre->getLehreForUser($user, $sem_akt); + if ($l_arr["LehreAuftraege"]>0 || $l_arr["Lehre"] > 0 || $l_arr["LehreExtern"] > 0) + { + if ($lehre_inkludiert == -1) { - if ($lehre_inkludiert == -1) - { - $l_extern_soll = 0; - $lehre_inkludiert = $l_arr["LehreAuftraege"]; - } - else - $l_extern_soll = $l_arr["LehreAuftraege"]-$lehre_inkludiert; - $l_extern_soll_norm = $l_extern_soll/4*3; - $lehre_inkludiert_norm = $lehre_inkludiert/4*3; - echo ''; - echo ''; - echo ''; - echo ''; - if ($lehre_inkludiert > 0 || $l_arr["Lehre"] > 0) - echo ''; - if ($l_extern_soll > 0 || $l_arr["LehreExtern"] > 0) - echo ''; - - echo '

Übersicht Lehre '.$sem_akt.'

(in Stunden)
beauftragt (LE)gebucht
Lehre:'.$lehre_inkludiert_norm.' ('.$lehre_inkludiert.')'.$l_arr["Lehre"].'
LehreExtern:'.$l_extern_soll_norm.' ('.$l_extern_soll.')'.$l_arr["LehreExtern"].'
'; + $l_extern_soll = 0; + $lehre_inkludiert = $l_arr["LehreAuftraege"]; } - - echo '
'; - echo ''; - - echo '
'; - echo '

'.($alle===true?$p->t('zeitaufzeichnung/alleEintraege'):$p->t('zeitaufzeichnung/xTageAnsicht', array($angezeigte_tage))).'

'; - if ($alle===true) - echo ''; else - echo ''; - //echo ''; + $l_extern_soll = $l_arr["LehreAuftraege"]-$lehre_inkludiert; + $l_extern_soll_norm = $l_extern_soll/4*3; + $lehre_inkludiert_norm = $lehre_inkludiert/4*3; + echo ''; + echo ''; + echo ''; + echo ''; + if ($lehre_inkludiert > 0 || $l_arr["Lehre"] > 0) + echo ''; + if ($l_extern_soll > 0 || $l_arr["LehreExtern"] > 0) + echo ''; - $za = new zeitaufzeichnung(); - if(isset($_GET['filter'])) - $za->getListeProjekt($_GET['filter']); - else - { - if ($alle==true) - $za->getListeUserFull($user, ''); - else - $za->getListeUserFull($user, $angezeigte_tage); - } + echo '

Übersicht Lehre '.$sem_akt.'

(in Stunden)
beauftragt (LE)gebucht
Lehre:'.$lehre_inkludiert_norm.' ('.$lehre_inkludiert.')'.$l_arr["Lehre"].'
LehreExtern:'.$l_extern_soll_norm.' ('.$l_extern_soll.')'.$l_arr["LehreExtern"].'
'; + } - $summe=0; - $dr = new zeitaufzeichnung(); - $dr->getDienstreisenUser($user, 180); - $dr_arr = $dr->result; + echo '
'; + echo ''; - //var_dump($dr->result); + echo '
'; + echo '

'.($alle===true?$p->t('zeitaufzeichnung/alleEintraege'):$p->t('zeitaufzeichnung/xTageAnsicht', array($angezeigte_tage))).'

'; + if ($alle===true) + echo ''; + else + echo ''; + //echo ''; + $za = new zeitaufzeichnung(); + if(isset($_GET['filter'])) + $za->getListeProjekt($_GET['filter']); + else + { + if ($alle==true) + $za->getListeUserFull($user, ''); + else + $za->getListeUserFull($user, $angezeigte_tage); + } + $summe=0; + $dr = new zeitaufzeichnung(); + $dr->getDienstreisenUser($user, 180); + $dr_arr = $dr->result; + //var_dump($dr->result); - if(count($za->result)>0) - { - //Uebersichtstabelle - $woche=date('W'); - $colspan=($za_simple)?12:14; - echo ' - + if(count($za->result)>0) + { + //Uebersichtstabelle + $woche=date('W'); + $colspan=($za_simple)?12:14; + echo ' +
- - - '; - printTableHeadings($fieldheadings, $za_simple); + + + '; + printTableHeadings($fieldheadings, $za_simple); $tag=null; @@ -1618,196 +1594,196 @@ if($projekt->getProjekteMitarbeiter($user, true)) $pflichtpause = false; - foreach($za->result as $row) + foreach($za->result as $row) + { + $datumtag = $datum_obj->formatDatum($row->datum, 'Y-m-d'); + + // Nach jedem Tag eine Summenzeile einfuegen + if(is_null($tag)) + $tag = $datumtag; + if($tag!=$datumtag) { - $datumtag = $datum_obj->formatDatum($row->datum, 'Y-m-d'); - // Nach jedem Tag eine Summenzeile einfuegen - if(is_null($tag)) - $tag = $datumtag; - if($tag!=$datumtag) + //if ($row->uid) + //{ + if ($datum->formatDatum($tag,'N') == '6' || $datum->formatDatum($tag,'N') == '7') + $style = 'style="background-color:#eeeeee; font-size: 8pt;"'; + else + $style = 'style="background-color:#DCE4EF; font-size: 8pt;"'; + + // zeitsperren anzeigen + if (array_key_exists($datum->formatDatum($tag,'Y-m-d'), $zeitsperren)) { - - //if ($row->uid) - //{ - if ($datum->formatDatum($tag,'N') == '6' || $datum->formatDatum($tag,'N') == '7') - $style = 'style="background-color:#eeeeee; font-size: 8pt;"'; - else - $style = 'style="background-color:#DCE4EF; font-size: 8pt;"'; - - // zeitsperren anzeigen - if (array_key_exists($datum->formatDatum($tag,'Y-m-d'), $zeitsperren)) - { - $zeitsperre_text = " -- ".$zeitsperren[$datum->formatDatum($tag,'Y-m-d')]." -- "; - $style = 'style="background-color:#cccccc; font-size: 8pt;"'; - } - else - $zeitsperre_text = ''; - //var_dump($zs->result); - if (isset($_GET["von_datum"]) && $datum->formatDatum($tag, 'd.m.Y') == $_GET["von_datum"]) - $style = 'style="border-top: 3px solid #8DBDD8; border-bottom: 3px solid #8DBDD8"'; - - list($h1, $m1) = explode(':', $pausesumme); - $pausesumme = $h1*3600+$m1*60; - $tagessaldo = $datum->mktime_fromtimestamp($datum->formatDatum($tagesende, $format='Y-m-d H:i:s'))-$datum->mktime_fromtimestamp($datum->formatDatum($tagesbeginn, $format='Y-m-d H:i:s'))-3600; - foreach($extlehrearr as $el) - { - if ($el["start"] > $tagesbeginn && $el["ende"] < $tagesende) - $elsumme = $datum_obj->sumZeit($elsumme, $el["diff"]); - } - list($h2, $m2) = explode(':', $elsumme); - $elsumme = $h2*3600+$m2*60; - if ($datum->formatDatum($tag, 'Y-m-d') >= '2019-11-06') - { - $pausesumme = $pausesumme; - } - else if ($tagessaldo > 18000 && $tagessaldo < 19800 && $pflichtpause==false && $elsumme == 0) - { - $pausesumme = $tagessaldo-18000; - } - else if ($tagessaldo>18000 && $pflichtpause==false && $elsumme == 0) - { - $pausesumme = $pausesumme+1800; - } - - if ($elsumme > 0){ - $pausesumme = $pausesumme + $elsumme; - $pflichtpause = true; - } - - $tagessaldo = $tagessaldo-$pausesumme; - // fehlende Pausen berechnen - $pausefehlt_str = ''; - if ($tagessaldo > 19800 && $pausesumme < 1800) - $pausefehlt_str = '-- Pause fehlt oder zu kurz --'; - elseif ($tagessaldo > 18000 && $tagessaldo < 19800 && $pausesumme < $tagessaldo - 18000) - $pausefehlt_str = '-- Pause fehlt oder zu kurz --'; - - $tagessaldo = date('H:i', ($tagessaldo)); - $colspan = ($za_simple)?6:8; - echo ' - - - '; - - - - $tag=$datumtag; - $tagessumme='00:00'; - $pausesumme='00:00'; - $elsumme='00:00'; - $ersumme = '00:00'; - $extlehrearr = array(); - $tagesbeginn = ''; - $tagesende = ''; - $pflichtpause = false; - $wochensaldo = $datum_obj->sumZeit($wochensaldo,$tagessaldo ); - //} - //else - //{ - // echo ''; - //} - + $zeitsperre_text = " -- ".$zeitsperren[$datum->formatDatum($tag,'Y-m-d')]." -- "; + $style = 'style="background-color:#cccccc; font-size: 8pt;"'; } - // Nach jeder Woche eine Summenzeile einfuegen und eine neue Tabelle beginnen - $datumwoche = $datum_obj->formatDatum($row->datum, 'W'); - if(is_null($woche)) - $woche = $datumwoche; - if($woche!=$datumwoche) + else + $zeitsperre_text = ''; + //var_dump($zs->result); + if (isset($_GET["von_datum"]) && $datum->formatDatum($tag, 'd.m.Y') == $_GET["von_datum"]) + $style = 'style="border-top: 3px solid #8DBDD8; border-bottom: 3px solid #8DBDD8"'; + + list($h1, $m1) = explode(':', $pausesumme); + $pausesumme = $h1*3600+$m1*60; + $tagessaldo = $datum->mktime_fromtimestamp($datum->formatDatum($tagesende, $format='Y-m-d H:i:s'))-$datum->mktime_fromtimestamp($datum->formatDatum($tagesbeginn, $format='Y-m-d H:i:s'))-3600; + foreach($extlehrearr as $el) { - if ($ersumme_woche != '00:00') - $erstr = ' (+ '.$ersumme_woche.')'; - else - { - $erstr = ''; - } - echo ' - - - - - - - - - - - '; - - $colspan=($za_simple)?12:14; - echo ' - - - - - - '; - printTableHeadings($fieldheadings, $za_simple); - - $woche=$datumwoche; - $wochensumme='00:00'; - $tagessumme='00:00'; - $pausesumme='00:00'; - $wochensaldo = '00:00'; - $ersumme = '00:00'; - $ersumme_woche = '00:00'; + if ($el["start"] > $tagesbeginn && $el["ende"] < $tagesende) + $elsumme = $datum_obj->sumZeit($elsumme, $el["diff"]); + } + list($h2, $m2) = explode(':', $elsumme); + $elsumme = $h2*3600+$m2*60; + if ($datum->formatDatum($tag, 'Y-m-d') >= '2019-11-06') + { + $pausesumme = $pausesumme; + } + else if ($tagessaldo > 18000 && $tagessaldo < 19800 && $pflichtpause==false && $elsumme == 0) + { + $pausesumme = $tagessaldo-18000; + } + else if ($tagessaldo>18000 && $pflichtpause==false && $elsumme == 0) + { + $pausesumme = $pausesumme+1800; } - // Diestreisen NEU - if (array_key_exists($datumtag, $dr_arr)) + if ($elsumme > 0){ + $pausesumme = $pausesumme + $elsumme; + $pflichtpause = true; + } + + $tagessaldo = $tagessaldo-$pausesumme; + // fehlende Pausen berechnen + $pausefehlt_str = ''; + if ($tagessaldo > 19800 && $pausesumme < 1800) + $pausefehlt_str = '-- Pause fehlt oder zu kurz --'; + elseif ($tagessaldo > 18000 && $tagessaldo < 19800 && $pausesumme < $tagessaldo - 18000) + $pausefehlt_str = '-- Pause fehlt oder zu kurz --'; + + $tagessaldo = date('H:i', ($tagessaldo)); + $colspan = ($za_simple)?6:8; + echo ''; - echo ''; - echo ''; - echo ' + + + '; + + + + $tag=$datumtag; + $tagessumme='00:00'; + $pausesumme='00:00'; + $elsumme='00:00'; + $ersumme = '00:00'; + $extlehrearr = array(); + $tagesbeginn = ''; + $tagesende = ''; + $pflichtpause = false; + $wochensaldo = $datum_obj->sumZeit($wochensaldo,$tagessaldo ); + //} + //else + //{ + // echo ''; + //} + + } + // Nach jeder Woche eine Summenzeile einfuegen und eine neue Tabelle beginnen + $datumwoche = $datum_obj->formatDatum($row->datum, 'W'); + if(is_null($woche)) + $woche = $datumwoche; + if($woche!=$datumwoche) + { + if ($ersumme_woche != '00:00') + $erstr = ' (+ '.$ersumme_woche.')'; + else + { + $erstr = ''; + } + echo ' + + + + + + + + + + + '; + + $colspan=($za_simple)?12:14; + echo ' + + + + + + '; + printTableHeadings($fieldheadings, $za_simple); + + $woche=$datumwoche; + $wochensumme='00:00'; + $tagessumme='00:00'; + $pausesumme='00:00'; + $wochensaldo = '00:00'; + $ersumme = '00:00'; + $ersumme_woche = '00:00'; + } + + // Diestreisen NEU + if (array_key_exists($datumtag, $dr_arr)) + { + $colspan=($za_simple)?6:8; + echo ''; + echo ''; + echo ''; + echo '\n"; - echo "\n"; - echo ''; - unset($dr_arr[$datumtag]); - } + echo "\n"; + echo "\n"; + echo ''; + unset($dr_arr[$datumtag]); + } - if ($row->uid) - { + if ($row->uid) + { $wochensumme = $datum_obj->sumZeit($wochensumme, $row->diff); if ($row->aktivitaet_kurzbz=='Pause') { @@ -1855,12 +1831,20 @@ if($projekt->getProjekteMitarbeiter($user, true)) \n"; echo " \n"; echo " \n"; @@ -1871,23 +1855,22 @@ if($projekt->getProjekteMitarbeiter($user, true)) $tagesende = $row->ende; if ($row->aktivitaet_kurzbz == 'LehreExtern') $extlehrearr[] = array("start"=>$row->start, "ende"=>$row->ende, "diff"=>$row->diff); - } - - } - echo ''; - - - if ($alle===false) - { - echo ' - - - - '; } - //echo $p->t("zeitaufzeichnung/gesamtdauer").": ".$db->convert_html_chars($summe); Aukommentiert. Irrelevant + } + echo ''; + + if ($alle===false) + { + echo ' + + + + '; } + + //echo $p->t("zeitaufzeichnung/gesamtdauer").": ".$db->convert_html_chars($summe); Aukommentiert. Irrelevant + } echo '
'.$p->t("eventkalender/kw").' '.$woche.'
'.$p->t("eventkalender/kw").' '.$woche.'
'; - - // Zusaetzlicher span fuer Addon Informationen - - $lang = getSprache(); - if ($lang == 'German') - $langindex = 1; - else - $langindex = 2; - echo ''.$tagbez[$langindex][$datum->formatDatum($tag,'N')].' '.$datum->formatDatum($tag,'d.m.Y').''.$zeitsperre_text.''.$pausefehlt_str; - if ($ersumme != '00:00') - $erstr = ' (+ '.$ersumme.' ER)'; - else - { - $erstr = ''; - } - echo ' - '.$p->t("zeitaufzeichnung/arbeitszeit").': '.$datum->formatDatum($tagesbeginn, $format='H:i').'-'.$datum->formatDatum($tagesende, $format='H:i').' '.$p->t("eventkalender/uhr").'
- '.$p->t("zeitaufzeichnung/pause").': -
'.$tagessaldo.$erstr.'
'.date('H:i', ($pausesumme-3600)).'
'; - if ($tag > $sperrdatum) - echo '<-'; - - echo '
'.$datum->formatDatum($row->datum,'D d.m.Y').'
'.$p->t("zeitaufzeichnung/wochensummeArbeitszeit").':'.$wochensaldo.$erstr.'
 
'.$p->t("eventkalender/kw").' '.$datumwoche.'
'; + + // Zusaetzlicher span fuer Addon Informationen + + $lang = getSprache(); + if ($lang == 'German') + $langindex = 1; + else + $langindex = 2; + echo ''.$tagbez[$langindex][$datum->formatDatum($tag,'N')].' '.$datum->formatDatum($tag,'d.m.Y').''.$zeitsperre_text.''.$pausefehlt_str; + if ($ersumme != '00:00') + $erstr = ' (+ '.$ersumme.' ER)'; + else { - $colspan=($za_simple)?6:8; - echo '
'.$p->t('zeitaufzeichnung/dienstreise'); - if (array_key_exists('start', $dr_arr[$datumtag]) && !array_key_exists('ende', $dr_arr[$datumtag])) - echo ' '.$p->t('global/beginn'); - if (array_key_exists('ende', $dr_arr[$datumtag]) && !array_key_exists('start', $dr_arr[$datumtag])) - echo ' '.$p->t('global/ende'); - echo ''; - if (array_key_exists('start', $dr_arr[$datumtag])) - echo $dr_arr[$datumtag]['start']; - echo ''; - if (array_key_exists('ende', $dr_arr[$datumtag])) - echo $dr_arr[$datumtag]['ende']; - echo ''; + $erstr = ''; + } + echo ' + '.$p->t("zeitaufzeichnung/arbeitszeit").': '.$datum->formatDatum($tagesbeginn, $format='H:i').'-'.$datum->formatDatum($tagesende, $format='H:i').' '.$p->t("eventkalender/uhr").'
+ '.$p->t("zeitaufzeichnung/pause").': +
'.$tagessaldo.$erstr.'
'.date('H:i', ($pausesumme-3600)).'
'; + if ($tag > $sperrdatum) + echo '<-'; + + echo '
'.$datum->formatDatum($row->datum,'D d.m.Y').'
'.$p->t("zeitaufzeichnung/wochensummeArbeitszeit").':'.$wochensaldo.$erstr.'
 
'.$p->t("eventkalender/kw").' '.$datumwoche.'
'.$p->t('zeitaufzeichnung/dienstreise'); + if (array_key_exists('start', $dr_arr[$datumtag]) && !array_key_exists('ende', $dr_arr[$datumtag])) + echo ' '.$p->t('global/beginn'); + if (array_key_exists('ende', $dr_arr[$datumtag]) && !array_key_exists('start', $dr_arr[$datumtag])) + echo ' '.$p->t('global/ende'); + echo ''; + if (array_key_exists('start', $dr_arr[$datumtag])) + echo $dr_arr[$datumtag]['start']; + echo ''; + if (array_key_exists('ende', $dr_arr[$datumtag])) + echo $dr_arr[$datumtag]['ende']; + echo ''; // if(!isset($_GET['filter']) && ($datumtag > $sperrdatum)) // echo ''.$p->t("global/bearbeiten").''; - echo ""; - if(!isset($_GET['filter']) && ($datumtag > $sperrdatum)) - echo ''.$p->t("global/loeschen").''; - echo "
"; + if(!isset($_GET['filter']) && ($datumtag > $sperrdatum)) + echo ''.$p->t("global/loeschen").''; + echo "
'.$db->convert_html_chars($row->diff).' beschreibung)).'">'.StringCut($db->convert_html_chars($row->beschreibung),20,null,'...').' '; - if(!isset($_GET['filter']) && ($row->uid==$user && $row->datum > $sperrdatum)) - echo ''.$p->t("global/bearbeiten").''; + + if (!$adminView) + { + if(!isset($_GET['filter']) && ($row->uid==$user && $row->datum > $sperrdatum)) + echo ''.$p->t("global/bearbeiten").''; + } echo ""; - if(!isset($_GET['filter']) && ($row->uid==$user && $row->start > $sperrdatum)) - echo ''.$p->t("global/loeschen").''; + + if (!$adminView) + { + if(!isset($_GET['filter']) && ($row->uid==$user && $row->start > $sperrdatum)) + echo ''.$p->t("global/loeschen").''; + } echo "
'.$p->t('zeitaufzeichnung/endeXTageAnsicht', array($angezeigte_tage)).'
'.$p->t('zeitaufzeichnung/endeXTageAnsicht', array($angezeigte_tage)).'
'; /* } @@ -1921,22 +1904,22 @@ function printTableHeadings($fieldheadings, $za_simple = false){
'.$fieldheadings['projekt'].' '.$fieldheadings['ap'].' '.$fieldheadings['oe1'].''.$fieldheadings['oe2'].''.$fieldheadings['aktivitaet'].' '.$fieldheadings['service'].''.$fieldheadings['start'].''.$fieldheadings['ende'].''.$fieldheadings['dauer'].''.$fieldheadings['beschreibung'].''.$fieldheadings['aktion'].'
'.$fieldheadings['oe2'].''.$fieldheadings['aktivitaet'].' '.$fieldheadings['service'].''.$fieldheadings['start'].''.$fieldheadings['ende'].''.$fieldheadings['dauer'].''.$fieldheadings['beschreibung'].''.$fieldheadings['aktion'].'
'; + + //Dropdown timesheets Mitarbeiter + if ($untergebenen_arr) + { + $ben = new benutzer(); + echo " +

+ + "; + } + echo '
'; echo ''; + echo ''; + else + { + echo ''; + echo '  '; + echo ''; + } + } + echo '
'; echo ''; + if (isset($_GET['projektexport'])) { $projektexpurl = dirname($_SERVER["PHP_SELF"]) .'/zeitaufzeichnung_projektliste.php'; @@ -1628,23 +1656,30 @@ if ($projekt->getProjekteMitarbeiter($user, true)) '; - //Beschreibung - echo ''; - echo ''; - else - { - echo ''; - echo '  '; - echo ''; - } - echo '
'.$p->t("global/beschreibung").'
'; - //SpeichernButton - if($zeitaufzeichnung_id=='') - echo '
'; + if (!$adminView) + { + //Beschreibung + echo '
'.$p->t("global/beschreibung").'
'; + //SpeichernButton + if($zeitaufzeichnung_id == '') + echo '
'; + echo '


'; - echo '


'; + if (!$adminView) + { + echo '
'; + } + echo '
'; // Summen Lehre anzeigen $bv = new bisverwendung(); @@ -1985,14 +2020,22 @@ if ($projekt->getProjekteMitarbeiter($user, true)) '.$db->convert_html_chars($row->diff).' beschreibung)).'">'.StringCut($db->convert_html_chars($row->beschreibung),20,null,'...').' '; - if(!isset($_GET['filter']) && ($row->uid==$user && $row->datum > $sperrdatum)) - echo ''.$p->t("global/bearbeiten").''; - echo ""; - if(!isset($_GET['filter']) && ($row->uid==$user && $row->start > $sperrdatum)) - echo ''.$p->t("global/loeschen").''; - echo "
"; + + if (!$adminView) + { + if(!isset($_GET['filter']) && ($row->uid==$user && $row->start > $sperrdatum)) + echo ''.$p->t("global/loeschen").''; + } + echo "
@@ -1389,13 +1395,11 @@ if ($projekt->getProjekteMitarbeiter($user, true)) if (isset($_GET['projektübersichtexport'])) { - echo ''; echo ''; echo ''; echo ''; echo ''; - } //Aktivitaet @@ -1960,7 +1964,7 @@ if ($projekt->getProjekteMitarbeiter($user, true)) $ersumme_woche = '00:00'; } - // Diestreisen NEU + // Dienstreisen NEU if (array_key_exists($datumtag, $dr_arr)) { $colspan=($za_simple)?6:8; diff --git a/cis/private/tools/zeitaufzeichnung_projektliste.php b/cis/private/tools/zeitaufzeichnung_projektliste.php index 177f1f8aa..468405a06 100644 --- a/cis/private/tools/zeitaufzeichnung_projektliste.php +++ b/cis/private/tools/zeitaufzeichnung_projektliste.php @@ -46,7 +46,12 @@ $sprache_obj = new sprache(); $sprache_obj->load($sprache); $sprache_index = $sprache_obj->index; -$uid = get_uid(); +echo $uid = get_uid(); + +$mitarbeiter = new mitarbeiter(); +$mitarbeiter->getUntergebene($uid, true); +$untergebenen_arr = array(); +$untergebenen_arr = $mitarbeiter->untergebene; //Wenn User Administrator ist und UID uebergeben wurde, dann die Zeitaufzeichnung //des uebergebenen Users anzeigen @@ -55,7 +60,7 @@ if (isset($_GET['uid'])) $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($uid); - if ($rechte->isBerechtigt('admin')) + if ($rechte->isBerechtigt('admin') || (in_array($_GET['uid'], $untergebenen_arr))) { $uid = $_GET['uid']; } @@ -74,9 +79,9 @@ $year = $_GET['projexpjahr']; $monthtext = $monatsname[$sprache_index][$month - 1]; $username = $benutzer->vorname." ".$benutzer->nachname; -$mitarbeiter = new mitarbeiter(); $mitarbeiter->load($uid); $persnr = $mitarbeiter->personalnummer; +$persnr; $daysinmonth = cal_days_in_month(CAL_GREGORIAN, $month, $year); $date = new datum(); From 15ba3602f738fd7a7c6a5fac5f5431b3a51b544b Mon Sep 17 00:00:00 2001 From: ma0048 Date: Mon, 25 Oct 2021 13:22:44 +0200 Subject: [PATCH 045/354] job fixed --- application/models/crm/Prestudent_model.php | 58 +++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/application/models/crm/Prestudent_model.php b/application/models/crm/Prestudent_model.php index 2d8ac4a7e..b4692c864 100644 --- a/application/models/crm/Prestudent_model.php +++ b/application/models/crm/Prestudent_model.php @@ -665,4 +665,62 @@ class Prestudent_model extends DB_Model return $this->execQuery($query, array($prestudent_id)); } + + public function getSchool($semester, $studiengang_typ) + { + if (!$this->udfsExistAndDefined()) + return error('No UDF definition'); + + $query = 'SELECT DISTINCT p.person_id, + ps.prestudent_id, + ps.udf_values, + ( + SELECT ssps.udf_values->>\'udf_schule\' + FROM public.tbl_prestudent ssps + WHERE ssps.person_id = p.person_id AND ssps.udf_values->>\'udf_schule\' IS NOT NULL + LIMIT 1 + ) AS "Schule" + FROM + public.tbl_person p + JOIN public.tbl_prestudent ps USING (person_id) + JOIN public.tbl_prestudentstatus pss USING (prestudent_id) + JOIN public.tbl_studiengang sg ON ps.studiengang_kz = sg.studiengang_kz + WHERE + EXISTS ( + SELECT 1 + FROM public.tbl_prestudentstatus spss + JOIN public.tbl_prestudent sps ON spss.prestudent_id = sps.prestudent_id + JOIN public.tbl_studiengang ssg ON sps.studiengang_kz = ssg.studiengang_kz + WHERE sps.person_id = p.person_id + AND ssg.typ = \'' . $studiengang_typ . '\' + AND spss.studiensemester_kurzbz IN (' . $semester . ') + AND sps.udf_values->>\'udf_schule\' IS NOT NULL + LIMIT 1 + ) + AND sg.typ = \''. $studiengang_typ .'\' + AND pss.studiensemester_kurzbz IN (' . $semester . ') + AND ps.udf_values->>\'udf_schule\' IS NULL + AND \'Abgewiesener\' != ( + SELECT sspss.status_kurzbz + FROM public.tbl_prestudentstatus sspss + WHERE sspss.prestudent_id = ps.prestudent_id + ORDER BY sspss.datum DESC, sspss.insertamum DESC, sspss.ext_id DESC + LIMIT 1 + ) + ORDER BY p.person_id'; + + return $this->execQuery($query); + } + + public function updateSchool($udf, $prestudent) + { + if (!$this->udfsExistAndDefined()) + return error('No UDF definition'); + + $query = 'UPDATE public.tbl_prestudent + SET udf_values = \'' . $udf . '\' + WHERE prestudent_id = ' . $prestudent; + + return $this->execQuery($query); + } } From d269fd003d544222a5bc015501c7a60602a7b393 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Mon, 25 Oct 2021 14:03:30 +0200 Subject: [PATCH 046/354] added new log to logdataname --- application/views/system/infocenter/infocenterData.php | 2 +- .../views/system/infocenter/infocenterFreigegebenData.php | 2 +- .../system/infocenter/infocenterReihungstestAbsolviertData.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php index c49a1c6cc..3ee4db220 100644 --- a/application/views/system/infocenter/infocenterData.php +++ b/application/views/system/infocenter/infocenterData.php @@ -6,7 +6,7 @@ $INTERESSENT_STATUS = '\'Interessent\''; $STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\''; $TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\''; - $LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Interessent rejected\''; + $LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Interessent rejected\', \'Attempt to register with existing mailadress\''; $LOGDATA_NAME_PARKED = '\'Parked\''; $LOGDATA_NAME_ONHOLD = '\'Onhold\''; $LOGTYPE_KURZBZ = '\'Processstate\''; diff --git a/application/views/system/infocenter/infocenterFreigegebenData.php b/application/views/system/infocenter/infocenterFreigegebenData.php index 9078c13db..e649fe54a 100644 --- a/application/views/system/infocenter/infocenterFreigegebenData.php +++ b/application/views/system/infocenter/infocenterFreigegebenData.php @@ -5,7 +5,7 @@ $INTERESSENT_STATUS = '\'Interessent\''; $STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\''; $TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\''; - $LOGDATA_NAME = '\'Login with code\', \'Login with user\''; + $LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Attempt to register with existing mailadress\''; $REJECTED_STATUS = '\'Abgewiesener\''; $ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz'); $STATUS_KURZBZ = '\'Wartender\', \'Bewerber\', \'Aufgenommener\', \'Student\''; diff --git a/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php b/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php index 5aa664a97..dbc0124bc 100644 --- a/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php +++ b/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php @@ -5,7 +5,7 @@ $INTERESSENT_STATUS = '\'Interessent\''; $STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\''; $TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\''; - $LOGDATA_NAME = '\'Login with code\', \'Login with user\''; + $LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Attempt to register with existing mailadress\''; $ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz'); $STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\''; $ORG_NAME = '\'InfoCenter\''; From 9c193442ae1032f573aa11025349f0577fb6fc63 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Mon, 25 Oct 2021 14:54:45 +0200 Subject: [PATCH 047/354] archivieren von lv zeugnissen und zertifikaten --- content/pdfExport.php | 8 ++ content/student/studentnotenoverlay.xul.php | 3 + content/student/studentoverlay.js.php | 55 ++++++++-- system/dbupdate_3.3.php | 112 ++++++++++++++++++++ 4 files changed, 171 insertions(+), 7 deletions(-) diff --git a/content/pdfExport.php b/content/pdfExport.php index a85ebb345..1597284f6 100644 --- a/content/pdfExport.php +++ b/content/pdfExport.php @@ -47,6 +47,7 @@ require_once('../include/studienordnung.class.php'); require_once('../include/dokument_export.class.php'); require_once('../include/dokument.class.php'); require_once('../include/pdf.class.php'); +require_once('../include/lehrveranstaltung.class.php'); $user = get_uid(); $db = new basis_db(); @@ -520,6 +521,13 @@ else { $bezeichnung = mb_substr($vorlage->bezeichnung." ".$studiengang->kuerzel, 0, 64); } + elseif ($xsl === 'LVZeugnisEng' || $xsl === 'LVZeugnis' || $xsl === 'Zertifikat') + { + $lehrveranstaltung = new lehrveranstaltung($_GET['lvid']); + $vorlage->dokument_kurzbz = $xsl; + $bezeichnung = mb_substr($xsl." ".strtoupper($row->typ).strtoupper($row->kurzbz)." ".$semester.". Semester".' '.$ss . ' '. $lehrveranstaltung->bezeichnung, 0, 64); + $titel = mb_substr($xsl."_".strtoupper($row->typ).strtoupper($row->kurzbz)."_".$semester.'_'.$ss. '_' . str_replace(' ', '_', $lehrveranstaltung->bezeichnung), 0, 60); + } else { $bezeichnung = mb_substr($xsl." ".strtoupper($row->typ).strtoupper($row->kurzbz)." ".$semester.". Semester".' '.$ss, 0, 64); diff --git a/content/student/studentnotenoverlay.xul.php b/content/student/studentnotenoverlay.xul.php index 498651581..395667bd7 100644 --- a/content/student/studentnotenoverlay.xul.php +++ b/content/student/studentnotenoverlay.xul.php @@ -47,8 +47,11 @@ echo " @@ -1672,7 +1701,7 @@ if ($projekt->getProjekteMitarbeiter($user, true)) echo ''; + echo ''; else { echo ''; diff --git a/cis/private/tools/zeitaufzeichnung_zeitsperren.php b/cis/private/tools/zeitaufzeichnung_zeitsperren.php new file mode 100644 index 000000000..2ab602c29 --- /dev/null +++ b/cis/private/tools/zeitaufzeichnung_zeitsperren.php @@ -0,0 +1,59 @@ + + */ +/** + * Checks, if there is a zeitsperre for a certain date. It should not be possible + * to add a zeitaufzeichnung with a holiday (or else) entry on the same day. + */ + + +require_once('../../../config/cis.config.inc.php'); +require_once('../../../include/globals.inc.php'); +require_once('../../../include/phrasen.class.php'); +require_once('../../../include/datum.class.php'); +require_once('../../../include/Excel/excel.php'); +require_once('../../../include/benutzer.class.php'); +require_once('../../../include/benutzerberechtigung.class.php'); +require_once('../../../include/mitarbeiter.class.php'); +require_once('../../../include/zeitaufzeichnung.class.php'); +require_once('../../../include/projekt.class.php'); +require_once('../../../include/zeitsperre.class.php'); + + +$sprache = getSprache(); +$p = new phrasen($sprache); + +if ((isset($_GET['uid'])) && (isset($_GET['day']))) +{ + $uid = $_GET['uid']; + $day = $_GET['day']; + + $zs = new zeitsperre(); + $zs->getZeitsperrenForZeitaufzeichnung($uid, '180'); + $zeitsperren = $zs->result; + + if (array_key_exists($day, $zeitsperren)) + { + echo ''.$p->t('zeitaufzeichnung/zeitsperreVorhanden', [$day, $zeitsperren[$day]]).'
'; + } + else + { + echo ""; + } +} From 6d4e5238fdb5dfeada84e8a352b932ea07190c9a Mon Sep 17 00:00:00 2001 From: ma0068 Date: Wed, 27 Oct 2021 11:19:59 +0200 Subject: [PATCH 050/354] merge feature-11468/ZeitsperrenBeruecksichtigen into featuresZeiterfassung/Sprint177 --- cis/private/tools/zeitaufzeichnung.php | 1 + 1 file changed, 1 insertion(+) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index f17f9eb06..9360d03f8 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -304,6 +304,7 @@ echo ' Jahr=Datum.substring(6,10); var day = Jahr + "-" + Monat + "-" + Tag; checkBisverwendung(day,uid); + checkZeitsperre(day,uid); } ) From 2b9d688ff7aab0c63710c4671377690ab85bc323 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Wed, 27 Oct 2021 13:07:21 +0200 Subject: [PATCH 051/354] =?UTF-8?q?Adaptierung=20ZE:Fix=20Bug=20Eingabe=20?= =?UTF-8?q?gr=C3=B6=C3=9Fer=2024:00?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/tools/zeitaufzeichnung.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 9360d03f8..1fdf71330 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -1098,6 +1098,8 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $zeit->kunde_uid = $kunde_uid; $saveerror = 0; $extractTimeBis = $datum->formatDatum($bis, $format = 'H:i:s'); + $extractVon = $datum->formatDatum($von, $format = 'Y-m-d'); + $extractBis = $datum->formatDatum($bis, $format = 'Y-m-d'); if (!$projects_of_user->checkProjectInCorrectTime($projekt_kurzbz, $datum->formatDatum($von, $format='Y-m-d'), $datum->formatDatum($bis, $format='Y-m-d'))) { @@ -1114,9 +1116,8 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) echo '

'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektphasenzeitrahmen fällt.


'; $saveerror = 1; - } - elseif (abs($von-$bis)>0 && $aktivitaet_kurzbz!="DienstreiseMT" && $extractTimeBis != '00:00:00') + elseif ((abs($von - $bis) > 0 || $extractVon != $extractBis) && $aktivitaet_kurzbz!="DienstreiseMT" && $extractTimeBis != '00:00:00') { echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da keine Zeitaufzeichnung über mehrere Tage erlaubt ist (ausgenommen Dienstreisen).
'; $saveerror = 1; From a31d33bcf9dd4b40baf4c69e785e46c174f9d13a Mon Sep 17 00:00:00 2001 From: ma0048 Date: Wed, 27 Oct 2021 17:59:52 +0200 Subject: [PATCH 052/354] in eigenes model --- application/models/crm/Prestudent_model.php | 57 --------------------- 1 file changed, 57 deletions(-) diff --git a/application/models/crm/Prestudent_model.php b/application/models/crm/Prestudent_model.php index b4692c864..5db9a98f1 100644 --- a/application/models/crm/Prestudent_model.php +++ b/application/models/crm/Prestudent_model.php @@ -666,61 +666,4 @@ class Prestudent_model extends DB_Model return $this->execQuery($query, array($prestudent_id)); } - public function getSchool($semester, $studiengang_typ) - { - if (!$this->udfsExistAndDefined()) - return error('No UDF definition'); - - $query = 'SELECT DISTINCT p.person_id, - ps.prestudent_id, - ps.udf_values, - ( - SELECT ssps.udf_values->>\'udf_schule\' - FROM public.tbl_prestudent ssps - WHERE ssps.person_id = p.person_id AND ssps.udf_values->>\'udf_schule\' IS NOT NULL - LIMIT 1 - ) AS "Schule" - FROM - public.tbl_person p - JOIN public.tbl_prestudent ps USING (person_id) - JOIN public.tbl_prestudentstatus pss USING (prestudent_id) - JOIN public.tbl_studiengang sg ON ps.studiengang_kz = sg.studiengang_kz - WHERE - EXISTS ( - SELECT 1 - FROM public.tbl_prestudentstatus spss - JOIN public.tbl_prestudent sps ON spss.prestudent_id = sps.prestudent_id - JOIN public.tbl_studiengang ssg ON sps.studiengang_kz = ssg.studiengang_kz - WHERE sps.person_id = p.person_id - AND ssg.typ = \'' . $studiengang_typ . '\' - AND spss.studiensemester_kurzbz IN (' . $semester . ') - AND sps.udf_values->>\'udf_schule\' IS NOT NULL - LIMIT 1 - ) - AND sg.typ = \''. $studiengang_typ .'\' - AND pss.studiensemester_kurzbz IN (' . $semester . ') - AND ps.udf_values->>\'udf_schule\' IS NULL - AND \'Abgewiesener\' != ( - SELECT sspss.status_kurzbz - FROM public.tbl_prestudentstatus sspss - WHERE sspss.prestudent_id = ps.prestudent_id - ORDER BY sspss.datum DESC, sspss.insertamum DESC, sspss.ext_id DESC - LIMIT 1 - ) - ORDER BY p.person_id'; - - return $this->execQuery($query); - } - - public function updateSchool($udf, $prestudent) - { - if (!$this->udfsExistAndDefined()) - return error('No UDF definition'); - - $query = 'UPDATE public.tbl_prestudent - SET udf_values = \'' . $udf . '\' - WHERE prestudent_id = ' . $prestudent; - - return $this->execQuery($query); - } } From 203397b1359bcb3dcba4f2d37566f8e33f772941 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Thu, 28 Oct 2021 08:01:04 +0200 Subject: [PATCH 053/354] fas adressen anzeige nicht mehr hartcodiert --- rdf/adresse.rdf.php | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/rdf/adresse.rdf.php b/rdf/adresse.rdf.php index 6da4c3a6a..ac557fb98 100644 --- a/rdf/adresse.rdf.php +++ b/rdf/adresse.rdf.php @@ -76,15 +76,6 @@ function draw_rdf($row) global $rdf_url; $db = new basis_db(); - $typ=''; - switch ($row->typ) - { - case 'h': $typ='Hauptwohnsitz'; break; - case 'n': $typ='Nebenwohnsitz'; break; - case 'f': $typ='Firma'; break; - case 'r': $typ='Rechnungsadresse'; break; - } - $firma_name=''; if($row->firma_id!='') { @@ -109,7 +100,7 @@ function draw_rdf($row) gemeinde.']]> nation.']]> typ.']]> - + bezeichnung_mehrsprachig[DEFAULT_LANGUAGE].']]> heimatadresse?'Ja':'Nein').']]> zustelladresse?'Ja':'Nein').']]> co_name.']]> From 2a1a068ee2d495fe5060653b6daf3c22d588ee3e Mon Sep 17 00:00:00 2001 From: ma0048 Date: Wed, 3 Nov 2021 10:51:40 +0100 Subject: [PATCH 054/354] datum fuers parken nun auf semesterende + 3 monate --- public/js/infocenter/infocenterDetails.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/js/infocenter/infocenterDetails.js b/public/js/infocenter/infocenterDetails.js index 79129f3e2..7a8849f71 100644 --- a/public/js/infocenter/infocenterDetails.js +++ b/public/js/infocenter/infocenterDetails.js @@ -378,6 +378,11 @@ var InfocenterDetails = { if (FHC_AjaxClient.hasData(data)) { var engdate = $.datepicker.parseDate("yy-mm-dd", FHC_AjaxClient.getData(data)[0]); + + if (engdate.getDate() === 31) + engdate.setDate(engdate.getDate() - 1); + engdate.setMonth(engdate.getMonth() + 3); + var gerdate = $.datepicker.formatDate("dd.mm.yy", engdate); $("#postponedate").val(gerdate); } From 8cb8c4da6485e1625b1c0648f14d5101e0a9ca20 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Thu, 4 Nov 2021 10:27:21 +0100 Subject: [PATCH 055/354] Erweiterung Funktion checkKontostand() --- include/konto.class.php | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/include/konto.class.php b/include/konto.class.php index 09afa5303..f5de5b439 100644 --- a/include/konto.class.php +++ b/include/konto.class.php @@ -553,31 +553,38 @@ class konto extends basis_db /** * Überprüft, ob das Konto einer Person ausgeglichen ist, oder ob noch Zahlungen offen sind - * @param $person_id ID der Person, die geprüft werden soll - * @return true wenn ausgeglichen, false wenn Zahlungen offen, false mit errormsg wenn ein Fehler aufgetreten ist + * @param int $person_id ID der Person, die geprüft werden soll. + * @param bool $aktuelleBuchungenOnly True, wenn nur Zahlungen mit Buchungsdatum <= aktuelles Datum berücksichtigt werden sollen. + * @return boolean true wenn ausgeglichen, false wenn Zahlungen offen, false mit errormsg wenn ein Fehler aufgetreten ist */ - public function checkKontostand($person_id) + public function checkKontostand($person_id, $aktuelleBuchungenOnly = false) { - $qry="SELECT sum(betrag) as summe FROM public.tbl_konto WHERE person_id=".$this->db_add_param($person_id); - if($result=$this->db_query($qry)) + $qry = "SELECT sum(betrag) as summe + FROM public.tbl_konto + WHERE person_id=".$this->db_add_param($person_id); + + if($aktuelleBuchungenOnly) + $qry .= " AND buchungsdatum <= now()"; + + if ($result = $this->db_query($qry)) { - if($row=$this->db_fetch_object()) + if ($row = $this->db_fetch_object()) { - if($row->summe>=0) + if ($row->summe >= 0) return true; else return false; } else { + $this->errormsg = "Fehler beim Holen der Daten"; return false; - $this->errormsg="Fehler beim Holen der Daten"; } } else { + $this->errormsg = "Fehler bei der Datenbankabfrage"; return false; - $this->errormsg="Fehler bei der Datenbankabfrage"; } } From 0c6f43f36ee4a98c0053336c4a01a24db489703e Mon Sep 17 00:00:00 2001 From: ma0068 Date: Thu, 4 Nov 2021 15:43:05 +0100 Subject: [PATCH 056/354] =?UTF-8?q?Check=20Alias=20auf=20Sonderzeichen=20b?= =?UTF-8?q?ei=20=C3=84nderung=20Alias?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/functions.js.php | 14 ++++++++++++++ .../mitarbeiter/mitarbeiterdetailoverlay.xul.php | 2 +- content/mitarbeiter/mitarbeiteroverlay.js.php | 13 ++++++++++--- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/content/functions.js.php b/content/functions.js.php index 55eed5414..f81fd26ec 100644 --- a/content/functions.js.php +++ b/content/functions.js.php @@ -419,3 +419,17 @@ function setVariable(variable, wert) return true; } } + +// **** +// * Validierung Alias auf Sonderzeichen (analog zu checkWunschUid, außerdem . und _ erlaubt) +// **** +function checkAlias(alias) +{ + + if (/^[a-z0-9 . _]*$/i.test(alias) === false) + { + return false; + } + else + return true; +} diff --git a/content/mitarbeiter/mitarbeiterdetailoverlay.xul.php b/content/mitarbeiter/mitarbeiterdetailoverlay.xul.php index 1cc8fb34e..c99a35c27 100644 --- a/content/mitarbeiter/mitarbeiterdetailoverlay.xul.php +++ b/content/mitarbeiter/mitarbeiterdetailoverlay.xul.php @@ -269,7 +269,7 @@ echo '';
- ".$p->t("zeitaufzeichnung/neu")." | + ".$p->t("zeitaufzeichnung/neu")." | "; - CSV Import | + if (!$adminView) + { + echo + " + CSV Import | - CSV Export | + CSV Export | + "; + } - Projektübersichtexport"; + echo " Projektübersichtexport"; if($anzprojekte > 0) echo " | ".$p->t("zeitaufzeichnung/projektexport").""; echo "

CSV-Export

'; //SpeichernButton if($zeitaufzeichnung_id == '') - echo '
+
@@ -212,10 +413,10 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit'])) t('zeitwunsch/geteilteArbeitszeit'); $gd = new zeitaufzeichnung_gd(); - $gd->load($uid, $current_ss); + $gd->load($uid, $akt_ss->studiensemester_kurzbz); if ( ! $gd->uid ) { - echo '

Zustimmung für '.$current_ss.': '; + echo '

Zustimmung für '.$akt_ss->studiensemester_kurzbz.': '; echo 'ja'; echo 'nein'; echo '




'; @@ -223,13 +424,13 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit'])) else { $zustimmung = ($gd->selbstverwaltete_pause) ? ' erteilt' : 'abgelehnt'; - echo '

Zustimmung für '.$current_ss.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'

'; + echo '

Zustimmung für '.$akt_ss->studiensemester_kurzbz.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'

'; } $gd = new zeitaufzeichnung_gd(); - $gd->load($uid, $next_ss); + $gd->load($uid, $next_ss->studiensemester_kurzbz); if ( ! $gd->uid ) { - echo '

Zustimmung für '.$next_ss.': '; + echo '

Zustimmung für '.$next_ss->studiensemester_kurzbz.': '; echo 'ja'; echo 'nein'; echo '




'; @@ -237,7 +438,7 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit'])) else { $zustimmung = ($gd->selbstverwaltete_pause) ? ' erteilt' : 'abgelehnt'; - echo '

Zustimmung für '.$next_ss.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'

'; + echo '

Zustimmung für '.$next_ss->studiensemester_kurzbz.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'

'; } //var_dump($gd); ?> @@ -250,125 +451,197 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit'])) - -
-

t('zeitwunsch/zeitwunsch');?>

- ".$p->t('zeitwunsch/zeitwunschVon')." $person->titelpre $person->vorname $person->nachname $person->titelpost
"; - echo $p->t('zeitwunsch/tragenSieInDiesesNormwochenraster')."

"; - echo '
- - '; - echo ''; - for ($i=0;$i<$num_rows_stunde; $i++) - { - $beginn=$db->db_result($result_stunde,$i,'"beginn"'); - $beginn=substr($beginn,0,5); - $ende=$db->db_result($result_stunde,$i,'"ende"'); - $ende=substr($ende,0,5); - $stunde=$db->db_result($result_stunde,$i,'"stunde"'); - echo ""; - } + // FORM Begin + echo ''; + echo ''; - echo ''; + // Mein Zeitwunsch-Semesterplan Dropdown, Default = naechstes Studiensemester + $next_ss_selected = $next_ss->studiensemester_kurzbz == $selected_ss ? 'selected' : ''; + $akt_ss_selected = $akt_ss->studiensemester_kurzbz == $selected_ss ? 'selected' : ''; - for ($j=1; $j<7; $j++) - { - echo ''; - for ($i=0;$i<$num_rows_stunde;$i++) - { - if (isset($wunsch[$j][$i+1])) - $index=$wunsch[$j][$i+1]; - else - $index=1; - //$id='bgcolor'; - //$id.=$index+3; - $bgcolor=$cfgStdBgcolor[$index+3]; - echo ''; - } - echo ''; - } + echo '

Mein Zeitwunsch gültig im: '; + echo ''; + echo '


'; - echo ' -
'.$p->t('global/stunde').'
'.$p->t('global/beginn').'
'.$p->t('global/ende').'
$stunde
$beginn
$ende
'.$tagbez[$lang->index][$j].'

- - - '; + // Tabelle Zeitwunsch-Semesterplan + echo ''; + // Tabelle Kopfzeile + echo ''; + echo ''; + for ($i=0;$i<$num_rows_stunde; $i++) + { + $beginn=$db->db_result($result_stunde,$i,'"beginn"'); + $beginn=substr($beginn,0,5); + $ende=$db->db_result($result_stunde,$i,'"ende"'); + $ende=substr($ende,0,5); + $stunde=$db->db_result($result_stunde,$i,'"stunde"'); + echo ""; + } + echo ''; + // Tabelle Zellen + for ($j=1; $j<7; $j++) + { + echo ''; + for ($i=0;$i<$num_rows_stunde;$i++) + { + if (isset($wunsch[$j][$i+1])) + $index=$wunsch[$j][$i+1]; + else + $index=1; // Defaultwert, wenn kein Zeitwunsch vorhanden - if($zw->updateamum!='') - { - echo ''.$p->t('zeitwunsch/letzteAenderung').': '.$datum_obj->formatDatum($zw->updateamum,'d.m.Y H:i:s').' '.$p->t('zeitwunsch/von').' '.$zw->updatevon.''; - } - ?> + $bgcolor=$cfgStdBgcolor[$index+3]; + echo ''; + } + echo ''; + } + echo '
'.$p->t('global/stunde').'
'.$p->t('global/beginn').'
'.$p->t('global/ende').'
$stunde
$beginn
$ende
'.$tagbez[$lang->index][$j].'
'; -
+ // Zeitwunsch aendern / kopieren + echo '
'; + echo '
'; + echo 'Sie können Ihren Zeitwunsch direkt in der Tabelle bearbeiten oder einen Zeitwunsch eines vergangenen Studiensemester kopieren.
+ Solange Sie keine Änderungen vornehmen, wird Ihr Zeitwunsch immer ins nächste Studiensemester übernommen.


'; -
+ // Radiobuttons aendern / kopieren + $radioChangeChecked = is_null($selected_past_ss) ? 'checked' : ''; + $radioCopyChecked = !is_null($selected_past_ss) ? 'checked' : ''; -

t('zeitwunsch/erklärung');?>:

+ echo '
'; + echo 'Zeitwunsch für '. $selected_ss. ' '; + echo ''; + echo ''; + echo '
'; - "; - echo $p->t('zeitwunsch/formularZumEintragenDerZeitsperren', array($href)); - ?> - -

t('zeitwunsch/kontrollierenSieIhreZeitwuensche');?>!

-

- - - - - - - - - - - - - - - - - - - - - - -
t('zeitwunsch/wert');?> -
t('zeitwunsch/bedeutung');?>
-
-
2
-
  t('zeitwunsch/hierMoechteIchUnterrichten');?>
-
1
-
  t('zeitwunsch/hierKannIchUnterrichten');?>
-
-1
-
  t('zeitwunsch/nurInNotfaellen');?>
-
-2
-
  t('zeitwunsch/hierAufGarKeinenFall');?>
-

t('zeitwunsch/folgendePunkteSindZuBeachten');?>:

-
    -
  1. t('zeitwunsch/verwendenSieDenWertNur');?>
  2. -
  3. t('zeitwunsch/sperrenSieNurTermine');?>
  4. -
  5. t('zeitwunsch/esSolltenFuerJedeStunde');?>
  6. -
-

t('lvplan/fehlerUndFeedback');?> t('lvplan/lvKoordinationsstelle');?>.

-
- + echo ''; // end col-xs-12 + echo ''; // end row + + echo '
'; + + $divChangeHidden = !is_null($selected_past_ss) ? 'hidden' : ''; + $divCopyHidden = is_null($selected_past_ss) ? 'hidden' : ''; + + echo '
'; + echo '
'; + echo '' . $p->t('zeitwunsch/tragenSieInDiesesNormwochenraster') .' Klicken Sie danach auf \'Speichern\''; + echo '
'; // end col + echo '
'; + // BLANK + echo '
'; // end col + echo '
'; // end divChangeZWG + + echo '
'; + echo '
'; + echo 'Wählen Sie das gewünschte Studiensemester aus dem rechten Dropdown aus. + Der Zeitwunsch wird dann automatisch in die Tabelle übernommen.
+ Nehmen Sie gegebenenfalls Änderungen vor und klicken Sie dann auf \'Speichern\'.
'; + echo '
'; // end col + + $studiensemester = new Studiensemester(); + $tmp_ss = $selected_ss == $akt_ss->studiensemester_kurzbz ? $studiensemester->getPrevious() : $akt_ss->studiensemester_kurzbz; + $studiensemester->load($tmp_ss); + + $zwg = new Zeitwunsch_gueltigkeit(); + $zwg->getByUID($uid, 4, true, $studiensemester->ende); + $past_zwg_arr = $zwg->result; + echo '
'; + echo ''; + echo '
'; // end col + echo '
'; // end divCopyZWG + + // Speichern - Button + echo '
'; + echo ''; + echo '
'; + + echo '
'; // end row + echo '
'; + ?> + + + +
+
+ t('zeitwunsch/folgendePunkteSindZuBeachten');?>: +
    +
  • t('zeitwunsch/verwendenSieDenWertNur');?>
  • +
  • t('zeitwunsch/sperrenSieNurTermine');?>
  • +
  • t('zeitwunsch/esSolltenFuerJedeStunde');?>
  • +

+

t('lvplan/fehlerUndFeedback');?> t('lvplan/lvKoordinationsstelle');?>.


+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
t('zeitwunsch/wert');?> +
t('zeitwunsch/bedeutung');?>
+
+
2
+
  t('zeitwunsch/hierMoechteIchUnterrichten');?>
+
1
+
  t('zeitwunsch/hierKannIchUnterrichten');?>
+
-1
+
  t('zeitwunsch/nurInNotfaellen');?>
+
-2
+
  t('zeitwunsch/hierAufGarKeinenFall');?>
+
+
+ + +
+
+

t('zeitsperre/zeitsperren');?>:

+ "; + echo $p->t('zeitwunsch/formularZumEintragenDerZeitsperren', array($href)); + ?> +
+
+ + + + + diff --git a/locale/de-AT/zeitwunsch.php b/locale/de-AT/zeitwunsch.php index a84da2b0e..31424f8f9 100644 --- a/locale/de-AT/zeitwunsch.php +++ b/locale/de-AT/zeitwunsch.php @@ -9,6 +9,7 @@ $this->phrasen['zeitwunsch/von']='von'; $this->phrasen['zeitwunsch/formularZumEintragenDerZeitsperren']='Das Formular zum Eintragen der Zeitsperren finden Sie %s hier'; $this->phrasen['zeitwunsch/erklärung']='Erklärung'; $this->phrasen['zeitwunsch/kontrollierenSieIhreZeitwuensche']='Bitte kontrollieren/ändern Sie Ihre Zeitwünsche und klicken Sie anschließend auf "Speichern"'; +$this->phrasen['zeitwunsch/erstellenSieIhreZeitwuensche']='Bitte erstellen / ändern Sie Ihre Zeitwünsche und klicken Sie anschließend auf "Speichern"'; $this->phrasen['zeitwunsch/wert']='Wert'; $this->phrasen['zeitwunsch/bedeutung']='Bedeutung'; $this->phrasen['zeitwunsch/hierMoechteIchUnterrichten']='Hier möchte ich unterrichten'; diff --git a/locale/en-US/zeitwunsch.php b/locale/en-US/zeitwunsch.php index dd9abdc3e..1a4a93378 100644 --- a/locale/en-US/zeitwunsch.php +++ b/locale/en-US/zeitwunsch.php @@ -9,6 +9,7 @@ $this->phrasen['zeitwunsch/von']='from'; $this->phrasen['zeitwunsch/formularZumEintragenDerZeitsperren']='The form for entering times when you are unavailable to teach can be found %s here'; $this->phrasen['zeitwunsch/erklärung']='Explanation'; $this->phrasen['zeitwunsch/kontrollierenSieIhreZeitwuensche']='Please check/change your preferred teaching times and click "Save"'; +$this->phrasen['zeitwunsch/erstellenSieIhreZeitwuensche']='Please enter / change your preferred teaching times and click "Save"'; $this->phrasen['zeitwunsch/wert']='Value'; $this->phrasen['zeitwunsch/bedeutung']='Meaning'; $this->phrasen['zeitwunsch/hierMoechteIchUnterrichten']='I would like to teach at this time'; From beb850ebe376cda8c64cc46f40acdb61a568781b Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 24 Nov 2021 09:33:25 +0100 Subject: [PATCH 070/354] Adapted Zeitwunsch zu geteilte Dienste to Bootstrap Style --- cis/private/profile/zeitwunsch.php | 56 +++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/cis/private/profile/zeitwunsch.php b/cis/private/profile/zeitwunsch.php index 6e1f800b4..8c28be587 100644 --- a/cis/private/profile/zeitwunsch.php +++ b/cis/private/profile/zeitwunsch.php @@ -406,46 +406,78 @@ function updateZWG($uid, $zwg_id, $bis) -

Zustimmung zur Verplanung in geteilter Arbeitszeit

+

Zustimmung zur Verplanung in geteilter Arbeitszeit

t('zeitwunsch/geteilteArbeitszeit'); + echo '

'; $gd = new zeitaufzeichnung_gd(); $gd->load($uid, $akt_ss->studiensemester_kurzbz); if ( ! $gd->uid ) { - echo '

Zustimmung für '.$akt_ss->studiensemester_kurzbz.': '; - echo 'ja'; - echo 'nein'; - echo '




'; + echo '
'; + echo '
'; + echo '
'; + echo 'Zustimmung für '.$akt_ss->studiensemester_kurzbz.': '; + echo ''; + echo ''; + echo '
'; + echo '
'; + + echo '
'; + echo '
'; + echo '
'; + + echo '
'; + echo '
'; + echo '
'; } else { $zustimmung = ($gd->selbstverwaltete_pause) ? ' erteilt' : 'abgelehnt'; - echo '

Zustimmung für '.$akt_ss->studiensemester_kurzbz.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'

'; + echo '

Zustimmung für '.$akt_ss->studiensemester_kurzbz.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').''; } $gd = new zeitaufzeichnung_gd(); $gd->load($uid, $next_ss->studiensemester_kurzbz); if ( ! $gd->uid ) { - echo '

Zustimmung für '.$next_ss->studiensemester_kurzbz.': '; - echo 'ja'; - echo 'nein'; - echo '




'; + echo '
'; + echo '
'; + echo '
'; + echo 'Zustimmung für '.$next_ss->studiensemester_kurzbz.': '; + echo ''; + echo ''; + echo '
'; + echo '
'; + + echo '
'; + echo ''; + echo '
'; + + echo '
'; + echo '
'; + echo '
'; } else { $zustimmung = ($gd->selbstverwaltete_pause) ? ' erteilt' : 'abgelehnt'; - echo '

Zustimmung für '.$next_ss->studiensemester_kurzbz.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'

'; + echo 'Zustimmung für '.$next_ss->studiensemester_kurzbz.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').''; } //var_dump($gd); ?>

-

From 8d3c54fafcba63d4c9f043601a15faf86d7362f7 Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 24 Nov 2021 11:48:57 +0100 Subject: [PATCH 071/354] Minor change: Removed default now() for updateamum, Changed code order ...for better maintainance --- cis/private/profile/zeitwunsch.php | 330 ++++++++++++++--------------- system/dbupdate_3.3.php | 2 +- 2 files changed, 166 insertions(+), 166 deletions(-) diff --git a/cis/private/profile/zeitwunsch.php b/cis/private/profile/zeitwunsch.php index 8c28be587..5da272e9f 100644 --- a/cis/private/profile/zeitwunsch.php +++ b/cis/private/profile/zeitwunsch.php @@ -72,171 +72,6 @@ if(! $result_stunde=$db->db_query('SELECT * FROM lehre.tbl_stunde ORDER BY stund die($db->db_last_error()); $num_rows_stunde=$db->db_num_rows($result_stunde); -// Zeitwuensche speichern -if (isset($_GET['type']) && $_GET['type'] == 'save') -{ - // Letzte Zeitwunschgueltigkeit (ZWG) holen - $zwg = new Zeitwunsch_gueltigkeit(); - $zwg->getByUID($uid, 1); - $lastZwg = !empty($zwg->result) ? $zwg->result[0] : null; - - // Check, ob letzte ZWG im nächsten Studiensemester startet. D.h. es existiert ein neuer Zeitwunsch in der Zukunft - $lastZwgStartsNextSemester = (!is_null($lastZwg) && $lastZwg->von >= $next_ss->start) ? true : false; - $zw_zwg_id = null; // ZWG ID, die zum Speichern / Updaten des Zeitwunsches uebergeben wird - - // Wenn allererster Zeitwunsch, also noch keine ZWG vorhanden - if (is_null($lastZwg)) - { - // Wenn ZW fuer naechstes Studiensemester ist - if ($selected_ss == $next_ss->studiensemester_kurzbz) - { - // Neue ZWG setzen: von = Start nächstes Studiensemester, bis offen lassen - $zw_zwg_id = insertZWG($uid, $next_ss->start, null); - } - - // Wenn Zeitwunsch fuer aktuelles Studiensemester ist - if ($selected_ss == $akt_ss->studiensemester_kurzbz) - { - // Neue ZWG setzen: von = now(), bis offen lassen - $zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), null); - } - } - - // Wenn mindestens eine ZWG vorhanden - if (!is_null($lastZwg)) - { - // Wenn Zeitwunsch fuer naechstes Studiensemester ist - if ($selected_ss == $next_ss->studiensemester_kurzbz) - { - // Wenn naechstes Studiensemester schon eine eigene ZWG hat - if ($lastZwgStartsNextSemester) - { - // Nur Zeitwunsch dieser ZWG updaten - $zw_zwg_id = $lastZwg->zeitwunsch_gueltigkeit_id; - } - - // Wenn naechstes Studiensemester keine eigene ZWG hat - if (!$lastZwgStartsNextSemester) - { - // Fuer bisher letzte ZWG ein Endedatum setzen: bis = Ende aktuelles Studiensemester - updateZWG($uid, $lastZwg->zeitwunsch_gueltigkeit_id, $akt_ss->ende); - - // Neue ZWG setzen: von = Start nächstes Studiensemester, bis offen lassen - $zw_zwg_id = insertZWG($uid, $next_ss->start, null); - } - } - - // Wenn Zeitwunsch fuer aktuelles Studiensemester ist - if ($selected_ss == $akt_ss->studiensemester_kurzbz) - { - /** - * Check, ob aktuelles Studiensemester eine ZWG hat. - * Wenn die allererste ZWG fuer das naechste Studiensemester erstellt wurde, dann hat das - * aktuelle Studiensemester noch keine ZWG. - * */ - $zwg = new Zeitwunsch_gueltigkeit(); - $zwg->getByStudiensemester($uid, $akt_ss->studiensemester_kurzbz); - $akt_ss_zwg = !empty($zwg->result) ? $zwg->result[0] : null; - - // Keine ZWG fuer aktuelles Studiensemester vorhanden. - // Da eine ZWG ID aber schon vorhanden: USER HAT ERSTMALIG MIT NAECHSTEM STUDIENSEMESTER EINTRAG BEGONNEN - if (is_null($akt_ss_zwg)) - { - // Neue ZWG setzen: von = now(), ende = Ende aktuelles Studiensemester - $zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), $akt_ss->ende); - } - - // ZWG für aktuelles Studiensemester ist vorhanden --> SPLIT AKTUELLE STUDIENSEMESTER - if ((!is_null($akt_ss_zwg))) - { - // Wenn am selben Tag schon neue ZWG gespeichert wurde, keine neue ZWG anlegen, sondern diese nur updaten - // Verhindert mehrfache Eintraege, wenn oefters zwischengespeichert wird. - if ((new DateTime($akt_ss_zwg->insertamum))->format('Y-m-d') == (new Datetime())->format('Y-m-d')) - { - updateZWG($uid, $akt_ss_zwg->zeitwunsch_gueltigkeit_id, $akt_ss_zwg->bis); - - $zw_zwg_id = $akt_ss_zwg->zeitwunsch_gueltigkeit_id; - } - else - { - // Neue ZWG setzen: von = now(), bis = Bis von ZWG des aktuellen Studiensemesters uebernehmen: - // -> bis ist entweder Ende aktuelles Studiensemester (wenn ZWG für nächstes Studiensemester vorhanden ist) - // -> sonst ist bis null - $zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), $akt_ss_zwg->bis); - - // Fuer bisher letzte ZWG das Endedatum auf heute setzen: bis = now() - // NOTE: MUSS nach dem insert sein - updateZWG($uid, $akt_ss_zwg->zeitwunsch_gueltigkeit_id, (new DateTime())->format('Y-m-d H:i:s')); - } - } - } - } - - // Insert Zeitwunsch mit Zeitwunsch ZWG ID - if (is_numeric($zw_zwg_id)) - { - $zw = new zeitwunsch(); - - for ($t=1;$t<7;$t++) - { - for ($i=0;$i<$num_rows_stunde;$i++) - { - $var='wunsch'.$t.'_'.$i; - if(!isset($_POST[$var])) - continue; - $gewicht=$_POST[$var]; - $stunde=$i+1; - - $zw->mitarbeiter_uid = $uid; - $zw->stunde = $stunde; - $zw->tag = $t; - $zw->gewicht = $gewicht; - $zw->updateamum = date('Y-m-d H:i:s'); - $zw->updatevon = $uid; - $zw->zeitwunsch_gueltigkeit_id = $zw_zwg_id; - - if (!$zw->exists($uid, $zw_zwg_id, $stunde, $t)) - { - $zw->new = true; - $zw->insertamum = date('Y-m-d H:i:s'); - $zw->insertvon = $uid; - } - else - { - $zw->new = false; - } - - if(!$zw->save()) - echo $zw->errormsg; - } - } - } -} - -/** - * Zeitwunschgueltigkeit fuer Tabelle holen. - * Der Zeitwunsch wird anhand der Zeitwunschgueltigkeit (ZWG) des gewaehlten Studiensemesters ermittelt. - * Das Studiensemester wird, je nach Vorhandensein, in dieser Reihenfolge herangezogen: - * 1. Wenn in Dropdown ausgewaehlt: Vergangenes Studiensemester (zum Kopieren von Zeitwunsch) - * 2. Wenn in Dropdown ausgewaehlt: Aktuelles Studiensemester - * 3: Default: Nächstes Studiensemesters - */ -$zwg = new zeitwunsch_gueltigkeit(); -$tmp_ss = is_null($selected_past_ss) ? $selected_ss : $selected_past_ss; -$zwg->getByStudiensemester($uid, $tmp_ss); -$zwg_id = !empty($zwg->result[0]) ? $zwg->result[0]->zeitwunsch_gueltigkeit_id : null; //null, wenn noch kein ZW - -/** - * Zeitwunsch fuer Tabelle holen - * Wenn noch kein Zeitwunsch vorhanden, bleibt die Zeitwunsch Instanz leer - * */ -$zw = new zeitwunsch(); -if (!$zw->loadByZWG($uid, $zwg_id)) -{ - die($zw->errormsg); -} -$wunsch = $zw->zeitwunsch; - // Personendaten $person = new benutzer(); if(!$person->load($uid)) @@ -287,6 +122,171 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit'])) } +// Zeitwuensche speichern +if (isset($_GET['type']) && $_GET['type'] == 'save') +{ + // Letzte Zeitwunschgueltigkeit (ZWG) holen + $zwg = new Zeitwunsch_gueltigkeit(); + $zwg->getByUID($uid, 1); + $lastZwg = !empty($zwg->result) ? $zwg->result[0] : null; + + // Check, ob letzte ZWG im nächsten Studiensemester startet. D.h. es existiert ein neuer Zeitwunsch in der Zukunft + $lastZwgStartsNextSemester = (!is_null($lastZwg) && $lastZwg->von >= $next_ss->start) ? true : false; + $zw_zwg_id = null; // ZWG ID, die zum Speichern / Updaten des Zeitwunsches uebergeben wird + + // Wenn allererster Zeitwunsch, also noch keine ZWG vorhanden + if (is_null($lastZwg)) + { + // Wenn ZW fuer naechstes Studiensemester ist + if ($selected_ss == $next_ss->studiensemester_kurzbz) + { + // Neue ZWG setzen: von = Start nächstes Studiensemester, bis offen lassen + $zw_zwg_id = insertZWG($uid, $next_ss->start, null); + } + + // Wenn Zeitwunsch fuer aktuelles Studiensemester ist + if ($selected_ss == $akt_ss->studiensemester_kurzbz) + { + // Neue ZWG setzen: von = now(), bis offen lassen + $zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), null); + } + } + + // Wenn mindestens eine ZWG vorhanden + if (!is_null($lastZwg)) + { + // Wenn Zeitwunsch fuer naechstes Studiensemester ist + if ($selected_ss == $next_ss->studiensemester_kurzbz) + { + // Wenn naechstes Studiensemester schon eine eigene ZWG hat + if ($lastZwgStartsNextSemester) + { + // Nur Zeitwunsch dieser ZWG updaten + $zw_zwg_id = $lastZwg->zeitwunsch_gueltigkeit_id; + } + + // Wenn naechstes Studiensemester keine eigene ZWG hat + if (!$lastZwgStartsNextSemester) + { + // Fuer bisher letzte ZWG ein Endedatum setzen: bis = Ende aktuelles Studiensemester + updateZWG($uid, $lastZwg->zeitwunsch_gueltigkeit_id, $akt_ss->ende); + + // Neue ZWG setzen: von = Start nächstes Studiensemester, bis offen lassen + $zw_zwg_id = insertZWG($uid, $next_ss->start, null); + } + } + + // Wenn Zeitwunsch fuer aktuelles Studiensemester ist + if ($selected_ss == $akt_ss->studiensemester_kurzbz) + { + /** + * Check, ob aktuelles Studiensemester eine ZWG hat. + * Wenn die allererste ZWG fuer das naechste Studiensemester erstellt wurde, dann hat das + * aktuelle Studiensemester noch keine ZWG. + * */ + $zwg = new Zeitwunsch_gueltigkeit(); + $zwg->getByStudiensemester($uid, $akt_ss->studiensemester_kurzbz); + $akt_ss_zwg = !empty($zwg->result) ? $zwg->result[0] : null; + + // Keine ZWG fuer aktuelles Studiensemester vorhanden. + // Da eine ZWG ID aber schon vorhanden: USER HAT ERSTMALIG MIT NAECHSTEM STUDIENSEMESTER EINTRAG BEGONNEN + if (is_null($akt_ss_zwg)) + { + // Neue ZWG setzen: von = now(), ende = Ende aktuelles Studiensemester + $zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), $akt_ss->ende); + } + + // ZWG für aktuelles Studiensemester ist vorhanden --> SPLIT AKTUELLE STUDIENSEMESTER + if ((!is_null($akt_ss_zwg))) + { + // Wenn am selben Tag schon neue ZWG gespeichert wurde, keine neue ZWG anlegen, sondern diese nur updaten + // Verhindert mehrfache Eintraege, wenn oefters zwischengespeichert wird. + if ((new DateTime($akt_ss_zwg->insertamum))->format('Y-m-d') == (new Datetime())->format('Y-m-d')) + { + updateZWG($uid, $akt_ss_zwg->zeitwunsch_gueltigkeit_id, $akt_ss_zwg->bis); + + $zw_zwg_id = $akt_ss_zwg->zeitwunsch_gueltigkeit_id; + } + else + { + // Neue ZWG setzen: von = now(), bis = Bis von ZWG des aktuellen Studiensemesters uebernehmen: + // -> bis ist entweder Ende aktuelles Studiensemester (wenn ZWG für nächstes Studiensemester vorhanden ist) + // -> sonst ist bis null + $zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), $akt_ss_zwg->bis); + + // Fuer bisher letzte ZWG das Endedatum auf heute setzen: bis = now() + // NOTE: MUSS nach dem insert sein + updateZWG($uid, $akt_ss_zwg->zeitwunsch_gueltigkeit_id, (new DateTime())->format('Y-m-d H:i:s')); + } + } + } + } + + // Insert Zeitwunsch mit Zeitwunsch ZWG ID + if (is_numeric($zw_zwg_id)) + { + $zw = new zeitwunsch(); + + for ($t=1;$t<7;$t++) + { + for ($i=0;$i<$num_rows_stunde;$i++) + { + $var='wunsch'.$t.'_'.$i; + if(!isset($_POST[$var])) + continue; + $gewicht=$_POST[$var]; + $stunde=$i+1; + + $zw->mitarbeiter_uid = $uid; + $zw->stunde = $stunde; + $zw->tag = $t; + $zw->gewicht = $gewicht; + $zw->updateamum = date('Y-m-d H:i:s'); + $zw->updatevon = $uid; + $zw->zeitwunsch_gueltigkeit_id = $zw_zwg_id; + + if (!$zw->exists($uid, $zw_zwg_id, $stunde, $t)) + { + $zw->new = true; + $zw->insertamum = date('Y-m-d H:i:s'); + $zw->insertvon = $uid; + } + else + { + $zw->new = false; + } + + if(!$zw->save()) + echo $zw->errormsg; + } + } + } +} + +/** + * Zeitwunschgueltigkeit fuer Tabelle holen. + * Der Zeitwunsch wird anhand der Zeitwunschgueltigkeit (ZWG) des gewaehlten Studiensemesters ermittelt. + * Das Studiensemester wird, je nach Vorhandensein, in dieser Reihenfolge herangezogen: + * 1. Wenn in Dropdown ausgewaehlt: Vergangenes Studiensemester (zum Kopieren von Zeitwunsch) + * 2. Wenn in Dropdown ausgewaehlt: Aktuelles Studiensemester + * 3: Default: Nächstes Studiensemesters + */ +$zwg = new zeitwunsch_gueltigkeit(); +$tmp_ss = is_null($selected_past_ss) ? $selected_ss : $selected_past_ss; +$zwg->getByStudiensemester($uid, $tmp_ss); +$zwg_id = !empty($zwg->result[0]) ? $zwg->result[0]->zeitwunsch_gueltigkeit_id : null; //null, wenn noch kein ZW + +/** + * Zeitwunsch fuer Tabelle holen + * Wenn noch kein Zeitwunsch vorhanden, bleibt die Zeitwunsch Instanz leer + * */ +$zw = new zeitwunsch(); +if (!$zw->loadByZWG($uid, $zwg_id)) +{ + die($zw->errormsg); +} +$wunsch = $zw->zeitwunsch; + /** * Init ZWG Objekt zum Erstellen einer neuen ZWG */ diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 192755a23..eb9da9605 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -5519,7 +5519,7 @@ if(!$result = @$db->db_query("SELECT 1 FROM campus.tbl_zeitwunsch_gueltigkeit LI bis DATE, insertamum TIMESTAMP WITHOUT TIME ZONE DEFAULT NOW(), insertvon CHARACTER VARYING(32), - updateamum TIMESTAMP WITHOUT TIME ZONE DEFAULT NOW(), + updateamum TIMESTAMP WITHOUT TIME ZONE, updatevon CHARACTER VARYING(32) ); From bd71650ac5b4b5821228d139ae11e40eed81478e Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 24 Nov 2021 16:26:22 +0100 Subject: [PATCH 072/354] Colored Legende for Zeitwunsch-Tabelle --- cis/private/profile/zeitwunsch.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cis/private/profile/zeitwunsch.php b/cis/private/profile/zeitwunsch.php index 5da272e9f..8f65bfbcb 100644 --- a/cis/private/profile/zeitwunsch.php +++ b/cis/private/profile/zeitwunsch.php @@ -627,13 +627,13 @@ function updateZWG($uid, $zwg_id, $bis) - +
2
  t('zeitwunsch/hierMoechteIchUnterrichten');?> - +
1
  t('zeitwunsch/hierKannIchUnterrichten');?> @@ -645,13 +645,13 @@ function updateZWG($uid, $zwg_id, $bis) keine Bedeutung --> - +
-1
  t('zeitwunsch/nurInNotfaellen');?> - +
-2
  t('zeitwunsch/hierAufGarKeinenFall');?> From 6db2748163859b93c032ca003b3953e6ec2e28ad Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 24 Nov 2021 17:47:01 +0100 Subject: [PATCH 073/354] Added Zeitwunsch Edit lock of if LV had already been assigned - Message is shown and form buttons for changing / copying Zeitwunsch are disabled if LV had already been assigned to lector. - Lector can unlock by clicking on link. --- cis/private/profile/zeitwunsch.php | 81 ++++++++++++++++++++++++++---- 1 file changed, 72 insertions(+), 9 deletions(-) diff --git a/cis/private/profile/zeitwunsch.php b/cis/private/profile/zeitwunsch.php index 8f65bfbcb..c4def2671 100644 --- a/cis/private/profile/zeitwunsch.php +++ b/cis/private/profile/zeitwunsch.php @@ -35,6 +35,7 @@ require_once('../../../include/studiensemester.class.php'); require_once('../../../include/zeitaufzeichnung_gd.class.php'); require_once('../../../include/benutzer.class.php'); require_once('../../../include/mitarbeiter.class.php'); +require_once('../../../include/lehrveranstaltung.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/sprache.class.php'); @@ -80,6 +81,9 @@ if(!$person->load($uid)) $ma = new mitarbeiter($uid); $fixangestellt = $ma->fixangestellt; +// Check, ob Lektor bereits zugewiesene LVs hat +$isAssignedToLv = checkIsAssigendToLV($uid, $selected_ss); // boolean + // Erklärung zu Pausen bei geteilten Arbeitszeiten speichern if (isset($_GET['selbstverwaltete-pause-akt']) && !empty($_GET['submit-akt'])) { @@ -261,6 +265,10 @@ if (isset($_GET['type']) && $_GET['type'] == 'save') } } } + + // Wenn speichern möglich ist, dann hat der Lektor entweder keine LVs zugeteilt oder hat aktiv die Bearbeitungssperre + // deaktiviert. Bearbeitungssperre wird gesetzt, wenn isAssignedToLv true ist. Deshalb hier mit false überschreiben. + $isAssignedToLv = false; } /** @@ -328,6 +336,23 @@ function updateZWG($uid, $zwg_id, $bis) return; } +/** + * Check, ob Lektor bereits zugewiesene LVs hat + * @param $uid + * @param $studiensemester_kurzbz + * @return bool|void + */ +function checkIsAssigendToLV($uid, $studiensemester_kurzbz) +{ + $lv = new Lehrveranstaltung(); + if (!$lv->getLVByMitarbeiter($uid, $studiensemester_kurzbz)) + { + die($lv->errormsg); + } + + return empty($lv->lehrveranstaltungen) ? false : true; +} + ?> @@ -365,6 +390,22 @@ function updateZWG($uid, $zwg_id, $bis) } $(function() { + // Bearbeitung deaktivieren, wenn Lektor zugewiesene LV im Studiensemester hat + const isAssignedToLv = $('input[name=isAssigendToLv]').val(); + if (isAssignedToLv == 'true') + { + $('input[name=radioZWG]').attr("disabled", true); + $('input[name=submit]').attr("disabled", true); + } + + // Bearbeitung aktivieren, wenn Lektor Aktivierungslink klickt + $('#bearbeitung-aktivieren').click(function(){ + $('input[name=radioZWG]').attr("disabled", false); + $('input[name=submit]').attr("disabled", false); + + $('#divChangeZWG').removeClass('hidden'); + $('#divIsAssignedToLv').addClass('hidden'); + }); // Bei Wechsel von Studiensemester die Seite mit GET params neu laden $('#stsem').change(function(){ @@ -488,6 +529,7 @@ function updateZWG($uid, $zwg_id, $bis) // FORM Begin echo '
'; echo ''; + echo ''; // Mein Zeitwunsch-Semesterplan Dropdown, Default = naechstes Studiensemester $next_ss_selected = $next_ss->studiensemester_kurzbz == $selected_ss ? 'selected' : ''; @@ -537,7 +579,8 @@ function updateZWG($uid, $zwg_id, $bis) echo '
'; echo '
'; echo 'Sie können Ihren Zeitwunsch direkt in der Tabelle bearbeiten oder einen Zeitwunsch eines vergangenen Studiensemester kopieren.
- Solange Sie keine Änderungen vornehmen, wird Ihr Zeitwunsch immer ins nächste Studiensemester übernommen.


'; + Solange Sie keine Änderungen vornehmen, wird Ihr Zeitwunsch immer ins nächste Studiensemester übernommen.
'; + echo '
'; // Radiobuttons aendern / kopieren $radioChangeChecked = is_null($selected_past_ss) ? 'checked' : ''; @@ -549,8 +592,12 @@ function updateZWG($uid, $zwg_id, $bis) echo ' ändern'; echo ''; echo ''; + if ($isAssignedToLv) + { + echo 'LV bereits zugeteilt'; + } echo '
'; echo '
'; // end col-xs-12 @@ -558,10 +605,11 @@ function updateZWG($uid, $zwg_id, $bis) echo '
'; - $divChangeHidden = !is_null($selected_past_ss) ? 'hidden' : ''; - $divCopyHidden = is_null($selected_past_ss) ? 'hidden' : ''; + $divChangeHidden = !is_null($selected_past_ss) || $isAssignedToLv ? 'hidden' : ''; + $divCopyHidden = is_null($selected_past_ss) || $isAssignedToLv ? 'hidden' : ''; + $divIsAssignedToLVHidden = $isAssignedToLv ? '' : 'hidden'; - echo '
'; + echo '
'; echo '
'; echo '' . $p->t('zeitwunsch/tragenSieInDiesesNormwochenraster') .' Klicken Sie danach auf \'Speichern\''; echo '
'; // end col @@ -571,10 +619,10 @@ function updateZWG($uid, $zwg_id, $bis) echo '
'; // end divChangeZWG echo '
'; - echo '
'; - echo 'Wählen Sie das gewünschte Studiensemester aus dem rechten Dropdown aus. + echo '
'; + echo 'Wählen Sie rechts das gewünschte Studiensemester aus. Der Zeitwunsch wird dann automatisch in die Tabelle übernommen.
- Nehmen Sie gegebenenfalls Änderungen vor und klicken Sie dann auf \'Speichern\'.
'; + Nehmen Sie gegebenenfalls Änderungen vor und klicken danach auf \'Speichern\'.'; echo '
'; // end col $studiensemester = new Studiensemester(); @@ -584,7 +632,7 @@ function updateZWG($uid, $zwg_id, $bis) $zwg = new Zeitwunsch_gueltigkeit(); $zwg->getByUID($uid, 4, true, $studiensemester->ende); $past_zwg_arr = $zwg->result; - echo '
'; + echo '
'; echo ''; From aa183a0a0812acd9ab844d7859199b105a0308b8 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 25 Nov 2021 10:56:50 +0100 Subject: [PATCH 074/354] Added 'Alle Werte auf 1 setzen' and 'Aenderungen zuruecknehmen' --- cis/private/profile/zeitwunsch.php | 31 +++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/cis/private/profile/zeitwunsch.php b/cis/private/profile/zeitwunsch.php index c4def2671..9bd56bad9 100644 --- a/cis/private/profile/zeitwunsch.php +++ b/cis/private/profile/zeitwunsch.php @@ -435,6 +435,21 @@ function checkIsAssigendToLV($uid, $studiensemester_kurzbz) window.location = '?stsem='+ stsem + '&pastStsem=' + pastStsem; }); + + // Alle Werte ind Zeitwunschtabelle auf 1 setzen + $('#empty-table').click(function(){ + $('#table-zeitwunsch tr td input').each(function() { + $(this) + .val(1) + .parent().css('background-color', '#CCFFCC'); + }); + }) + + // Aenderungen in Zeitwunschtabelle zurücknehmen -> Seite neu laden + $('#reload-table').click(function(){ + let studiensemester = $('option:selected', '#stsem').val(); + window.location = '?stsem=' + studiensemester; + }) }); @@ -543,7 +558,7 @@ function checkIsAssigendToLV($uid, $studiensemester_kurzbz) echo '
'; // Tabelle Zeitwunsch-Semesterplan - echo ''; + echo '
'; // Tabelle Kopfzeile echo ''; echo ''; @@ -581,7 +596,12 @@ function checkIsAssigendToLV($uid, $studiensemester_kurzbz) echo 'Sie können Ihren Zeitwunsch direkt in der Tabelle bearbeiten oder einen Zeitwunsch eines vergangenen Studiensemester kopieren.
Solange Sie keine Änderungen vornehmen, wird Ihr Zeitwunsch immer ins nächste Studiensemester übernommen.

'; echo '
'; + echo ''; // end col-xs-12 + echo ''; // end row + echo '
'; + + echo '
'; // Radiobuttons aendern / kopieren $radioChangeChecked = is_null($selected_past_ss) ? 'checked' : ''; $radioCopyChecked = !is_null($selected_past_ss) ? 'checked' : ''; @@ -599,11 +619,12 @@ function checkIsAssigendToLV($uid, $studiensemester_kurzbz) echo 'LV bereits zugeteilt'; } echo '
'; + echo '
'; // end col-xs-9 - echo ''; // end col-xs-12 - echo ''; // end row - - echo '
'; + echo '
'; + echo 'Alle Werte auf 1 setzen
'; + echo 'Änderungen zurücknehmen

'; + echo '
'; // end col-xs-3 $divChangeHidden = !is_null($selected_past_ss) || $isAssignedToLv ? 'hidden' : ''; $divCopyHidden = is_null($selected_past_ss) || $isAssignedToLv ? 'hidden' : ''; From 2e9bfc049b51582d9015942b8ddc2f46e4c6895c Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 25 Nov 2021 14:33:23 +0100 Subject: [PATCH 075/354] Corrected: Now retrieving correct data for 'isVerplant' . Correction in function isVerplant() . Also changed var name to isVerplant --- cis/private/profile/zeitwunsch.php | 37 +++++++++++++++--------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/cis/private/profile/zeitwunsch.php b/cis/private/profile/zeitwunsch.php index 9bd56bad9..84807927c 100644 --- a/cis/private/profile/zeitwunsch.php +++ b/cis/private/profile/zeitwunsch.php @@ -36,6 +36,7 @@ require_once('../../../include/zeitaufzeichnung_gd.class.php'); require_once('../../../include/benutzer.class.php'); require_once('../../../include/mitarbeiter.class.php'); require_once('../../../include/lehrveranstaltung.class.php'); +require_once('../../../include/lehrstunde.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/sprache.class.php'); @@ -82,7 +83,7 @@ $ma = new mitarbeiter($uid); $fixangestellt = $ma->fixangestellt; // Check, ob Lektor bereits zugewiesene LVs hat -$isAssignedToLv = checkIsAssigendToLV($uid, $selected_ss); // boolean +$isVerplant = checkIsVerplant($uid, $selected_ss); // boolean // Erklärung zu Pausen bei geteilten Arbeitszeiten speichern if (isset($_GET['selbstverwaltete-pause-akt']) && !empty($_GET['submit-akt'])) @@ -267,8 +268,8 @@ if (isset($_GET['type']) && $_GET['type'] == 'save') } // Wenn speichern möglich ist, dann hat der Lektor entweder keine LVs zugeteilt oder hat aktiv die Bearbeitungssperre - // deaktiviert. Bearbeitungssperre wird gesetzt, wenn isAssignedToLv true ist. Deshalb hier mit false überschreiben. - $isAssignedToLv = false; + // deaktiviert. Bearbeitungssperre wird gesetzt, wenn isVerplant true ist. Deshalb hier mit false überschreiben. + $isVerplant = false; } /** @@ -342,15 +343,15 @@ function updateZWG($uid, $zwg_id, $bis) * @param $studiensemester_kurzbz * @return bool|void */ -function checkIsAssigendToLV($uid, $studiensemester_kurzbz) +function checkIsVerplant($uid, $studiensemester_kurzbz) { - $lv = new Lehrveranstaltung(); - if (!$lv->getLVByMitarbeiter($uid, $studiensemester_kurzbz)) + $lstd = new Lehrstunde(); + if (!$lstd->getStundenplanData('stundenplandev', null, $studiensemester_kurzbz, null, $uid)) { - die($lv->errormsg); + die($lstd->errormsg); } - return empty($lv->lehrveranstaltungen) ? false : true; + return empty($lstd->result) ? false : true; } @@ -391,8 +392,8 @@ function checkIsAssigendToLV($uid, $studiensemester_kurzbz) $(function() { // Bearbeitung deaktivieren, wenn Lektor zugewiesene LV im Studiensemester hat - const isAssignedToLv = $('input[name=isAssigendToLv]').val(); - if (isAssignedToLv == 'true') + const isVerplant = $('input[name=isVerplant]').val(); + if (isVerplant == 'true') { $('input[name=radioZWG]').attr("disabled", true); $('input[name=submit]').attr("disabled", true); @@ -404,7 +405,7 @@ function checkIsAssigendToLV($uid, $studiensemester_kurzbz) $('input[name=submit]').attr("disabled", false); $('#divChangeZWG').removeClass('hidden'); - $('#divIsAssignedToLv').addClass('hidden'); + $('#divIsVerplant').addClass('hidden'); }); // Bei Wechsel von Studiensemester die Seite mit GET params neu laden @@ -544,7 +545,7 @@ function checkIsAssigendToLV($uid, $studiensemester_kurzbz) // FORM Begin echo ''; echo ''; - echo ''; + echo ''; // Mein Zeitwunsch-Semesterplan Dropdown, Default = naechstes Studiensemester $next_ss_selected = $next_ss->studiensemester_kurzbz == $selected_ss ? 'selected' : ''; @@ -614,7 +615,7 @@ function checkIsAssigendToLV($uid, $studiensemester_kurzbz) echo ''; - if ($isAssignedToLv) + if ($isVerplant) { echo 'LV bereits zugeteilt'; } @@ -626,9 +627,9 @@ function checkIsAssigendToLV($uid, $studiensemester_kurzbz) echo 'Änderungen zurücknehmen

'; echo '
'; // end col-xs-3 - $divChangeHidden = !is_null($selected_past_ss) || $isAssignedToLv ? 'hidden' : ''; - $divCopyHidden = is_null($selected_past_ss) || $isAssignedToLv ? 'hidden' : ''; - $divIsAssignedToLVHidden = $isAssignedToLv ? '' : 'hidden'; + $divChangeHidden = !is_null($selected_past_ss) || $isVerplant ? 'hidden' : ''; + $divCopyHidden = is_null($selected_past_ss) || $isVerplant ? 'hidden' : ''; + $divIsVerplantHidden = $isVerplant ? '' : 'hidden'; echo '
'; echo '
'; @@ -665,7 +666,7 @@ function checkIsAssigendToLV($uid, $studiensemester_kurzbz) echo '
'; // end col echo '
'; // end divCopyZWG - echo '
'; + echo '
'; echo '
'; echo '
'; echo '
'; @@ -678,7 +679,7 @@ function checkIsAssigendToLV($uid, $studiensemester_kurzbz) echo '
'; // end panel heading echo '
'; // end panel echo '
'; // end col - echo '
'; // end divIsAssignedToLV + echo '
'; // end divIsVerplant // Speichern - Button echo '
'; From ef675226e4bedd9f280a9c673bf42fcd1b4d7f7b Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 25 Nov 2021 14:36:03 +0100 Subject: [PATCH 076/354] Corrected: Now Lehrstunde Class has property 'result' . Errormessages were thrown without result property. Fixed now. . Also added errormsg, when getStundenplanData query fails. --- include/lehrstunde.class.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/lehrstunde.class.php b/include/lehrstunde.class.php index 71dbf3319..84cd615ed 100644 --- a/include/lehrstunde.class.php +++ b/include/lehrstunde.class.php @@ -34,6 +34,8 @@ require_once(dirname(__FILE__).'/variable.class.php'); class lehrstunde extends basis_db { + public $result = array(); + public $stundenplan_id; /// @brief ID in der Datenbank public $lehreinheit_id; /// @brief id der Lehreinheit in der DB public $unr; // @brief Unterrichtsnummer @@ -1136,7 +1138,10 @@ class lehrstunde extends basis_db return true; } else + { + $this->errormsg = 'Fehler beim Einholen der Stundenplandaten'; return false; + } } } From 6800c42b907911e6122de86db07f77407dd6fdf1 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Fri, 26 Nov 2021 14:52:39 +0100 Subject: [PATCH 077/354] nachname statt der uid anzeigen --- application/views/system/infocenter/infocenterData.php | 8 ++++++-- .../views/system/infocenter/infocenterFreigegebenData.php | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php index c49a1c6cc..83269ccf4 100644 --- a/application/views/system/infocenter/infocenterData.php +++ b/application/views/system/infocenter/infocenterData.php @@ -55,8 +55,10 @@ a.dokument_kurzbz in ('.$AKTE_TYP.') ) AS "AnzahlAkte", ( - SELECT l.insertvon + SELECT CASE WHEN sp.nachname IS NULL THEN l.insertvon ELSE sp.nachname END FROM system.tbl_log l + LEFT JOIN public.tbl_benutzer on l.insertvon = tbl_benutzer.uid + LEFT JOIN public.tbl_person sp on tbl_benutzer.person_id = sp.person_id WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.') AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.') AND l.person_id = p.person_id @@ -271,8 +273,10 @@ LEFT JOIN ( SELECT tpl.person_id, tpl.zeitpunkt, - tpl.uid AS lockuser + sp.nachname AS lockuser FROM system.tbl_person_lock tpl + JOIN public.tbl_benutzer sb USING (uid) + JOIN public.tbl_person sp ON sb.person_id = sp.person_id WHERE tpl.app = '.$APP.' ) pl USING(person_id) LEFT JOIN ( diff --git a/application/views/system/infocenter/infocenterFreigegebenData.php b/application/views/system/infocenter/infocenterFreigegebenData.php index 9078c13db..317e3dbf9 100644 --- a/application/views/system/infocenter/infocenterFreigegebenData.php +++ b/application/views/system/infocenter/infocenterFreigegebenData.php @@ -41,8 +41,10 @@ $query = ' LIMIT 1 ) AS "LastActionType", ( - SELECT l.insertvon + SELECT CASE WHEN sp.nachname IS NULL THEN l.insertvon ELSE sp.nachname END FROM system.tbl_log l + LEFT JOIN public.tbl_benutzer on l.insertvon = tbl_benutzer.uid + LEFT JOIN public.tbl_person sp on tbl_benutzer.person_id = sp.person_id WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.') AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.') AND l.person_id = p.person_id @@ -248,8 +250,10 @@ $query = ' LEFT JOIN ( SELECT tpl.person_id, tpl.zeitpunkt, - tpl.uid AS lockuser + sp.nachname AS lockuser FROM system.tbl_person_lock tpl + JOIN public.tbl_benutzer sb USING (uid) + JOIN public.tbl_person sp ON sb.person_id = sp.person_id WHERE tpl.app = '.$APP.' ) pl USING(person_id) WHERE From ea0035613a1f8e0deefa62e26d9cff8877055236 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Mon, 29 Nov 2021 10:14:33 +0100 Subject: [PATCH 078/354] FAS: Neue MA anlegen: Check auf Sonderzeichen in Vor- und Nachnamen nach Umwandlung Problemchars --- vilesci/personen/import/mitarbeiterimport.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/vilesci/personen/import/mitarbeiterimport.php b/vilesci/personen/import/mitarbeiterimport.php index c616beb76..34c052020 100644 --- a/vilesci/personen/import/mitarbeiterimport.php +++ b/vilesci/personen/import/mitarbeiterimport.php @@ -674,6 +674,19 @@ if(isset($_POST['save'])) $vorname_clean = mb_strtolower(convertProblemChars($vorname)); $nachname_clean = str_replace(' ','_', $nachname_clean); $vorname_clean = str_replace(' ','_', $vorname_clean); + var_dump($vorname_clean); + var_dump($nachname_clean); + + if (!preg_match('/^[a-z0-9-]{3,32}$/i', $vorname_clean)) + { + $error = true; + $errormsg = 'Im Vornamen dürfen keine Sonderzeichen außer - enthalten sein!'; + } + if (!preg_match('/^[a-z0-9-]{4,32}$/i', $nachname_clean)) + { + $error = true; + $errormsg = 'Im Nachnamen dürfen keine Sonderzeichen außer - enthalten sein!'; + } $bn = new benutzer(); From eb923cab9bec572539d14cd0d3c6e89d34fa434c Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 29 Nov 2021 11:31:03 +0100 Subject: [PATCH 079/354] Changed: Now using textphrases --- cis/private/profile/zeitwunsch.php | 33 +++++++++++++----------------- locale/de-AT/global.php | 1 + locale/de-AT/lvplan.php | 1 + locale/de-AT/zeitwunsch.php | 18 +++++++++++++++- locale/en-US/global.php | 1 + locale/en-US/lvplan.php | 1 + locale/en-US/zeitwunsch.php | 18 +++++++++++++++- 7 files changed, 52 insertions(+), 21 deletions(-) diff --git a/cis/private/profile/zeitwunsch.php b/cis/private/profile/zeitwunsch.php index 84807927c..8f7bca8c4 100644 --- a/cis/private/profile/zeitwunsch.php +++ b/cis/private/profile/zeitwunsch.php @@ -551,7 +551,7 @@ function checkIsVerplant($uid, $studiensemester_kurzbz) $next_ss_selected = $next_ss->studiensemester_kurzbz == $selected_ss ? 'selected' : ''; $akt_ss_selected = $akt_ss->studiensemester_kurzbz == $selected_ss ? 'selected' : ''; - echo '

Mein Zeitwunsch gültig im: '; + echo '

'. $p->t('zeitwunsch/gueltigIm'); echo ' ändern'; + echo ' '. $p->t('zeitwunsch/kopieren'). ''; echo ''; echo ''; if ($isVerplant) { - echo 'LV bereits zugeteilt'; + echo ''.$p->t('zeitwunsch/stundenBereitsVerplant', array($selected_ss)). ''; } echo '

'; echo ''; // end col-xs-9 echo ''; // end col-xs-3 $divChangeHidden = !is_null($selected_past_ss) || $isVerplant ? 'hidden' : ''; @@ -633,7 +632,7 @@ function checkIsVerplant($uid, $studiensemester_kurzbz) echo '
'; echo '
'; - echo '' . $p->t('zeitwunsch/tragenSieInDiesesNormwochenraster') .' Klicken Sie danach auf \'Speichern\''; + echo '' . $p->t('zeitwunsch/tragenSieInDiesesNormwochenraster') .''; echo '
'; // end col echo '
'; // BLANK @@ -642,9 +641,7 @@ function checkIsVerplant($uid, $studiensemester_kurzbz) echo '
'; echo '
'; - echo 'Wählen Sie rechts das gewünschte Studiensemester aus. - Der Zeitwunsch wird dann automatisch in die Tabelle übernommen.
- Nehmen Sie gegebenenfalls Änderungen vor und klicken danach auf \'Speichern\'.
'; + echo '' . $p->t('zeitwunsch/kopierenText') .''; echo '
'; // end col $studiensemester = new Studiensemester(); @@ -670,12 +667,10 @@ function checkIsVerplant($uid, $studiensemester_kurzbz) echo '
'; echo '
'; echo '
'; - echo 'Bearbeitung deaktiviert: '; - echo 'Ihnen wurden im '. $selected_ss. ' bereits Lehrveranstaltung(en) zugeteilt.
- Bitte stimmen Sie sich vor einer Änderung mit der '. $p->t('lvplan/lvKoordinationsstelle'). ' ab.
- Möchten Sie mit der Bearbeitung fortsetzen? Hier Bearbeitung aktivieren + echo ''. $p->t("zeitwunsch/bearbeitungDeaktiviert"). ': '; + echo ''. $p->t("zeitwunsch/bearbeitungDeaktiviertText", array($selected_ss, MAIL_LVPLAN, $p->t('lvplan/lvPlanung'))). ' + '. $p->t("zeitwunsch/bearbeitungAktivieren"). ' '; - echo '
'; // end panel heading echo '
'; // end panel echo '
'; // end col @@ -700,7 +695,7 @@ function checkIsVerplant($uid, $studiensemester_kurzbz)
  • t('zeitwunsch/sperrenSieNurTermine');?>
  • t('zeitwunsch/esSolltenFuerJedeStunde');?>

  • -

    t('lvplan/fehlerUndFeedback');?> t('lvplan/lvKoordinationsstelle');?>.


    +

    t('lvplan/fehlerUndFeedback');?> t('lvplan/lvPlanung');?>.



    diff --git a/locale/de-AT/global.php b/locale/de-AT/global.php index 586614ece..7104a83a5 100644 --- a/locale/de-AT/global.php +++ b/locale/de-AT/global.php @@ -66,6 +66,7 @@ $this->phrasen['global/pdfExport']='PDF Export'; $this->phrasen['global/und']='und'; $this->phrasen['global/oder']='oder'; $this->phrasen['global/faelligAm']='Fällig am'; +$this->phrasen['global/aenderungenZuruecksetzen']= "Änderungen zurücksetzen"; $this->phrasen['global/username']='Username'; $this->phrasen['global/vorname']='Vorname'; diff --git a/locale/de-AT/lvplan.php b/locale/de-AT/lvplan.php index f0e802896..59fd5169a 100644 --- a/locale/de-AT/lvplan.php +++ b/locale/de-AT/lvplan.php @@ -21,6 +21,7 @@ $this->phrasen['lvplan/lehrverbaende']='Lehrverbände'; $this->phrasen['lvplan/uebersichtDerLehrverbaende']='Übersicht der Lehrverbände'; $this->phrasen['lvplan/fehlerUndFeedback']='Feedback geben'; $this->phrasen['lvplan/lvKoordinationsstelle']='LV-Koordinationsstelle'; +$this->phrasen['lvplan/lvPlanung']='LV-Planung'; $this->phrasen['lvplan/reservierungen']='Reservierungen'; $this->phrasen['lvplan/reservierungWurdeGeloescht']='Reservierung wurde geloescht'; $this->phrasen['lvplan/alleReservierungen']='Alle Reservierungen'; diff --git a/locale/de-AT/zeitwunsch.php b/locale/de-AT/zeitwunsch.php index 31424f8f9..d56494104 100644 --- a/locale/de-AT/zeitwunsch.php +++ b/locale/de-AT/zeitwunsch.php @@ -3,7 +3,7 @@ $this->phrasen['zeitwunsch/falscheWerteEingetragen']='Es duerfen nur die Werte - $this->phrasen['zeitwunsch/zeitwunsch']='Zeitwunsch'; $this->phrasen['zeitwunsch/help']='HELP'; $this->phrasen['zeitwunsch/zeitwunschVon']='Zeitwünsche von'; -$this->phrasen['zeitwunsch/tragenSieInDiesesNormwochenraster']='Tragen Sie in dieses Normwochenraster Ihre Verfügbarkeit in einer durchschnittlichen Arbeitswoche ein.'; +$this->phrasen['zeitwunsch/tragenSieInDiesesNormwochenraster']="Tragen Sie in dieses Normwochenraster Ihre Verfügbarkeit in einer durchschnittlichen Arbeitswoche ein. Klicken Sie danach auf 'Speichern'"; $this->phrasen['zeitwunsch/letzteAenderung']='Letzte Änderung'; $this->phrasen['zeitwunsch/von']='von'; $this->phrasen['zeitwunsch/formularZumEintragenDerZeitsperren']='Das Formular zum Eintragen der Zeitsperren finden Sie %s hier'; @@ -24,4 +24,20 @@ $this->phrasen['zeitwunsch/erklaerung']='Erklärung'; $this->phrasen['zeitwunsch/beiProblemenWendenSieSichAn']='Bei Problemen wenden Sie sich bitte an die'; $this->phrasen['zeitwunsch/profil']='Profil'; $this->phrasen['zeitwunsch/geteilteArbeitszeit']='Ich bin mit der Verplanung meiner Lehre in getrennten Blöcken am Tagesrand einverstanden.'; +$this->phrasen['zeitwunsch/gueltigIm']="Mein Zeitwunsch gültig im: "; +$this->phrasen['zeitwunsch/erklaerungstext']="Sie können Ihren Zeitwunsch direkt in der Tabelle bearbeiten oder einen Zeitwunsch eines vergangenen Studiensemester kopieren.
    + Solange Sie keine Änderungen vornehmen, wird Ihr Zeitwunsch immer ins nächste Studiensemester übernommen."; +$this->phrasen['zeitwunsch/werteAuf1setzen']="Alle Werte auf 1 setzen"; +$this->phrasen['zeitwunsch/kopierenText']="Wählen Sie rechts das gewünschte Studiensemester aus. + Der Zeitwunsch wird dann automatisch in die Tabelle übernommen.
    + Nehmen Sie gegebenenfalls Änderungen vor und klicken danach auf 'Speichern'."; +$this->phrasen['zeitwunsch/kopieren']= "ändern"; +$this->phrasen['zeitwunsch/aendern']= "kopieren von früherem Studiensemester "; +$this->phrasen['zeitwunsch/stundenBereitsVerplant']='Stunden für %s bereits verplant'; +$this->phrasen['zeitwunsch/fuer']='Zeitwunsch für %s  '; +$this->phrasen['zeitwunsch/bearbeitungDeaktiviert']='Bearbeitung deaktiviert'; +$this->phrasen['zeitwunsch/bearbeitungDeaktiviertText']='Ihnen wurden im %s bereits Lehrveranstaltung(en) zugeteilt.
    + Bitte stimmen Sie sich vor einer Änderung mit der %s ab.
    + Möchten Sie mit der Bearbeitung fortsetzen?'; +$this->phrasen['zeitwunsch/bearbeitungAktivieren']='Bearbeitung aktivieren'; ?> diff --git a/locale/en-US/global.php b/locale/en-US/global.php index 5fa89acbb..97f5cfe26 100644 --- a/locale/en-US/global.php +++ b/locale/en-US/global.php @@ -65,6 +65,7 @@ $this->phrasen['global/drucken']='Print'; $this->phrasen['global/und']='and'; $this->phrasen['global/oder']='or'; $this->phrasen['global/faelligAm']='Due on'; +$this->phrasen['global/aenderungenZuruecksetzen']= "Reset changes"; $this->phrasen['global/username']='Username'; $this->phrasen['global/vorname']='First Name'; diff --git a/locale/en-US/lvplan.php b/locale/en-US/lvplan.php index bd2b4b1eb..1a8c865bf 100644 --- a/locale/en-US/lvplan.php +++ b/locale/en-US/lvplan.php @@ -21,6 +21,7 @@ $this->phrasen['lvplan/lehrverbaende']='Teaching Groups'; $this->phrasen['lvplan/uebersichtDerLehrverbaende']='Overview of Teaching Groups'; $this->phrasen['lvplan/fehlerUndFeedback']='Send Feedback'; $this->phrasen['lvplan/lvKoordinationsstelle']='Course-Coordination Office'; +$this->phrasen['lvplan/lvPlanung']='Course-Planning Office'; $this->phrasen['lvplan/reservierungen']='Reservations'; $this->phrasen['lvplan/reservierungWurdeGeloescht'] = 'Reservation successfully deleted'; $this->phrasen['lvplan/alleReservierungen']='All reservations'; diff --git a/locale/en-US/zeitwunsch.php b/locale/en-US/zeitwunsch.php index 1a4a93378..7d89d65f2 100644 --- a/locale/en-US/zeitwunsch.php +++ b/locale/en-US/zeitwunsch.php @@ -3,7 +3,7 @@ $this->phrasen['zeitwunsch/falscheWerteEingetragen']='Invalid input. Only the va $this->phrasen['zeitwunsch/zeitwunsch']='Preferred teaching time'; $this->phrasen['zeitwunsch/help']='HELP'; $this->phrasen['zeitwunsch/zeitwunschVon']='Preferred teaching times for'; -$this->phrasen['zeitwunsch/tragenSieInDiesesNormwochenraster']='Enter your availability for an average week in this standard week grid.'; +$this->phrasen['zeitwunsch/tragenSieInDiesesNormwochenraster']='Enter your availability for an average week in this standard week grid and click "Save"'; $this->phrasen['zeitwunsch/letzteAenderung']='Last Update'; $this->phrasen['zeitwunsch/von']='from'; $this->phrasen['zeitwunsch/formularZumEintragenDerZeitsperren']='The form for entering times when you are unavailable to teach can be found %s here'; @@ -24,4 +24,20 @@ $this->phrasen['zeitwunsch/erklaerung']='Explanation'; $this->phrasen['zeitwunsch/beiProblemenWendenSieSichAn']='If you are having problems, please contact the '; $this->phrasen['zeitwunsch/profil']='Profile'; $this->phrasen['zeitwunsch/geteilteArbeitszeit']='Ich bin mit der Verplanung meiner Lehre in getrennten Blöcken am Tagesrand einverstanden.'; +$this->phrasen['zeitwunsch/gueltigIm']="My preferred times valid in: "; +$this->phrasen['zeitwunsch/erklaerungstext']="You can edit your preferred times directly in the table or copy a your preferred times from a previous semester.
    + As long as you do not make any changes, your preferred times will be carried over to the next study semester."; +$this->phrasen['zeitwunsch/werteAuf1setzen']="Set all values to 1"; +$this->phrasen['zeitwunsch/kopierenText']="Select the desired semester on the right. + Your preferred time of that semester is then automatically transferred to the table.
    + Make changes if necessary and then click on 'Save'."; +$this->phrasen['zeitwunsch/kopieren']= "change"; +$this->phrasen['zeitwunsch/aendern']= "copy from a previous semester"; +$this->phrasen['zeitwunsch/stundenBereitsVerplant']='Hours already scheduled for %s'; +$this->phrasen['zeitwunsch/fuer']='Preferred time for %s  '; +$this->phrasen['zeitwunsch/bearbeitungDeaktiviert']='Editing disabled'; +$this->phrasen['zeitwunsch/bearbeitungDeaktiviertText']='You have already been assigned to course(s) in %s.
    + Please agree with %s before making a change.
    + Do you want to proceed editing?'; +$this->phrasen['zeitwunsch/bearbeitungAktivieren']='Enable editing'; ?> From 70c9489ef36ed37e393f65608ee0c649bb562889 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 29 Nov 2021 17:38:16 +0100 Subject: [PATCH 080/354] Corrected to retrieve latest Zeitwunschgueltigkeit correctly in getByUID function ...by changing query order --- include/zeitwunsch_gueltigkeit.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/zeitwunsch_gueltigkeit.class.php b/include/zeitwunsch_gueltigkeit.class.php index 20d1d367d..4477551b1 100644 --- a/include/zeitwunsch_gueltigkeit.class.php +++ b/include/zeitwunsch_gueltigkeit.class.php @@ -156,7 +156,7 @@ class zeitwunsch_gueltigkeit extends basis_db // Nach Gueltigkeits-Startdatum sortieren, zuerst die zuletzt gueltigen $qry.= ' - ORDER BY zeitwunsch_gueltigkeit_id DESC, start DESC + ORDER BY start DESC '; // Wenn nur aktive Zeitwunschgueltigkeiten angezeigt werden sollen From 93d9108db784c92b761684dfef1df74f2b34cc31 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 29 Nov 2021 17:51:08 +0100 Subject: [PATCH 081/354] Added functionality to select Zeitwunschgueltigkeiten in VILESCI . added Dropdown with all Zeitwunschgueltigkeiten . adpated Table to display selected Zeitwunschgueltigkeit --- vilesci/personen/zeitwunsch.php | 55 ++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/vilesci/personen/zeitwunsch.php b/vilesci/personen/zeitwunsch.php index 416c6387d..81d1c0c22 100644 --- a/vilesci/personen/zeitwunsch.php +++ b/vilesci/personen/zeitwunsch.php @@ -32,6 +32,8 @@ require_once('../../include/functions.inc.php'); require_once('../../include/globals.inc.php'); require_once('../../include/datum.class.php'); require_once('../../include/benutzerberechtigung.class.php'); +require_once('../../include/zeitwunsch.class.php'); +require_once('../../include/zeitwunsch_gueltigkeit.class.php'); if (!$db = new basis_db()) die('Es konnte keine Verbindung zum Server aufgebaut werden.'); @@ -48,6 +50,20 @@ if (!isset($uid)) { die( "uid nicht gesetzt"); } + +// Zeitwunschgueltigkeit ID ueber Dropdown ausgewaehlt +if (isset($_GET['zwg_id']) && is_string($_GET['zwg_id'])) +{ + $zwg_id = $_GET['zwg_id']; +} +else +{ + // Default: Letzte Zeitwunschgueltigkeit (ZWG) holen + $zwg = new Zeitwunsch_gueltigkeit(); + $zwg->getByUID($uid, 1); + $zwg_id = !empty($zwg->result) ? $zwg->result[0]->zeitwunsch_gueltigkeit_id : null; // NULL, wenn Lektor noch gar keinen ZW hinterlegt hat +} + $uid_benutzer = get_uid(); $rechte = new benutzerberechtigung(); @@ -97,7 +113,12 @@ $updatevon = 0; } } - if(!($erg=$db->db_query("SELECT * FROM campus.tbl_zeitwunsch WHERE mitarbeiter_uid=".$db->db_add_param($uid)))) + if(!($erg=$db->db_query(" + SELECT * + FROM campus.tbl_zeitwunsch + WHERE mitarbeiter_uid = ". $db->db_add_param($uid). " + AND zeitwunsch_gueltigkeit_id = ". $db->db_add_param(($zwg_id)) + ))) die($db->db_last_error()); $num_rows=$db->db_num_rows($erg); for ($i=0;$i<$num_rows;$i++) @@ -135,10 +156,42 @@ $updatevon = 0; Profil + +

    Zeitwünsche von titelpre.' '.$person->vornamen.' '.$person->nachname. ' '.$person->titelpost; ?>

    +Zeitwunschgueltigkeit: +getByUID($uid, null, false); +$zwg_arr = $zwg->result; + +echo ''; +?> +

    '.$p->t('global/stunde').'
    '.$p->t('global/beginn').'
    '.$p->t('global/ende').'
    From 76ca1706787ddfcc68cac0b18df3751be96c6008 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 29 Nov 2021 19:08:56 +0100 Subject: [PATCH 082/354] Changed: when splitting Zeitwunschgueltigkeit, set ende of last ZWG to 'yesterday' Before it was set to now(). But new ZWG starts with now, therefore last ZWG should end with day before. --- cis/private/profile/zeitwunsch.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cis/private/profile/zeitwunsch.php b/cis/private/profile/zeitwunsch.php index 8f7bca8c4..c8dea109a 100644 --- a/cis/private/profile/zeitwunsch.php +++ b/cis/private/profile/zeitwunsch.php @@ -219,9 +219,9 @@ if (isset($_GET['type']) && $_GET['type'] == 'save') // -> sonst ist bis null $zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), $akt_ss_zwg->bis); - // Fuer bisher letzte ZWG das Endedatum auf heute setzen: bis = now() + // Fuer bisher letzte ZWG das Endedatum auf gestern setzen: bis = gestern // NOTE: MUSS nach dem insert sein - updateZWG($uid, $akt_ss_zwg->zeitwunsch_gueltigkeit_id, (new DateTime())->format('Y-m-d H:i:s')); + updateZWG($uid, $akt_ss_zwg->zeitwunsch_gueltigkeit_id, (new DateTime('yesterday'))->format('Y-m-d H:i:s')); } } } From 5fa605a75ff6804cb9e2a59ee48074feba51eb2d Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Tue, 30 Nov 2021 04:19:43 +0100 Subject: [PATCH 083/354] bpk overview filter: added mitarbeiter column to default filter --- system/filtersupdate.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/system/filtersupdate.php b/system/filtersupdate.php index 78e2bb227..0d3e85c7e 100644 --- a/system/filtersupdate.php +++ b/system/filtersupdate.php @@ -347,7 +347,8 @@ $filters = array( {"name": "vorname"}, {"name": "nachname"}, {"name": "svnr"}, - {"name": "ersatzkennzeichen"} + {"name": "ersatzkennzeichen"}, + {"name": "mitarbeiter"} ], "filters": [] } From be4beaff95703b819bbe53b83c9a0467b88da86a Mon Sep 17 00:00:00 2001 From: Monika70 <46781283+Monika70@users.noreply.github.com> Date: Tue, 30 Nov 2021 13:37:50 +0100 Subject: [PATCH 084/354] Update dbupdate_3.3.php Erweiterung der Studiengangstypen --- system/dbupdate_3.3.php | 64 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 4 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 94f37d4aa..90147a4bc 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -1735,7 +1735,7 @@ if ($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants if(!$db->db_query($qry)) echo 'system.tbl_person_lock Berechtigungen: '.$db->db_last_error().'
    '; else - echo 'UPDATE Recht fuer system.tbl_person_lock fuer vilesci user gesetzt '; + echo '
    UPDATE Recht fuer system.tbl_person_lock fuer vilesci user gesetzt
    '; } } @@ -1750,7 +1750,7 @@ if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants if(!$db->db_query($qry)) echo 'bis.tbl_mobilitaet Berechtigungen: '.$db->db_last_error().'
    '; else - echo 'SELECT Recht fuer bis.tbl_mobilitaet fuer web user gesetzt '; + echo '
    SELECT Recht fuer bis.tbl_mobilitaet fuer web user gesetzt
    '; } } @@ -4193,10 +4193,66 @@ if(!$result = @$db->db_query("SELECT bezeichnung_mehrsprachig FROM public.tbl_st if(!$db->db_query($qry)) echo 'Setzen der bezeichnung_mehrsprachig fehlgeschlagen: '.$db->db_last_error().'
    '; else - echo 'bis.tbl_studiengangstyp: bezeichnung_mehrprachig automatisch aus existierender Bezeichnung uebernommen
    '; + echo '
    bis.tbl_studiengangstyp: bezeichnung_mehrprachig automatisch aus existierender Bezeichnung uebernommen
    '; } } +// Add type "p" to Studiengangstyp + if ($result = @$db->db_query("SELECT 1 FROM public.tbl_studiengangstyp WHERE typ = 'p';")) + { + if ($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO public.tbl_studiengangstyp(typ,bezeichnung,beschreibung,bezeichnung_mehrsprachig) VALUES('p', 'PhD',NULL,'{PhD,PhD}');"; + + if (!$db->db_query($qry)) + echo 'system.tbl_webservicetyp '.$db->db_last_error().'
    '; + else + echo '
    public.tbl_studiengangstyp: Added type "p"
    '; + } + } + +// Add type "l" to Studiengangstyp + if ($result = @$db->db_query("SELECT 1 FROM public.tbl_studiengangstyp WHERE typ = 'l';")) + { + if ($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO public.tbl_studiengangstyp(typ,bezeichnung,beschreibung,bezeichnung_mehrsprachig) VALUES('l', 'Lehrgang',NULL,'{Lehrgang,Course}');"; + + if (!$db->db_query($qry)) + echo 'system.tbl_webservicetyp '.$db->db_last_error().'
    '; + else + echo '
    public.tbl_studiengangstyp: Added type "l"
    '; + } + } + +// Add type "d" to Studiengangstyp + if ($result = @$db->db_query("SELECT 1 FROM public.tbl_studiengangstyp WHERE typ = 'd';")) + { + if ($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO public.tbl_studiengangstyp(typ,bezeichnung,beschreibung,bezeichnung_mehrsprachig) VALUES('d', 'Diplom',NULL,'{Diplom,Diploma}');"; + + if (!$db->db_query($qry)) + echo 'system.tbl_webservicetyp '.$db->db_last_error().'
    '; + else + echo '
    public.tbl_studiengangstyp: Added type "d"
    '; + } + } + +// Add type "w" to Studiengangstyp + if ($result = @$db->db_query("SELECT 1 FROM public.tbl_studiengangstyp WHERE typ = 'w';")) + { + if ($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO public.tbl_studiengangstyp(typ,bezeichnung,beschreibung,bezeichnung_mehrsprachig) VALUES('w', 'Weiterbildung',NULL,'{Weiterbildung,Further education}');"; + + if (!$db->db_query($qry)) + echo 'system.tbl_webservicetyp '.$db->db_last_error().'
    '; + else + echo '
    public.tbl_studiengangstyp: Added type "w"
    '; + } + } + /** * Anpassungen fuer BIS Personalmeldung 6.8 */ @@ -5930,4 +5986,4 @@ if (!$result=@$db->db_query($sql_query)) } if($error==false) echo '
    Gegenpruefung fehlerfrei'; -?> +?> \ No newline at end of file From 5c84196f965c636aa922f06a083da35303ad9228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 1 Dec 2021 14:28:17 +0100 Subject: [PATCH 085/354] Fixed Code Intentation --- system/dbupdate_3.3.php | 86 ++++++++++++++++++++--------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 90147a4bc..1d4e990b0 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4198,60 +4198,60 @@ if(!$result = @$db->db_query("SELECT bezeichnung_mehrsprachig FROM public.tbl_st } // Add type "p" to Studiengangstyp - if ($result = @$db->db_query("SELECT 1 FROM public.tbl_studiengangstyp WHERE typ = 'p';")) +if ($result = @$db->db_query("SELECT 1 FROM public.tbl_studiengangstyp WHERE typ = 'p';")) +{ + if ($db->db_num_rows($result) == 0) { - if ($db->db_num_rows($result) == 0) - { - $qry = "INSERT INTO public.tbl_studiengangstyp(typ,bezeichnung,beschreibung,bezeichnung_mehrsprachig) VALUES('p', 'PhD',NULL,'{PhD,PhD}');"; - - if (!$db->db_query($qry)) - echo 'system.tbl_webservicetyp '.$db->db_last_error().'
    '; - else - echo '
    public.tbl_studiengangstyp: Added type "p"
    '; - } + $qry = "INSERT INTO public.tbl_studiengangstyp(typ,bezeichnung,beschreibung,bezeichnung_mehrsprachig) VALUES('p', 'PhD',NULL,'{PhD,PhD}');"; + + if (!$db->db_query($qry)) + echo 'system.tbl_webservicetyp '.$db->db_last_error().'
    '; + else + echo '
    public.tbl_studiengangstyp: Added type "p"
    '; } - +} + // Add type "l" to Studiengangstyp - if ($result = @$db->db_query("SELECT 1 FROM public.tbl_studiengangstyp WHERE typ = 'l';")) +if ($result = @$db->db_query("SELECT 1 FROM public.tbl_studiengangstyp WHERE typ = 'l';")) +{ + if ($db->db_num_rows($result) == 0) { - if ($db->db_num_rows($result) == 0) - { - $qry = "INSERT INTO public.tbl_studiengangstyp(typ,bezeichnung,beschreibung,bezeichnung_mehrsprachig) VALUES('l', 'Lehrgang',NULL,'{Lehrgang,Course}');"; - - if (!$db->db_query($qry)) - echo 'system.tbl_webservicetyp '.$db->db_last_error().'
    '; - else - echo '
    public.tbl_studiengangstyp: Added type "l"
    '; - } + $qry = "INSERT INTO public.tbl_studiengangstyp(typ,bezeichnung,beschreibung,bezeichnung_mehrsprachig) VALUES('l', 'Lehrgang',NULL,'{Lehrgang,Course}');"; + + if (!$db->db_query($qry)) + echo 'system.tbl_webservicetyp '.$db->db_last_error().'
    '; + else + echo '
    public.tbl_studiengangstyp: Added type "l"
    '; } - +} + // Add type "d" to Studiengangstyp - if ($result = @$db->db_query("SELECT 1 FROM public.tbl_studiengangstyp WHERE typ = 'd';")) +if ($result = @$db->db_query("SELECT 1 FROM public.tbl_studiengangstyp WHERE typ = 'd';")) +{ + if ($db->db_num_rows($result) == 0) { - if ($db->db_num_rows($result) == 0) - { - $qry = "INSERT INTO public.tbl_studiengangstyp(typ,bezeichnung,beschreibung,bezeichnung_mehrsprachig) VALUES('d', 'Diplom',NULL,'{Diplom,Diploma}');"; - - if (!$db->db_query($qry)) - echo 'system.tbl_webservicetyp '.$db->db_last_error().'
    '; - else - echo '
    public.tbl_studiengangstyp: Added type "d"
    '; - } + $qry = "INSERT INTO public.tbl_studiengangstyp(typ,bezeichnung,beschreibung,bezeichnung_mehrsprachig) VALUES('d', 'Diplom',NULL,'{Diplom,Diploma}');"; + + if (!$db->db_query($qry)) + echo 'system.tbl_webservicetyp '.$db->db_last_error().'
    '; + else + echo '
    public.tbl_studiengangstyp: Added type "d"
    '; } +} // Add type "w" to Studiengangstyp - if ($result = @$db->db_query("SELECT 1 FROM public.tbl_studiengangstyp WHERE typ = 'w';")) +if ($result = @$db->db_query("SELECT 1 FROM public.tbl_studiengangstyp WHERE typ = 'w';")) +{ + if ($db->db_num_rows($result) == 0) { - if ($db->db_num_rows($result) == 0) - { - $qry = "INSERT INTO public.tbl_studiengangstyp(typ,bezeichnung,beschreibung,bezeichnung_mehrsprachig) VALUES('w', 'Weiterbildung',NULL,'{Weiterbildung,Further education}');"; - - if (!$db->db_query($qry)) - echo 'system.tbl_webservicetyp '.$db->db_last_error().'
    '; - else - echo '
    public.tbl_studiengangstyp: Added type "w"
    '; - } + $qry = "INSERT INTO public.tbl_studiengangstyp(typ,bezeichnung,beschreibung,bezeichnung_mehrsprachig) VALUES('w', 'Weiterbildung',NULL,'{Weiterbildung,Further education}');"; + + if (!$db->db_query($qry)) + echo 'system.tbl_webservicetyp '.$db->db_last_error().'
    '; + else + echo '
    public.tbl_studiengangstyp: Added type "w"
    '; } +} /** * Anpassungen fuer BIS Personalmeldung 6.8 @@ -5986,4 +5986,4 @@ if (!$result=@$db->db_query($sql_query)) } if($error==false) echo '
    Gegenpruefung fehlerfrei'; -?> \ No newline at end of file +?> From 8d1886039a6556ac1eedd3e4aa8d89169ec59ad6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 1 Dec 2021 15:00:02 +0100 Subject: [PATCH 086/354] =?UTF-8?q?Projektarbeiten=20DropDown=20angepasst?= =?UTF-8?q?=20damit=20nach=20dem=20Laden=20die=20selben=20LVEinttr=C3=A4ge?= =?UTF-8?q?=20angezeigt=20werden=20wie=20bei=20der=20Neuanlage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/student/studentprojektarbeit.js.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/student/studentprojektarbeit.js.php b/content/student/studentprojektarbeit.js.php index c30f7ea1c..40af4107d 100644 --- a/content/student/studentprojektarbeit.js.php +++ b/content/student/studentprojektarbeit.js.php @@ -183,7 +183,7 @@ function StudentProjektarbeitTreeLoad(uid) tree.builder.addListener(StudentProjektarbeitTreeListener); StudentProjektarbeitDisableFields(false); - + // Wenn Vertragsdetails angezeigt werden if (projektarbeit_vertragsdetails_anzeigen) { //Reset attributes @@ -398,7 +398,7 @@ function StudentProjektarbeitAuswahl() //Lehrveranstaltung DropDown laden var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung'); - url='rdf/lehrveranstaltung.rdf.php?stg_kz='+stg_kz+"&projektarbeit=true&withlv="+lehrveranstaltung_id+"&"+gettimestamp(); + url='rdf/lehrveranstaltung.rdf.php?uid='+student_uid+"&projektarbeit=true&withlv="+lehrveranstaltung_id+"&"+gettimestamp(); //Alte DS entfernen var oldDatasources = LvDropDown.database.GetDataSources(); From b4eb2d426a305f618f9978603a62e1bec6d48d86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 1 Dec 2021 17:00:28 +0100 Subject: [PATCH 087/354] Lehrauftragsverwaltung - Anzeige von Nachname und Vorname bei Betreuungen vertauscht --- .../views/lehre/lehrauftrag/approveLehrauftragData.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/views/lehre/lehrauftrag/approveLehrauftragData.php b/application/views/lehre/lehrauftrag/approveLehrauftragData.php index 4d8dc36d0..635fd9da9 100644 --- a/application/views/lehre/lehrauftrag/approveLehrauftragData.php +++ b/application/views/lehre/lehrauftrag/approveLehrauftragData.php @@ -187,7 +187,7 @@ FROM (SELECT uid FROM - public.tbl_benutzer JOIN public.tbl_mitarbeiter ma + public.tbl_benutzer JOIN public.tbl_mitarbeiter ma ON tbl_benutzer.uid = ma.mitarbeiter_uid WHERE person_id = tmp_projektbetreuung.person_id @@ -268,7 +268,7 @@ FROM ELSE (oe.organisationseinheittyp_kurzbz || \' \' || oe.bezeichnung) END AS "lv_oe_kurzbz", - (vorname || \' \' || nachname) AS "lektor", + (nachname || \' \' || vorname) AS "lektor", TRUNC(pb.stunden, 1) AS "stunden", TRUNC((pb.stunden * pb.stundensatz), 2) AS "betrag", vertrag_id, From b2d46af0d6f1693dc459eedc05c686b7476dc39e Mon Sep 17 00:00:00 2001 From: ma0048 Date: Wed, 1 Dec 2021 19:31:31 +0100 Subject: [PATCH 088/354] wording und datum angepasst --- application/controllers/system/infocenter/InfoCenter.php | 4 ++-- application/views/system/infocenter/infocenterAbgewiesen.php | 2 +- .../views/system/infocenter/infocenterAbgewiesenData.php | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index 6ebc1c220..69da53963 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -1486,7 +1486,7 @@ class InfoCenter extends Auth_Controller 20 // sort ), 'abgewiesen' => $this->navigationlib->oneLevel( - 'Abgewiesene Studenten', // description + 'Abgewiesene', // description $abgewiesenLink, // link null, // children 'close', // icon @@ -1624,7 +1624,7 @@ class InfoCenter extends Auth_Controller $this->navigationlib->setSessionElementMenu( 'abgewiesen', $this->navigationlib->oneLevel( - 'Abgewiesene Studenten', // description + 'Abgewiesene', // description $abgewiesenLink, // link null, // children 'close', // icon diff --git a/application/views/system/infocenter/infocenterAbgewiesen.php b/application/views/system/infocenter/infocenterAbgewiesen.php index 22adacea8..8e946e573 100644 --- a/application/views/system/infocenter/infocenterAbgewiesen.php +++ b/application/views/system/infocenter/infocenterAbgewiesen.php @@ -35,7 +35,7 @@
    diff --git a/application/views/system/infocenter/infocenterAbgewiesenData.php b/application/views/system/infocenter/infocenterAbgewiesenData.php index a7560432f..3bf60a9ef 100644 --- a/application/views/system/infocenter/infocenterAbgewiesenData.php +++ b/application/views/system/infocenter/infocenterAbgewiesenData.php @@ -76,6 +76,7 @@ $query = ' $datasetRaw->{'Nachricht'} = 'Ja'; } + $datasetRaw->{'AbgewiesenAm'} = date_format(date_create($datasetRaw->{'AbgewiesenAm'}),'Y-m-d H:i'); return $datasetRaw; } ); From 410772b23011ebda0a768781e477f359aeb60dd9 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Thu, 2 Dec 2021 07:19:51 +0100 Subject: [PATCH 089/354] =?UTF-8?q?Aliasgenerierung:=20Adaptierung=20Wordi?= =?UTF-8?q?ng=20Validierung=20und=20L=C3=B6schen=20Kommentar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vilesci/personen/import/mitarbeiterimport.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/vilesci/personen/import/mitarbeiterimport.php b/vilesci/personen/import/mitarbeiterimport.php index 34c052020..2a1e299ee 100644 --- a/vilesci/personen/import/mitarbeiterimport.php +++ b/vilesci/personen/import/mitarbeiterimport.php @@ -674,18 +674,16 @@ if(isset($_POST['save'])) $vorname_clean = mb_strtolower(convertProblemChars($vorname)); $nachname_clean = str_replace(' ','_', $nachname_clean); $vorname_clean = str_replace(' ','_', $vorname_clean); - var_dump($vorname_clean); - var_dump($nachname_clean); if (!preg_match('/^[a-z0-9-]{3,32}$/i', $vorname_clean)) { $error = true; - $errormsg = 'Im Vornamen dürfen keine Sonderzeichen außer - enthalten sein!'; + $errormsg = 'Im Vornamen dürfen keine Trennzeichen außer - enthalten sein!'; } if (!preg_match('/^[a-z0-9-]{4,32}$/i', $nachname_clean)) { $error = true; - $errormsg = 'Im Nachnamen dürfen keine Sonderzeichen außer - enthalten sein!'; + $errormsg = 'Im Nachnamen dürfen keine Trennzeichen außer - enthalten sein!'; } $bn = new benutzer(); From a4cb455e3ec1706b4b2fc7a536f5ba2282a883a7 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 2 Dec 2021 09:35:20 +0100 Subject: [PATCH 090/354] Added creating/editing/viewing Zeitwunschgueltigkeiten in VILESCI Admins can see and work on Zeitwunschgueltigkeiten of lector. Added logic to save/update/display Zeitwuensche by Zeitwunschgueltigkeiten. --- vilesci/personen/zeitwunsch.php | 367 +++++++++++++++++++++++++++----- 1 file changed, 308 insertions(+), 59 deletions(-) diff --git a/vilesci/personen/zeitwunsch.php b/vilesci/personen/zeitwunsch.php index 81d1c0c22..6e0460f5f 100644 --- a/vilesci/personen/zeitwunsch.php +++ b/vilesci/personen/zeitwunsch.php @@ -51,19 +51,6 @@ if (!isset($uid)) die( "uid nicht gesetzt"); } -// Zeitwunschgueltigkeit ID ueber Dropdown ausgewaehlt -if (isset($_GET['zwg_id']) && is_string($_GET['zwg_id'])) -{ - $zwg_id = $_GET['zwg_id']; -} -else -{ - // Default: Letzte Zeitwunschgueltigkeit (ZWG) holen - $zwg = new Zeitwunsch_gueltigkeit(); - $zwg->getByUID($uid, 1); - $zwg_id = !empty($zwg->result) ? $zwg->result[0]->zeitwunsch_gueltigkeit_id : null; // NULL, wenn Lektor noch gar keinen ZW hinterlegt hat -} - $uid_benutzer = get_uid(); $rechte = new benutzerberechtigung(); @@ -74,50 +61,239 @@ if(!$rechte->isBerechtigt('mitarbeiter', null, 's')) $datum_obj = new datum(); $updatevon = 0; - //Stundentabelleholen - if(! $result_stunde=$db->db_query("SELECT * FROM lehre.tbl_stunde ORDER BY stunde")) - die($db->db_last_error()); - $num_rows_stunde=$db->db_num_rows($result_stunde); +// Nächstes Studiensemester +$next_ss = new Studiensemester(); +$next_ss->getNextStudiensemester(); - // Zeitwuensche speichern - if (isset($_POST['save'])) - { - if(!$rechte->isBerechtigt('mitarbeiter/zeitwuensche', null, 'suid')) - die($rechte->errormsg); +// Aktuelles Studiensemester +$akt_ss = new Studiensemester(); +$akt_ss->load($akt_ss->getAkt()); - for ($t=1;$t<7;$t++) - for ($i=0;$i<$num_rows_stunde;$i++) - { - $var='wunsch'.$t.'_'.$i; - //echo $$var; - $gewicht=$_POST[$var]; - $stunde=$i+1; - $query="SELECT * FROM campus.tbl_zeitwunsch WHERE mitarbeiter_uid=".$db->db_add_param($uid)." AND stunde=".$db->db_add_param($stunde, FHC_INTEGER)." AND tag=".$db->db_add_param($t, FHC_INTEGER); - if(! $erg_wunsch=$db->db_query($query)) - die($db->db_last_error()); - $num_rows_wunsch=$db->db_num_rows($erg_wunsch); - if ($num_rows_wunsch==0) - { - $query="INSERT INTO campus.tbl_zeitwunsch (mitarbeiter_uid, stunde, tag, gewicht, updateamum, updatevon) VALUES (".$db->db_add_param($uid).", ".$db->db_add_param($stunde).", ".$db->db_add_param($t).", ".$db->db_add_param($gewicht).", now(), ".$db->db_add_param($uid_benutzer).")"; - if(!($erg=$db->db_query($query))) - die($db->db_last_error()); - } - elseif ($num_rows_wunsch==1) - { - $query="UPDATE campus.tbl_zeitwunsch SET gewicht=".$db->db_add_param($gewicht).", updateamum=now(), updatevon=".$db->db_add_param($uid_benutzer)." WHERE mitarbeiter_uid=".$db->db_add_param($uid)." AND stunde=".$db->db_add_param($stunde)." AND tag=".$db->db_add_param($t); - if(!($erg=$db->db_query($query))) - die($db->db_last_error()); - } - else - die("Zuviele Eintraege!"); - } - } +// Zeitwunschgueltigkeiten nach Semester selektierbar +$selected_ss = (isset($_GET['stsem']) && !empty($_GET['stsem'])) ? $_GET['stsem'] : $next_ss->studiensemester_kurzbz; // Default: Nächstes Studiensemester + +// Default: Letzte Zeitwunschgueltigkeit (ZWG) holen +$zwg = new Zeitwunsch_gueltigkeit(); +$zwg->getByUID($uid, 1); +$selected_zwg = !empty($zwg->result) ? $zwg->result[0] : null; // NULL, wenn Lektor noch gar keinen ZW hinterlegt hat + +// Zeitwunschgueltigkeit ueber Dropdown ZWG gewaehlt +if (isset($_GET['zwg_id'])) +{ + $selected_zwg = !empty($_GET['zwg_id']) ? new Zeitwunsch_gueltigkeit($_GET['zwg_id']) : null; +} + +//Stundentabelleholen +if(! $result_stunde=$db->db_query("SELECT * FROM lehre.tbl_stunde ORDER BY stunde")) + die($db->db_last_error()); +$num_rows_stunde=$db->db_num_rows($result_stunde); + +// Zeitwuensche speichern +if (isset($_POST['save'])) +{ + if(!$rechte->isBerechtigt('mitarbeiter/zeitwuensche', null, 'suid')) + die($rechte->errormsg); + + $selected_ss = isset($_POST['stsem']) ? $_POST['stsem'] : die('Studiensemester fehlt'); + + // Letzte Zeitwunschgueltigkeit (ZWG) holen + $zwg = new Zeitwunsch_gueltigkeit(); + $zwg->getByUID($uid, 1); + $lastZwg = !empty($zwg->result) ? $zwg->result[0] : null; + + // Check, ob letzte ZWG im nächsten Studiensemester startet. D.h. es existiert ein neuer Zeitwunsch in der Zukunft + $lastZwgStartsNextSemester = (!is_null($lastZwg) && $lastZwg->von >= $next_ss->start) ? true : false; + $zw_zwg_id = null; // ZWG ID, die zum Speichern / Updaten des Zeitwunsches uebergeben wird + + // Wenn allererster Zeitwunsch, also noch keine ZWG vorhanden + if (is_null($lastZwg)) + { + // Wenn ZW fuer naechstes Studiensemester ist + if ($selected_ss == $next_ss->studiensemester_kurzbz) + { + // Neue ZWG setzen: von = Start nächstes Studiensemester, bis offen lassen + $zw_zwg_id = insertZWG($uid, $next_ss->start, null, $uid_benutzer); + } + + // Wenn Zeitwunsch fuer aktuelles Studiensemester ist + if ($selected_ss == $akt_ss->studiensemester_kurzbz) + { + // Neue ZWG setzen: von = now(), bis offen lassen + $zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), null, $uid_benutzer); + } + } + + // Wenn mindestens eine ZWG vorhanden + if (!is_null($lastZwg)) + { + // Wenn Zeitwunsch fuer naechstes Studiensemester ist + if ($selected_ss == $next_ss->studiensemester_kurzbz) + { + // Wenn naechstes Studiensemester schon eine eigene ZWG hat + if ($lastZwgStartsNextSemester) + { + // Nur Zeitwunsch dieser ZWG updaten + $zw_zwg_id = $lastZwg->zeitwunsch_gueltigkeit_id; + } + + // Wenn naechstes Studiensemester keine eigene ZWG hat + if (!$lastZwgStartsNextSemester) + { + // Fuer bisher letzte ZWG ein Endedatum setzen: bis = Ende aktuelles Studiensemester + updateZWG($uid, $lastZwg->zeitwunsch_gueltigkeit_id, $akt_ss->ende, $uid_benutzer); + + // Neue ZWG setzen: von = Start nächstes Studiensemester, bis offen lassen + $zw_zwg_id = insertZWG($uid, $next_ss->start, null, $uid_benutzer); + } + } + + // Wenn Zeitwunsch fuer aktuelles Studiensemester ist + if ($selected_ss == $akt_ss->studiensemester_kurzbz) + { + /** + * Check, ob aktuelles Studiensemester eine ZWG hat. + * Wenn die allererste ZWG fuer das naechste Studiensemester erstellt wurde, dann hat das + * aktuelle Studiensemester noch keine ZWG. + * */ + $zwg = new Zeitwunsch_gueltigkeit(); + $zwg->getByStudiensemester($uid, $akt_ss->studiensemester_kurzbz); + $akt_ss_zwg = !empty($zwg->result) ? $zwg->result[0] : null; + + // Keine ZWG fuer aktuelles Studiensemester vorhanden. + // Da eine ZWG ID aber schon vorhanden: USER HAT ERSTMALIG MIT NAECHSTEM STUDIENSEMESTER EINTRAG BEGONNEN + if (is_null($akt_ss_zwg)) + { + // Neue ZWG setzen: von = now(), ende = Ende aktuelles Studiensemester + $zw_zwg_id = insertZWG( + $uid, + (new DateTime())->format('Y-m-d H:i:s'), + $akt_ss->ende, + $uid_benutzer + ); + } + + // ZWG für aktuelles Studiensemester ist vorhanden --> SPLIT AKTUELLE STUDIENSEMESTER + if ((!is_null($akt_ss_zwg))) + { + // Wenn am selben Tag schon neue ZWG gespeichert wurde, keine neue ZWG anlegen, sondern diese nur updaten + // Verhindert mehrfache Eintraege, wenn oefters zwischengespeichert wird. + if ((new DateTime($akt_ss_zwg->insertamum))->format('Y-m-d') == (new Datetime())->format('Y-m-d')) + { + updateZWG($uid, $akt_ss_zwg->zeitwunsch_gueltigkeit_id, $akt_ss_zwg->bis, $uid_benutzer); + + $zw_zwg_id = $akt_ss_zwg->zeitwunsch_gueltigkeit_id; + } + else + { + // Neue ZWG setzen: von = now(), bis = Bis von ZWG des aktuellen Studiensemesters uebernehmen: + // -> bis ist entweder Ende aktuelles Studiensemester (wenn ZWG für nächstes Studiensemester vorhanden ist) + // -> sonst ist bis null + $zw_zwg_id = insertZWG( + $uid, + (new DateTime())->format('Y-m-d H:i:s'), + $akt_ss_zwg->bis, + $uid_benutzer + ); + + // Fuer bisher letzte ZWG das Endedatum auf gestern setzen: bis = gestern + // NOTE: MUSS nach dem insert sein + updateZWG( + $uid, + $akt_ss_zwg->zeitwunsch_gueltigkeit_id, + (new DateTime('yesterday'))->format('Y-m-d H:i:s'), + $uid_benutzer + ); + } + } + } + } + + // Insert Zeitwunsch mit Zeitwunsch ZWG ID + if (is_numeric($zw_zwg_id)) + { + for ($t = 1; $t < 7; $t++) + { + for ($i = 0; $i < $num_rows_stunde; $i++) + { + $var = 'wunsch' . $t . '_' . $i; + //echo $$var; + $gewicht = $_POST[$var]; + $stunde = $i + 1; + $query = "SELECT * FROM campus.tbl_zeitwunsch WHERE mitarbeiter_uid=" . $db->db_add_param($uid) . " AND zeitwunsch_gueltigkeit_id =" . $db->db_add_param($zw_zwg_id) . " AND stunde=" . $db->db_add_param($stunde, FHC_INTEGER) . " AND tag=" . $db->db_add_param($t, FHC_INTEGER); + if (!$erg_wunsch = $db->db_query($query)) + die($db->db_last_error()); + $num_rows_wunsch = $db->db_num_rows($erg_wunsch); + if ($num_rows_wunsch == 0) { + $query = "INSERT INTO campus.tbl_zeitwunsch (mitarbeiter_uid, stunde, tag, gewicht, updateamum, updatevon, zeitwunsch_gueltigkeit_id) VALUES (" . $db->db_add_param($uid) . ", " . $db->db_add_param($stunde) . ", " . $db->db_add_param($t) . ", " . $db->db_add_param($gewicht) . ", now(), " . $db->db_add_param($uid_benutzer) . ", " . $db->db_add_param($zw_zwg_id) . ")"; + if (!($erg = $db->db_query($query))) + die($db->db_last_error()); + } elseif ($num_rows_wunsch == 1) { + $query = "UPDATE campus.tbl_zeitwunsch SET gewicht=" . $db->db_add_param($gewicht) . ", updateamum=now(), updatevon=" . $db->db_add_param($uid_benutzer) . " WHERE mitarbeiter_uid=" . $db->db_add_param($uid) . " AND zeitwunsch_gueltigkeit_id=" . $db->db_add_param($zw_zwg_id) . " AND stunde=" . $db->db_add_param($stunde) . " AND tag=" . $db->db_add_param($t); + if (!($erg = $db->db_query($query))) + die($db->db_last_error()); + } + else + die("Zuviele Eintraege!"); + } + } + $selected_zwg = new Zeitwunsch_gueltigkeit($zw_zwg_id); + } +} + +/** + * Init ZWG Objekt zum Erstellen einer neuen ZWG + */ +function insertZWG($uid, $von, $bis, $admin_uid) +{ + $zwg = new Zeitwunsch_gueltigkeit(); + $zwg->new = true; + $zwg->mitarbeiter_uid = $uid; + $zwg->von = $von; + $zwg->bis = $bis; + $zwg->insertvon = $admin_uid; + if ($zwg->save()) + { + return $zwg->zeitwunsch_gueltigkeit_id; + } + else + { + die($zwg->errormsg); + } +} + +/** + * Init ZWG Objekt zum Updaten einer bestehenden ZWG + */ +function updateZWG($uid, $zwg_id, $bis, $admin_uid) +{ + $zwg = new Zeitwunsch_gueltigkeit(); + $zwg->new = false; + $zwg->zeitwunsch_gueltigkeit_id = $zwg_id; + $zwg->mitarbeiter_uid = $uid; + $zwg->bis = $bis; + $zwg->updatevon = $admin_uid; + + if (!$zwg->save()) + { + die($zwg->errormsg); + } + + return; +} + +// Tabellendaten +/** + * Zeitwunschgueltigkeit + * Wurde ueber Dropdown gewaehlt (kann auch null sein, wenn noch kein Zeitwunsch vorliegt) + * ODER ueber Speichernbutton neu erstellt / upgedatet + */ +$selected_zwg_id = !is_null($selected_zwg) ? $selected_zwg->zeitwunsch_gueltigkeit_id : ''; if(!($erg=$db->db_query(" SELECT * FROM campus.tbl_zeitwunsch WHERE mitarbeiter_uid = ". $db->db_add_param($uid). " - AND zeitwunsch_gueltigkeit_id = ". $db->db_add_param(($zwg_id)) + AND zeitwunsch_gueltigkeit_id = ". $db->db_add_param(($selected_zwg_id)) ))) die($db->db_last_error()); $num_rows=$db->db_num_rows($erg); @@ -159,41 +335,74 @@ $updatevon = 0; + -

    Zeitwünsche von titelpre.' '.$person->vornamen.' '.$person->nachname. ' '.$person->titelpost; ?>

    +

    Zeitwünsche von titelpre.' '.$person->vorname.' '.$person->nachname. ' '.$person->titelpost; ?>

    Zeitwunschgueltigkeit: getByUID($uid, null, false); $zwg_arr = $zwg->result; -echo ''; + +// Wenn nächstes Studiensemester hat keine Zeitwunschgueltigkeit hat... +if (!empty($zwg_arr) && $zwg_arr[0]->von < $next_ss->start) +{ + // ...naechstes Studiensemester 'neu anlegen' als Option anzeigen + echo ''; +} + +// Vorhandene Zeitwunschgueltigkeiten foreach($zwg_arr as $row) { $von = (new DateTime($row->von))->format('d.m.Y'); $bis = !is_null($row->bis) ? (new DateTime($row->bis))->format('d.m.Y') : "offen"; + $selected = !empty($selected_zwg_id) && $row->zeitwunsch_gueltigkeit_id == $selected_zwg_id && $row->studiensemester_kurzbz == $selected_ss ? ' selected ' : ''; - $selected = !is_null($zwg_id) && $row->zeitwunsch_gueltigkeit_id == $zwg_id ? ' selected ' : ''; - echo ''; } +// Wenn aktuelles Studiensemester hat keine Zeitwunschgueltigkeit hat, das naechste aber schon +if (count($zwg_arr) == 1 && ($zwg_arr[0]->von >= $next_ss->start)) +{ + // ...aktuelles Studiensemester 'neu anlegen' als Option anzeigen + $selected = $selected_ss == $akt_ss->studiensemester_kurzbz ? "selected" : ''; + echo ''; +} + +// Wenn es noch keine Zeitwuensche gibt +if (empty($zwg_arr)) +{ + // Optionen zum Anlegen einer Zeitwunschgueltigkeit fuer das aktuelle / naechste Studiensemester + $selected = $selected_ss == $akt_ss->studiensemester_kurzbz ? 'selected' : ''; + echo ''; + echo ''; +} echo ''; ?>

    + + +
    '; ?>

    - isBerechtigt('mitarbeiter/zeitwuensche', null, 'suid')) - echo '' + { + /** + * Disablen des Speicherbuttons und Textanzeige, wenn die gewaehlte Zeitwunschgueltigkeit nicht + *die letztgueltige fuer das aktuelle / naechste Studiensemester ist. + **/ + $disabled = getDisabledString($uid, $selected_zwg, $akt_ss, $next_ss); // return 'disabled' oder '' + + // Speichern Button + echo ''; + + if (!empty($disabled)) + { + echo ' Es können nur Zeitwünsche im aktuellen oder im nächsten Studiensemester bearbeitet werden.
    +       Falls mehrere Zeitwünsche im aktuellen Semester gespeichert sind, kann nur der letztgültige geändert werden.
    '; + } + } ?>
    @@ -302,3 +525,29 @@ echo '';

     

    + +getByStudiensemester($uid, $akt_ss->studiensemester_kurzbz); + $lastZwg_id_aktStudsem = empty($zwg->result) ? '' : $zwg->result[0]->zeitwunsch_gueltigkeit_id; + + $zwg = new Zeitwunsch_gueltigkeit(); + $zwg->getByStudiensemester($uid, $next_ss->studiensemester_kurzbz); + $lastZwg_id_nextStudsem = empty($zwg->result) ? '' : $zwg->result[0]->zeitwunsch_gueltigkeit_id; + + return ( + is_null($selected_zwg) + || !is_null($selected_zwg) + && ( + $selected_zwg->zeitwunsch_gueltigkeit_id == $lastZwg_id_aktStudsem + || $selected_zwg->zeitwunsch_gueltigkeit_id == $lastZwg_id_nextStudsem + ) + ) + ? '' + : 'disabled'; + +} From e3ecfbe7822cdfbf720134632475d8e6be9997db Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 2 Dec 2021 09:38:24 +0100 Subject: [PATCH 091/354] Corrected constructor of Zeitwunsch_gueltigkeit Class --- include/zeitwunsch_gueltigkeit.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/zeitwunsch_gueltigkeit.class.php b/include/zeitwunsch_gueltigkeit.class.php index 4477551b1..7f72c72c0 100644 --- a/include/zeitwunsch_gueltigkeit.class.php +++ b/include/zeitwunsch_gueltigkeit.class.php @@ -18,9 +18,9 @@ class zeitwunsch_gueltigkeit extends basis_db public $updatevon; // varchar 32 - public function __construct() + public function __construct($zeitwunsch_gueltigkeit_id = null) { - parent::__construct($zeitwunsch_gueltigkeit_id = null); + parent::__construct(); if (!is_null($zeitwunsch_gueltigkeit_id)) { From d697e189eb2209b6c7d4953fbeca00fa9f2549e5 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 2 Dec 2021 09:43:06 +0100 Subject: [PATCH 092/354] Changed: Now function getByUID of ZWG class retrieves correct amount of ZWG --- include/zeitwunsch_gueltigkeit.class.php | 34 +++++++++++++++--------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/include/zeitwunsch_gueltigkeit.class.php b/include/zeitwunsch_gueltigkeit.class.php index 7f72c72c0..33dfdf65f 100644 --- a/include/zeitwunsch_gueltigkeit.class.php +++ b/include/zeitwunsch_gueltigkeit.class.php @@ -17,6 +17,9 @@ class zeitwunsch_gueltigkeit extends basis_db public $updateamum; // timestamp public $updatevon; // varchar 32 + public $studiensemester_kurzbz; + public $start; + public $ende; public function __construct($zeitwunsch_gueltigkeit_id = null) { @@ -45,6 +48,7 @@ class zeitwunsch_gueltigkeit extends basis_db SELECT * FROM campus.tbl_zeitwunsch_gueltigkeit WHERE zeitwunsch_gueltigkeit_id = '.$this->db_add_param($zeitwunsch_gueltigkeit_id). ' + AND (von < ende AND COALESCE(bis, '. $this->db_add_param($studiensemester->ende).'::date ) > start) ORDER BY von DESC '; @@ -130,13 +134,14 @@ class zeitwunsch_gueltigkeit extends basis_db */ public function getByUID($uid, $limit = null, $activeOnly = true, $bis = null) { - $studiensemester = new Studiensemester(); - $studiensemester->getNextStudiensemester(); - $qry = ' - SELECT zwg.*, studiensemester_kurzbz, start, ende - FROM campus.tbl_zeitwunsch_gueltigkeit zwg, public.tbl_studiensemester - WHERE zwg.mitarbeiter_uid = '.$this->db_add_param($uid); + SELECT zeitwunsch_gueltigkeit_id, mitarbeiter_uid, von, bis, + insertamum, insertvon, updateamum, updatevon, + studiensemester_kurzbz, start, ende + FROM ( + SELECT DISTINCT ON (bis) bis, zeitwunsch_gueltigkeit_id, mitarbeiter_uid, von, insertamum, insertvon, updateamum, updatevon, studiensemester_kurzbz, start, ende + FROM campus.tbl_zeitwunsch_gueltigkeit zwg, public.tbl_studiensemester + WHERE zwg.mitarbeiter_uid = '.$this->db_add_param($uid); // Wenn Bis-Datum angegeben if (!is_null($bis)) @@ -150,13 +155,18 @@ class zeitwunsch_gueltigkeit extends basis_db { // Alle Zeitwuensche $qry.= ' - AND (von < ende AND COALESCE(bis, '. $this->db_add_param($studiensemester->ende).'::date ) > start) + AND (von < ende AND COALESCE(bis, \'2999-12-31\'::date ) > start) '; } + $qry.= ' + ORDER BY bis, von DESC, bis DESC, start ASC + ) temp + '; + // Nach Gueltigkeits-Startdatum sortieren, zuerst die zuletzt gueltigen $qry.= ' - ORDER BY start DESC + ORDER BY von DESC, bis DESC '; // Wenn nur aktive Zeitwunschgueltigkeiten angezeigt werden sollen @@ -164,11 +174,11 @@ class zeitwunsch_gueltigkeit extends basis_db { // ...mit distinct die zuletzt erstellten pro Studiensemester filtern $qry = ' - SELECT DISTINCT ON (start, studiensemester_kurzbz) start, studiensemester_kurzbz, - ende, zeitwunsch_gueltigkeit_id, mitarbeiter_uid, von, bis, + SELECT DISTINCT ON (studiensemester_kurzbz) studiensemester_kurzbz, + start, ende, zeitwunsch_gueltigkeit_id, mitarbeiter_uid, von, bis, insertamum, insertvon, updateamum, updatevon FROM ('. $qry. ') temp - ORDER BY start DESC, studiensemester_kurzbz + ORDER BY studiensemester_kurzbz, von DESC, bis DESC '; } @@ -229,7 +239,7 @@ class zeitwunsch_gueltigkeit extends basis_db FROM campus.tbl_zeitwunsch_gueltigkeit zwg, studiensemester ss WHERE zwg.mitarbeiter_uid = '.$this->db_add_param($uid). ' AND (zwg.von < ss.ende AND COALESCE(zwg.bis, ss.ende) >= ss.start) - ORDER BY von DESC + ORDER BY von DESC, bis DESC '; // Wenn Limit angegeben From 17dd939044d67dcae75b4d047f8cfb716cf580a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 2 Dec 2021 15:24:27 +0100 Subject: [PATCH 093/354] Moved to Addon --- system/account_deaktivierung_mail.php | 288 -------------------------- 1 file changed, 288 deletions(-) delete mode 100644 system/account_deaktivierung_mail.php diff --git a/system/account_deaktivierung_mail.php b/system/account_deaktivierung_mail.php deleted file mode 100644 index ede3f1f2f..000000000 --- a/system/account_deaktivierung_mail.php +++ /dev/null @@ -1,288 +0,0 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -/** - * Dieses Script versendet automatisch Mails an Accounts die Deaktiviert wurden. - * und informiert die Benutzer ueber die Folgen der Deaktivierung - */ - -require_once(dirname(__FILE__).'/../config/vilesci.config.inc.php'); -require_once(dirname(__FILE__).'/../include/basis_db.class.php'); -require_once(dirname(__FILE__).'/../include/mail.class.php'); - -$db = new basis_db(); -$text = ''; -$wochen_zum_entfernen = 1; - -// Alle die vor einer Woche inaktiv gesetzt wurden darueber informieren -$qry = "SELECT uid, - (SELECT mitarbeiter_uid FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid = uid) as mitarbeiter - FROM public.tbl_benutzer - WHERE aktiv = false - AND updateaktivam = CURRENT_DATE - interval '".$wochen_zum_entfernen." week'"; - -if ($result = $db->db_query($qry)) -{ - while ($row = $db->db_fetch_object($result)) - { - if ($row->mitarbeiter != '') - { - // Mitarbeiter - $message = "Dies ist eine automatische Nachricht!\n"; - $message .= "\n"; - $message .= "Wir möchten Sie darauf aufmerksam machen, dass Ihr Benutzerdatensatz deaktiviert wurde. - Durch diese Deaktivierung wurden Sie auch aus allen Email-Verteilern gelöscht. \n\n"; - $message .= "Sollte innerhalb von 12 Monaten nach der Deaktivierung keine neuerliche Aktivierung Ihres - Benutzerdatensatzes erfolgen, dann werden automatisch auch\n"; - $message .= " - Ihr Account, \n"; - $message .= " - Ihre Mailbox (inkl. aller E-Mails) und\n"; - $message .= " - Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht werden.\n"; - $message .= "\n"; - $message .= "Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten, - sich umgehend mit den KollegInnen in der Personalabteilung in Verbindung zu setzen: "; - $message .= "Frau Natalie König, natalie.koenig@technikum-wien.at\n"; - $message .= "\n"; - $message .= "Mit freundlichen Grüßen\n"; - $message .= "\n"; - $message .= "Fachhochschule Technikum Wien\n"; - $message .= "Höchstädtplatz 6\n"; - $message .= "1200 Wien \n"; - $message .= "\n"; - $message .= "Falls Sie weiterhin über Neuigkeiten an der FH Technikum Wien informiert werden wollen, - können Sie unter www.technikum-wien.at/newsletter den kostenlosen Newsletter abonnieren."; - } - else - { - // Student - $message = "Dies ist eine automatische Nachricht!\n"; - $message .= "\n"; - $message .= "Wir möchten Sie darauf aufmerksam machen, dass Ihr Benutzerdatensatz deaktiviert wurde. - Durch diese Deaktivierung wurden Sie auch aus allen Email-Verteilern gelöscht.\n"; - $message .= "\n"; - $message .= "Sollte innerhalb von 6 Monaten (für Studierende) bzw. 3 Wochen (für AbbrecherInnen) nach der - Deaktivierung keine neuerliche Aktivierung Ihres Benutzerdatensatzes erfolgen, dann werden automatisch auch\n"; - $message .= " - Ihr Account,\n"; - $message .= " - Ihre Mailbox (inkl. aller E-Mails) und\n"; - $message .= " - Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht werden.\n"; - $message .= "\n"; - $message .= "Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten, - sich umgehend mit Ihrer Studiengangsassistenz in Verbindung zu setzen.\n"; - $message .= "\n"; - $message .= "Mit freundlichen Grüßen\n"; - $message .= "\n"; - $message .= "Fachhochschule Technikum Wien\n"; - $message .= "Höchstädtplatz 6\n"; - $message .= "1200 Wien\n"; - $message .= "\n"; - $message .= "Falls Sie weiterhin über Neuigkeiten an der FH Technikum Wien informiert werden wollen, - können Sie unter www.technikum-wien.at/newsletter den kostenlosen Newsletter abonnieren.\n"; - } - - $to = $row->uid.'@'.DOMAIN; - - $mail = new mail($to, 'no-reply@'.DOMAIN, 'Ihr Datensatz wurde deaktiviert! '.$row->uid, $message); - if ($mail->send()) - $text .= "Warnung zur Accountloeschung wurde an $row->uid verschickt\n"; - else - $text .= "Fehler beim Senden des Mails an $to: ".$message; - } -} - -// Letzte Warnung vor Accountloeschung verschicken - -// Abbrecher -$qry = "SELECT uid - FROM public.tbl_benutzer - JOIN public.tbl_student ON(uid=student_uid) - WHERE aktiv = false - AND updateaktivam = CURRENT_DATE - interval '".DEL_ABBRECHER_WEEKS." week' - AND get_rolle_prestudent (prestudent_id, NULL) = 'Abbrecher'"; - -if ($result = $db->db_query($qry)) -{ - while ($row = $db->db_fetch_object($result)) - { - $message = "Dies ist eine automatische Nachricht!\n"; - $message .= "\n"; - $message .= "ACHTUNG: Ihr Benutzerdatensatz wurde vor ".(DEL_ABBRECHER_WEEKS > 1?DEL_ABBRECHER_WEEKS." Wochen ":"einer Woche ")."deaktiviert! - Sollte innerhalb der nächsten Tage keine neuerliche Aktivierung Ihres Benutzerdatensatzes erfolgen, dann werden automatisch auch\n"; - $message .= " - Ihr Account,\n"; - $message .= " - Ihre Mailbox (inkl. aller E-Mails) und\n"; - $message .= " - Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht werden.\n"; - $message .= "\n"; - $message .= "Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten, sich umgehend mit Ihrer - Studiengangsassistenz in Verbindung zu setzen.\n"; - $message .= "\n"; - $message .= "Mit freundlichen Grüßen\n"; - $message .= "\n"; - $message .= "Fachhochschule Technikum Wien\n"; - $message .= "Höchstädtplatz 6\n"; - $message .= "1200 Wien \n"; - $message .= "\n"; - $message .= "Falls Sie weiterhin über Neuigkeiten an der FH Technikum Wien informiert werden wollen, - können Sie unter www.technikum-wien.at/newsletter den kostenlosen Newsletter abonnieren.\n"; - - $to = $row->uid.'@'.DOMAIN; - - $mail = new mail($to, 'no-reply@'.DOMAIN, 'Ihr Datensatz wurde deaktiviert! Letzte Warnung '.$row->uid, $message); - if ($mail->send()) - $text .= "Letzte Warnung zur Accountloeschung wurde an $row->uid verschickt\n"; - else - $text .= "Fehler beim Senden des Mails an $to: ".$message; - } -} - -// Abbrecher an Bibliothek melden wenn diese inaktiv gesetzt wurden - -$qry = "SELECT uid, - vorname, - nachname, - titelpre, - titelpost - FROM public.tbl_benutzer - JOIN public.tbl_student ON (uid = student_uid) - JOIN public.tbl_person USING (person_id) - WHERE tbl_benutzer.aktiv = false - AND tbl_benutzer.updateaktivam = (CURRENT_DATE - '1 day'::interval)::date - AND get_rolle_prestudent (prestudent_id, NULL) = 'Abbrecher'"; - -if ($result = $db->db_query($qry)) -{ - if ($db->db_num_rows($result) > 0) - { - $message = "Dies ist eine automatische Nachricht!\n\n"; - $message .= "Die folgenden Studierenden wurden als Abbrecher eingetragen:\n\n"; - - while ($row = $db->db_fetch_object($result)) - { - $message .= trim($row->titelpre.' '.$row->vorname.' '.$row->nachname.' '.$row->titelpost).' ( '.$row->uid.'@'.DOMAIN." )\n"; - } - - $message .= "\nMit freundlichen Grüßen\n"; - $message .= "\n"; - $message .= "Fachhochschule Technikum Wien\n"; - $message .= "Höchstädtplatz 6\n"; - $message .= "1200 Wien \n"; - $to = 'wienerro@technikum-wien.at, astfaell@technikum-wien.at, olensky@technikum-wien.at'; - - $mail = new mail($to, 'no-reply@'.DOMAIN, 'Abbrecher Information', $message); - if ($mail->send()) - $text .= "Abbrecher Infomail an $to verschickt\n"; - else - $text .= "Fehler beim Senden des Mails an $to: ".$message; - } -} - -// Studenten - -$qry = "SELECT uid - FROM public.tbl_benutzer - JOIN public.tbl_student ON (uid=student_uid) - WHERE aktiv = false - AND updateaktivam = CURRENT_DATE - interval '".DEL_STUDENT_WEEKS." week' - AND get_rolle_prestudent (prestudent_id, NULL) <> 'Abbrecher'"; - -if ($result = $db->db_query($qry)) -{ - while ($row = $db->db_fetch_object($result)) - { - $message = "Dies ist eine automatische Nachricht!\n"; - $message .= "\n"; - $message .= "ACHTUNG: Ihr Benutzerdatensatz wurde vor ".(DEL_STUDENT_WEEKS > 1?DEL_STUDENT_WEEKS." Wochen ":"einer Woche "). - "deaktiviert! Sollte innerhalb der nächsten Tage keine neuerliche Aktivierung Ihres Benutzerdatensatzes erfolgen, - dann werden automatisch auch\n"; - $message .= " - Ihr Account,\n"; - $message .= " - Ihre Mailbox (inkl. aller E-Mails) und\n"; - $message .= " - Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht werden\n"; - $message .= "\n"; - $message .= "Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten, - sich umgehend mit Ihrer Studiengangsassistenz in Verbindung zu setzen.\n"; - $message .= "\n"; - $message .= "Mit freundlichen Grüßen\n"; - $message .= "\n"; - $message .= "Fachhochschule Technikum Wien\n"; - $message .= "Höchstädtplatz 6\n"; - $message .= "1200 Wien \n"; - $message .= "\n"; - $message .= "Falls Sie weiterhin über Neuigkeiten an der FH Technikum Wien informiert werden wollen, - können Sie unter www.technikum-wien.at/newsletter den kostenlosen Newsletter abonnieren.\n"; - - $to = $row->uid.'@'.DOMAIN; - - $mail = new mail($to, 'no-reply@'.DOMAIN, 'Ihr Datensatz wurde deaktiviert! Letzte Warnung '.$row->uid, $message); - if ($mail->send()) - $text .= "Letzte Warnung zur Accountloeschung wurde an $row->uid verschickt\n"; - else - $text .= "Fehler beim Versenden des Abbrecher Infomails an $to !\n"; - } -} - -// Mitarbeiter - -$qry = "SELECT uid - FROM public.tbl_benutzer - JOIN public.tbl_mitarbeiter ON (uid = mitarbeiter_uid) - WHERE aktiv = false - AND updateaktivam = CURRENT_DATE - interval '".DEL_MITARBEITER_WEEKS." week' "; - -if ($result = $db->db_query($qry)) -{ - while ($row = $db->db_fetch_object($result)) - { - $message = "Dies ist eine automatische Nachricht!\n"; - $message .= "\n"; - $message .= "ACHTUNG: Ihr Benutzerdatensatz wurde vor ".(DEL_MITARBEITER_WEEKS > 1?DEL_MITARBEITER_WEEKS." Wochen ":"einer Woche "). - "deaktiviert! Sollte innerhalb der nächsten Tage keine neuerliche Aktivierung Ihres Benutzerdatensatzes erfolgen, - dann werden automatisch auch\n"; - $message .= " - Ihr Account,\n"; - $message .= " - Ihre Mailbox (inkl. aller E-Mails) und\n"; - $message .= " - Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht werden\n"; - $message .= "\n"; - $message .= "Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten, - sich umgehend mit den KollegInnen in der Personalabteilung in Verbindung zu setzen: "; - $message .= "Frau Natalie König, natalie.koenig@technikum-wien.at\n"; - $message .= "\n"; - $message .= "Mit freundlichen Grüßen\n"; - $message .= "\n"; - $message .= "Fachhochschule Technikum Wien\n"; - $message .= "Höchstädtplatz 6\n"; - $message .= "1200 Wien \n"; - $message .= "\n"; - $message .= "Falls Sie weiterhin über Neuigkeiten an der FH Technikum Wien informiert werden wollen, - können Sie unter www.technikum-wien.at/newsletter den kostenlosen Newsletter abonnieren.\n"; - - $to = $row->uid.'@'.DOMAIN; - - $mail = new mail($to, 'no-reply@'.DOMAIN, 'Ihr Datensatz wurde deaktiviert! Letzte Warnung '.$row->uid, $message); - if ($mail->send()) - $text .= "Letzte Warnung zur Accountloeschung wurde an $row->uid verschickt\n"; - else - $text .= "Fehler beim Versenden des Abbrecher Infomails an $to !\n"; - } -} - -echo $text; - -?> - From 419988aaf9c6f96bef1a4aaecd52bf37317fabfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 2 Dec 2021 16:17:24 +0100 Subject: [PATCH 094/354] =?UTF-8?q?DB-Index=20f=C3=BCr=20campus.tbl=5Fzeit?= =?UTF-8?q?aufzeichnung.uid=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- system/dbupdate_3.3.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 1d4e990b0..d8f2e16ab 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -5613,6 +5613,20 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht } } +// Add index to campus.tbl_zeitaufzeichnung.uid +if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_tbl_zeitaufzeichnung_uid'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = "CREATE INDEX idx_tbl_zeitaufzeichnung_uid ON campus.tbl_zeitaufzeichnung USING btree (uid)"; + + if (! $db->db_query($qry)) + echo 'Indizes: ' . $db->db_last_error() . '
    '; + else + echo 'Index fuer campus.tbl_zeitaufzeichnung.uid hinzugefuegt
    '; + } +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

    Pruefe Tabellen und Attribute!

    '; From 61c1399f0106bbaf5ae38e4e350e4d246638d2eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 2 Dec 2021 16:50:08 +0100 Subject: [PATCH 095/354] Improved Performance of dbupdate --- system/dbupdate_3.3.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index d8f2e16ab..a8820c57d 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -51,7 +51,7 @@ if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants } } -if(!$result = @$db->db_query("SELECT 1 FROM public.vw_msg_vars LIMIT 1")) +if(!$result = @$db->db_query("SELECT 1 FROM public.vw_msg_vars WHERE person_id=-1 LIMIT 1")) { // CREATE OR REPLACE VIEW public.vw_msg_vars and grants privileges $qry = ' @@ -2760,7 +2760,7 @@ if($result = @$db->db_query("SELECT is_nullable FROM INFORMATION_SCHEMA.COLUMNS } // Spalte Zugangscode zu vw_msg_vars hinzufügen -if(!$result = @$db->db_query('SELECT "Zugangscode" FROM public.vw_msg_vars LIMIT 1')) +if(!$result = @$db->db_query('SELECT "Zugangscode" FROM public.vw_msg_vars WHERE person_id=-1 LIMIT 1')) { $qry = ' CREATE OR REPLACE VIEW public.vw_msg_vars AS ( @@ -3827,7 +3827,7 @@ if(!$result = @$db->db_query("SELECT orgform_kurzbz FROM public.tbl_bankverbindu } // iban, bic und weitere Variablen zu vw_msg_vars hinzufügen -if(!$result = @$db->db_query('SELECT "IBAN Studiengang", "BIC Studiengang", "Studiengangskennzahl", "Einstiegssemester", "Einstiegsstudiensemester", "Vorname Studiengangsassistenz", "Nachname Studiengangsassistenz", "Durchwahl Studiengangsassistenz", "Alias Studiengangsassistenz", "Relative Prio" FROM public.vw_msg_vars LIMIT 1')) +if(!$result = @$db->db_query('SELECT "IBAN Studiengang", "BIC Studiengang", "Studiengangskennzahl", "Einstiegssemester", "Einstiegsstudiensemester", "Vorname Studiengangsassistenz", "Nachname Studiengangsassistenz", "Durchwahl Studiengangsassistenz", "Alias Studiengangsassistenz", "Relative Prio" FROM public.vw_msg_vars WHERE person_id=-1 LIMIT 1')) { $qry = ' CREATE OR REPLACE VIEW public.vw_msg_vars AS ( @@ -4356,7 +4356,7 @@ if (!$result = @$db->db_query("SELECT ba1code_bis FROM bis.tbl_beschaeftigungsar } // Orgform DE und Orform EN zu vw_msg_vars hinzufügen -if(!$result = @$db->db_query('SELECT "Orgform DE", "Orgform EN" FROM public.vw_msg_vars LIMIT 1')) +if(!$result = @$db->db_query('SELECT "Orgform DE", "Orgform EN" FROM public.vw_msg_vars WHERE person_id=-1 LIMIT 1')) { $qry = ' CREATE OR REPLACE VIEW public.vw_msg_vars AS ( From 554a27cc01502a68bb2291cd9ffd1ac188258e3f Mon Sep 17 00:00:00 2001 From: ma0048 Date: Thu, 2 Dec 2021 21:06:56 +0100 Subject: [PATCH 096/354] anzeigefehler fixed dokpruefung --- application/views/system/infocenter/dokpruefung.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/views/system/infocenter/dokpruefung.php b/application/views/system/infocenter/dokpruefung.php index 95e383569..f7446895c 100644 --- a/application/views/system/infocenter/dokpruefung.php +++ b/application/views/system/infocenter/dokpruefung.php @@ -22,7 +22,7 @@ titel) ? $dokument->bezeichnung : $dokument->titel ?>
    - autocomplete="off"> bezeichnung === $dokument->dokument_bezeichnung ? 'selected' : '') . " value = " . $dokumenttyp->dokument_kurzbz . ">" . $dokumenttyp->bezeichnung . "" From 4923c5fc2d12b0e17b7e70466893e6ad7bc3b717 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Fri, 3 Dec 2021 14:31:04 +0100 Subject: [PATCH 097/354] personen zusammenlegen mit udf --- include/person.class.php | 15 +++- include/prestudent.class.php | 9 ++ vilesci/stammdaten/personen_wartung.php | 108 +++++++++++++++++++++++- 3 files changed, 129 insertions(+), 3 deletions(-) diff --git a/include/person.class.php b/include/person.class.php index a50417db0..e10862ea1 100644 --- a/include/person.class.php +++ b/include/person.class.php @@ -24,6 +24,7 @@ */ require_once(dirname(__FILE__).'/basis_db.class.php'); require_once(dirname(__FILE__).'/datum.class.php'); +require_once(dirname(__FILE__).'/udf.class.php'); class person extends basis_db { @@ -64,6 +65,7 @@ class person extends basis_db public $foto_sperre = false; // boolean public $matr_nr; //varchar(32) public $bpk; //varchar(255) + public $udf_values; //json /** * Konstruktor - Uebergibt die Connection und laedt optional eine Person @@ -84,6 +86,8 @@ class person extends basis_db **/ public function load($personId) { + $udf = new UDF(); + //person_id auf gueltigkeit pruefen if (is_numeric($personId) && $personId != '') { @@ -91,8 +95,11 @@ class person extends basis_db gebdatum, gebort, gebzeit, foto, anmerkung, homepage, svnr, ersatzkennzeichen, familienstand, anzahlkinder, aktiv, insertamum, insertvon, updateamum, updatevon, ext_id, geschlecht, staatsbuergerschaft, geburtsnation, kurzbeschreibung, zugangscode, foto_sperre, - matr_nr, bpk - FROM public.tbl_person + matr_nr, bpk"; + if ($hasUDF = $udf->personHasUDF()) + $qry .= ", udf_values "; + + $qry .= "FROM public.tbl_person WHERE person_id = " . $this->db_add_param($personId, FHC_INTEGER); if (!$this->db_query($qry)) @@ -135,6 +142,10 @@ class person extends basis_db $this->foto_sperre = $this->db_parse_bool($row->foto_sperre); $this->matr_nr = $row->matr_nr; $this->bpk = $row->bpk; + if ($hasUDF) + { + $this->udf_values = $row->udf_values; + } } else { diff --git a/include/prestudent.class.php b/include/prestudent.class.php index ab1e329dd..1d493beb0 100644 --- a/include/prestudent.class.php +++ b/include/prestudent.class.php @@ -26,6 +26,7 @@ require_once(dirname(__FILE__).'/log.class.php'); require_once(dirname(__FILE__).'/phrasen.class.php'); require_once(dirname(__FILE__).'/globals.inc.php'); require_once(dirname(__FILE__).'/sprache.class.php'); +require_once(dirname(__FILE__).'/udf.class.php'); $sprache = getSprache(); $lang = new sprache(); @@ -73,6 +74,7 @@ class prestudent extends person public $priorisierung = null; public $foerderrelevant = null; public $standort_code = null; + public $udf_values = null; public $status_kurzbz; public $studiensemester_kurzbz; @@ -1413,6 +1415,9 @@ class prestudent extends person person_id=".$this->db_add_param($person_id, FHC_INTEGER)." ORDER BY prestudent_id"; + $udf = new UDF(); + $hasUDF = $udf->prestudentHasUDF(); + if($this->db_query($qry)) { while($row = $this->db_fetch_object()) @@ -1455,6 +1460,10 @@ class prestudent extends person $obj->gsstudientyp_kurzbz = $row->gsstudientyp_kurzbz; $obj->aufnahmegruppe_kurzbz = $row->aufnahmegruppe_kurzbz; $obj->priorisierung = $row->priorisierung; + if ($hasUDF) + { + $obj->udf_values = $row->udf_values; + } $this->result[] = $obj; } diff --git a/vilesci/stammdaten/personen_wartung.php b/vilesci/stammdaten/personen_wartung.php index 2c4c4f0fa..2def0bd3c 100644 --- a/vilesci/stammdaten/personen_wartung.php +++ b/vilesci/stammdaten/personen_wartung.php @@ -42,6 +42,7 @@ require_once ('../../include/kontakt.class.php'); require_once ('../../include/dokument.class.php'); require_once ('../../include/reihungstest.class.php'); require_once ('../../include/pruefling.class.php'); +require_once ('../../include/udf.class.php'); if (! $db = new basis_db()) @@ -54,6 +55,7 @@ $rechte->getBerechtigungen($uid); if (! $rechte->isBerechtigt('basis/person', null, 'suid')) die($rechte->errormsg); +$udf = new UDF(); $msg_info = array(); $msg_error = array(); $msg_warning = array(); @@ -283,6 +285,40 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p if ($doppelteReihungstestzuordnung === false) $sql_query_upd1 .= "UPDATE public.tbl_rt_person SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; + + $personUDF = $udf->personHasUDF(); + + if ($personUDF) + { + $udfToKeep = json_decode($personToKeep_obj->udf_values, true); + $udfToDelete = json_decode($personToDelete_obj->udf_values, true); + + $udfToKeep = is_null($udfToKeep) ? array() : $udfToKeep; + $udfToDelete = is_null($udfToDelete) ? array() : $udfToDelete; + + if ($udfToKeep != $udfToDelete) + { + foreach ($udfToDelete as $key => $udf) + { + if (!array_key_exists($key, $udfToKeep)) + { + $udfToKeep[$key] = $udf; + } + elseif ($udfToKeep[$key] !== $udf && !is_null($udf)) + { + if (is_null($udfToKeep[$key])) + $udfToKeep[$key] = $udf; + else + { + $msg_error[] = 'Beide Personen haben unterschiedliche Werte in den UDFs und können nicht zusammengelegt werden.
    + Sie müssen die Datensätze manuell bereinigen, bevor Sie die Personen zusammenlegen können.'; + $error = true; + break; + } + } + } + } + } if ($error == false) { // Wenn bei einer der Personen das Foto gesperrt ist, dann die Sperre uebernehmen @@ -437,6 +473,7 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p $sql_query_upd1 .= "UPDATE system.tbl_filters SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= "UPDATE system.tbl_log SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= "UPDATE system.tbl_person_lock SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; + $sql_query_upd1 .= "UPDATE system.tbl_issue SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= "UPDATE wawi.tbl_betriebsmittelperson SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= "UPDATE wawi.tbl_konto SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= $alma_query_upd; @@ -456,6 +493,9 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p // BPK erst setzen, wenn nur mehr eine Person vorhanden ist $sql_query_upd1 .= "UPDATE public.tbl_person SET bpk=" . $db->db_add_param($bpk, FHC_STRING) . " WHERE person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . ";"; + if ($personUDF) + $sql_query_upd1 .= "UPDATE public.tbl_person SET udf_values=" . $db->db_add_param(json_encode($udfToKeep)) . " WHERE person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . ";"; + if ($db->db_query($sql_query_upd1)) { $msg_info[] = "Update Query:"; @@ -730,9 +770,10 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p usort($prestudenten->result, "sortPrestudents"); + $prestudentUDF = $udf->prestudentHasUDF(); $prestudentenArray = array(); $kontaktLoeschArray = array(); - foreach ($prestudenten->result AS $row) + foreach ($prestudenten->result AS $key => $row) { $prestudentenArray[] = array( 'prestudent_id' => $row->prestudent_id, @@ -753,6 +794,8 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p 'zgvmanation' => $row->zgvmanation, 'studiengang_typ' => $row->studiengang_typ ); + if ($prestudentUDF) + $prestudentenArray[$key] = array_merge($prestudentenArray[$key], array('udf_values' => $row->udf_values)); } /* @@ -793,6 +836,48 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p $i++; continue; } + + //Wenn die UDF values nicht zusammengeführt werden können, wird mit dem nächsten weitergemacht und eine Warnung ausgegeben + if ($prestudentUDF) + { + $udfError = false; + + $udfToKeep = json_decode($prestudentenArray[$previousKey]['udf_values'], true);; + $udfToKeep = is_null($udfToKeep) ? array() : $udfToKeep; + + $udfToDelete = json_decode($value['udf_values'], true); + $udfToDelete = is_null($udfToDelete) ? array() : $udfToDelete; + + if ($udfToKeep != $udfToDelete) + { + foreach ($udfToDelete as $udfKey => $udf) + { + if (!array_key_exists($udfKey, $udfToKeep)) + { + $udfToKeep[$udfKey] = $udf; + } + elseif ($udfToKeep[$udfKey] !== $udf && !is_null($udf)) + { + if (is_null($udfToKeep[$udfKey])) + $udfToKeep[$udfKey] = $udf; + else + { + + $warningList['udfUnklar'][$i][1] = $prestudentId; + $warningList['udfUnklar'][$i][2] = $value['prestudent_id']; + $i++; + $udfError = true; + break; + } + } + } + } + + $prestudentenArray[$previousKey]['udf_values'] = json_encode($udfToKeep); + if ($udfError) + continue; + + } // Wenn der Status gleich ist, wird auf bestätigt-datum geprüft if ($status_kurzbz == $value['status_kurzbz']) { @@ -894,6 +979,11 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p $zgvmadatum = $value['zgvmadatum']; $zgvmanation = $value['zgvmanation']; $previousKey = $key; + if ($prestudentUDF) + { + $udfToKeep = json_decode($value['udf_values'], true); + $udfToKeep = is_null($udfToKeep) ? array() : $udfToKeep; + } } // Messages in $msg_warning schreiben @@ -934,6 +1024,22 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p } } + $msg_warning[] = $messageOutput; + $messageOutput = ''; + if(isset($warningList['udfUnklar'])) + { + foreach ($warningList['udfUnklar'] as $key => $value) { + + $messageOutput .= '
    Bei folgenden PreStudenten sind die UDFs widersprüchlich oder unklar:
    '; + + foreach ($value as $presstudentid) + { + $messageOutput .= '    '.$presstudentid.'
    '; + } + $messageOutput .= '
    '; + } + } + $msg_warning[] = $messageOutput; //Wenn Prüfling auf zu löschenden Prestudenten zeigt und ggf auf bleibenden umhängen. From 376aaadecc3510be1d9f9738cfa7e772722c5a18 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Fri, 3 Dec 2021 15:21:38 +0100 Subject: [PATCH 098/354] bug fixed --- vilesci/stammdaten/personen_wartung.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/vilesci/stammdaten/personen_wartung.php b/vilesci/stammdaten/personen_wartung.php index 2def0bd3c..6e9f1cc21 100644 --- a/vilesci/stammdaten/personen_wartung.php +++ b/vilesci/stammdaten/personen_wartung.php @@ -298,16 +298,16 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p if ($udfToKeep != $udfToDelete) { - foreach ($udfToDelete as $key => $udf) + foreach ($udfToDelete as $key => $udfValue) { if (!array_key_exists($key, $udfToKeep)) { - $udfToKeep[$key] = $udf; + $udfToKeep[$key] = $udfValue; } - elseif ($udfToKeep[$key] !== $udf && !is_null($udf)) + elseif ($udfToKeep[$key] !== $udfValue && !is_null($udfValue)) { if (is_null($udfToKeep[$key])) - $udfToKeep[$key] = $udf; + $udfToKeep[$key] = $udfValue; else { $msg_error[] = 'Beide Personen haben unterschiedliche Werte in den UDFs und können nicht zusammengelegt werden.
    @@ -850,16 +850,16 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p if ($udfToKeep != $udfToDelete) { - foreach ($udfToDelete as $udfKey => $udf) + foreach ($udfToDelete as $udfKey => $udfValue) { if (!array_key_exists($udfKey, $udfToKeep)) { - $udfToKeep[$udfKey] = $udf; + $udfToKeep[$udfKey] = $udfValue; } - elseif ($udfToKeep[$udfKey] !== $udf && !is_null($udf)) + elseif ($udfToKeep[$udfKey] !== $udfValue && !is_null($udfValue)) { if (is_null($udfToKeep[$udfKey])) - $udfToKeep[$udfKey] = $udf; + $udfToKeep[$udfKey] = $udfValue; else { From dd8876a375f2f1090943038b2e424bae1548e19e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 6 Dec 2021 10:16:19 +0100 Subject: [PATCH 099/354] =?UTF-8?q?Automatische=20Pause=20f=C3=BCr=20einze?= =?UTF-8?q?lne=20typen=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/tools/zeitaufzeichnung.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 6864641c3..1e91aec20 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -660,7 +660,7 @@ echo ' function checkPausenblock() { var sel = $("#aktivitaet").val(); - var activities = ["Admin", "Lehre", "FuE", "Operativ", "Betrieb", "Design"]; + var activities = ["Admin", "Lehre", "FuE", "Operativ", "Betrieb", "Design", "LVEntwicklung", "Weiterbildung", "FuEallg"]; if (activities.includes(sel)) showPausenblock(); else From 9c0da32841f591a6da9c9d91d87cec110d5e352e Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 6 Dec 2021 15:51:45 +0100 Subject: [PATCH 100/354] Adapted TEMPUS queries to get correct Zeitwunsch (of given Zeitwunschgueltigkeit) Now correct Zeitwunsch is displayed for - Wochenplan and Semesterplan of a lector - Wochenplan, when a LV is added, to which more lectors are assigned: Now query checks to get correct Zeitwunsch of each lector --- include/zeitwunsch.class.php | 39 +++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/include/zeitwunsch.class.php b/include/zeitwunsch.class.php index 9c60c3a7a..4e94ac059 100644 --- a/include/zeitwunsch.class.php +++ b/include/zeitwunsch.class.php @@ -197,15 +197,32 @@ class zeitwunsch extends basis_db } /** - * Alle Zeitwuensche einer Person laden + * Alle Zeitwuensche einer Person laden. + * Um auf einen Zeitwunsch einer bestimmten Zeit, also innerhalb einer bestimmten Zeitwunschgueltigkeit + * zu beschraenken, kann ein Datum mitgegeben werden. * @param uid - * @param datum + * @param datum UNIX timestamp, um Zeitwunsch mit richtiger Zeitwunschgueltigkeit zu ermitteln * @return boolean Ergebnis steht in Array $zeitwunsch wenn true */ public function loadPerson($uid,$datum=null) { + // Default datum: jetzt + if (is_null($datum)) + { + $datum = time(); + } + + $qry = " + SELECT * + FROM campus.tbl_zeitwunsch + JOIN campus.tbl_zeitwunsch_gueltigkeit zwg USING (zeitwunsch_gueltigkeit_id) + WHERE zwg.mitarbeiter_uid=". $this->db_add_param($uid). " + AND ". $this->db_add_param(date('Y-m-d', $datum)). " BETWEEN von AND bis; + "; + + // Zeitwuensche abfragen - if(!$this->db_query("SELECT * FROM campus.tbl_zeitwunsch WHERE mitarbeiter_uid=".$this->db_add_param($uid))) + if(!$this->db_query($qry)) { $this->errormsg = $this->db_last_error(); return false; @@ -292,12 +309,16 @@ class zeitwunsch extends basis_db /** * Zeitwunsch der Personen in Lehreinheiten laden * @param $le_id LehreinheitID Array - * @param $datum + * @param $datum UNIX timestamp Datum, um Zeitwunsch mit richtiger Zeitwunschgueltigkeit zu ermitteln * @return true oder false */ - public function loadZwLE($le_id,$datum=null) + public function loadZwLE($le_id, $datum = null) { - //$this->init(); + // Default datum: jetzt + if (is_null($datum)) + { + $datum = time(); + } // SUB-Select fuer LVAs $sql_query_leid=''; $sql_query_le='SELECT DISTINCT mitarbeiter_uid FROM campus.vw_lehreinheit WHERE '; @@ -308,7 +329,11 @@ class zeitwunsch extends basis_db // Schlechteste Zeitwuensche holen $sql_query='SELECT tag,stunde,min(gewicht) AS gewicht - FROM campus.tbl_zeitwunsch WHERE mitarbeiter_uid IN ('.$sql_query_le.') GROUP BY tag,stunde'; + FROM campus.tbl_zeitwunsch + JOIN campus.tbl_zeitwunsch_gueltigkeit zwg USING (zeitwunsch_gueltigkeit_id) + WHERE zwg.mitarbeiter_uid IN ('.$sql_query_le.') + AND '. $this->db_add_param(date('Y-m-d', $datum)). ' BETWEEN von AND bis + GROUP BY tag,stunde;'; // Zeitwuensche abfragen if(!$this->db_query($sql_query)) From 40871c73a0e0bb333ec996215c5776b30dbd78f8 Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 7 Dec 2021 17:16:15 +0100 Subject: [PATCH 101/354] Added link to Vilesci Zeitwuensche in TEMPUS Now, when rightclicking on 'Zeitwuensche einsehen' on a lector in Tempus, the Vilesci Zeitwuensche of that lector is opened. --- content/tempusoverlay.js.php | 23 ++++++++++++++ content/tempusoverlay.xul.php | 2 ++ vilesci/personen/zeitwunsch.php | 55 ++++++++++++++++++++++++++++++--- 3 files changed, 75 insertions(+), 5 deletions(-) diff --git a/content/tempusoverlay.js.php b/content/tempusoverlay.js.php index a187f5176..7c539797d 100644 --- a/content/tempusoverlay.js.php +++ b/content/tempusoverlay.js.php @@ -330,6 +330,29 @@ function onLektorSelect(event) } } +function LektorFunktionLoadZeitwunschAdminUrl(){ + + var treeLektor = document.getElementById('tree-lektor'); + var col = treeLektor.columns ? treeLektor.columns["uid"] : "uid"; + try + { + var uid = treeLektor.view.getCellText(treeLektor.currentIndex,col); + } + catch(e) + { + } + + if (uid == '' || uid == undefined) + { + alert('LektorIn auswählen, um Zeitwünsche einsehen zu können.'); + return; + } + else + { + window.open('vilesci/personen/zeitwunsch.php?uid=' + uid); + } +} + function loadURL(event) { var contentFrame = document.getElementById('contentFrame'); diff --git a/content/tempusoverlay.xul.php b/content/tempusoverlay.xul.php index 0e35d71f0..2e1da8b8b 100644 --- a/content/tempusoverlay.xul.php +++ b/content/tempusoverlay.xul.php @@ -186,6 +186,8 @@ echo ' + + diff --git a/vilesci/personen/zeitwunsch.php b/vilesci/personen/zeitwunsch.php index 6e0460f5f..1bc9dd13e 100644 --- a/vilesci/personen/zeitwunsch.php +++ b/vilesci/personen/zeitwunsch.php @@ -337,9 +337,9 @@ $selected_zwg_id = !is_null($selected_zwg) ? $selected_zwg->zeitwunsch_gueltigke $(function(){ // Bei Wechsel von Zeitwunschgueltigkeit die Seite mit GET params neu laden $('#zwg').change(function(){ - let uid = $('input[name="uid"]').val(); - let zeitwunsch_gueltigkeit_id = $('option:selected', this).val(); - let studiensemester = $('option:selected', this).data('stsem'); + var uid = $('input[name="uid"]').val(); + var zeitwunsch_gueltigkeit_id = $('option:selected', this).val(); + var studiensemester = $('option:selected', this).data('stsem'); window.location = '?uid=' + uid + '&zwg_id=' + zeitwunsch_gueltigkeit_id + '&stsem=' + studiensemester; }); @@ -359,7 +359,7 @@ $zwg_arr = $zwg->result; // Dropdown echo '';

     

    + Date: Tue, 7 Dec 2021 17:24:07 +0100 Subject: [PATCH 102/354] Refactored query to load a single Zeitwunschgueltigkeit Instead of limiting returning rows by using ende of next Studiensemester, it is limited by ordering and limiting query now. --- include/zeitwunsch_gueltigkeit.class.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/include/zeitwunsch_gueltigkeit.class.php b/include/zeitwunsch_gueltigkeit.class.php index 33dfdf65f..32b51d9f6 100644 --- a/include/zeitwunsch_gueltigkeit.class.php +++ b/include/zeitwunsch_gueltigkeit.class.php @@ -1,7 +1,6 @@ db_add_param($zeitwunsch_gueltigkeit_id). ' - AND (von < ende AND COALESCE(bis, '. $this->db_add_param($studiensemester->ende).'::date ) > start) - ORDER BY von DESC + AND (von < ende AND COALESCE(bis, \'2999-12-31\'::date ) > start) + ORDER BY start ASC + LIMIT 1 '; if ($result = $this->db_query($qry)) @@ -63,6 +63,9 @@ class zeitwunsch_gueltigkeit extends basis_db $this->insertvon = $row->insertvon; $this->updateamum = $row->updateamum; $this->updatevon = $row->updatevon; + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->start = $row->start; + $this->ende = $row->ende; } return true; } From 6855686c66edfc0b4f8786b82854e9335c8950d2 Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 7 Dec 2021 18:25:55 +0100 Subject: [PATCH 103/354] Changed text and removed link mailto LV Planung --- cis/private/profile/zeitwunsch.php | 6 +++--- locale/de-AT/zeitwunsch.php | 9 +++++---- locale/en-US/zeitwunsch.php | 7 ++++--- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/cis/private/profile/zeitwunsch.php b/cis/private/profile/zeitwunsch.php index c8dea109a..1596fd582 100644 --- a/cis/private/profile/zeitwunsch.php +++ b/cis/private/profile/zeitwunsch.php @@ -668,8 +668,9 @@ function checkIsVerplant($uid, $studiensemester_kurzbz) echo '
    '; echo '
    '; echo ''. $p->t("zeitwunsch/bearbeitungDeaktiviert"). ': '; - echo ''. $p->t("zeitwunsch/bearbeitungDeaktiviertText", array($selected_ss, MAIL_LVPLAN, $p->t('lvplan/lvPlanung'))). ' - '. $p->t("zeitwunsch/bearbeitungAktivieren"). ' + echo $p->t("zeitwunsch/bearbeitungDeaktiviertText", array($selected_ss, $p->t('global/studiengangsmanagement'))). ' + '. $p->t("zeitwunsch/bearbeitungAktivieren"). '
    + '. $p->t("zeitwunsch/kompetenzfeldWirdInformiert") . '
    '; echo '
    '; // end panel heading echo '
    '; // end panel @@ -695,7 +696,6 @@ function checkIsVerplant($uid, $studiensemester_kurzbz)
  • t('zeitwunsch/sperrenSieNurTermine');?>
  • t('zeitwunsch/esSolltenFuerJedeStunde');?>

  • -

    t('lvplan/fehlerUndFeedback');?> t('lvplan/lvPlanung');?>.



    diff --git a/locale/de-AT/zeitwunsch.php b/locale/de-AT/zeitwunsch.php index d56494104..35c8c3c99 100644 --- a/locale/de-AT/zeitwunsch.php +++ b/locale/de-AT/zeitwunsch.php @@ -26,7 +26,7 @@ $this->phrasen['zeitwunsch/profil']='Profil'; $this->phrasen['zeitwunsch/geteilteArbeitszeit']='Ich bin mit der Verplanung meiner Lehre in getrennten Blöcken am Tagesrand einverstanden.'; $this->phrasen['zeitwunsch/gueltigIm']="Mein Zeitwunsch gültig im: "; $this->phrasen['zeitwunsch/erklaerungstext']="Sie können Ihren Zeitwunsch direkt in der Tabelle bearbeiten oder einen Zeitwunsch eines vergangenen Studiensemester kopieren.
    - Solange Sie keine Änderungen vornehmen, wird Ihr Zeitwunsch immer ins nächste Studiensemester übernommen."; +
    Solange Sie keine Änderungen vornehmen, wird Ihr Zeitwunsch immer ins nächste Studiensemester übernommen."; $this->phrasen['zeitwunsch/werteAuf1setzen']="Alle Werte auf 1 setzen"; $this->phrasen['zeitwunsch/kopierenText']="Wählen Sie rechts das gewünschte Studiensemester aus. Der Zeitwunsch wird dann automatisch in die Tabelle übernommen.
    @@ -36,8 +36,9 @@ $this->phrasen['zeitwunsch/aendern']= "kopieren von früherem Studiensemeste $this->phrasen['zeitwunsch/stundenBereitsVerplant']='Stunden für %s bereits verplant'; $this->phrasen['zeitwunsch/fuer']='Zeitwunsch für %s  '; $this->phrasen['zeitwunsch/bearbeitungDeaktiviert']='Bearbeitung deaktiviert'; -$this->phrasen['zeitwunsch/bearbeitungDeaktiviertText']='Ihnen wurden im %s bereits Lehrveranstaltung(en) zugeteilt.
    - Bitte stimmen Sie sich vor einer Änderung mit der %s ab.
    - Möchten Sie mit der Bearbeitung fortsetzen?'; +$this->phrasen['zeitwunsch/bearbeitungDeaktiviertText']='Ihnen wurden im %s bereits Lehrveranstaltung(en) zugeteilt.
    + Bitte stimmen Sie sich vor einer Änderung mit dem %s ab.
    + Möchten Sie trotzdem ohne Abstimmung bzw. nach bereits erfolgter Abstimmung fortsetzen?'; $this->phrasen['zeitwunsch/bearbeitungAktivieren']='Bearbeitung aktivieren'; +$this->phrasen['zeitwunsch/kompetenzfeldWirdInformiert']= 'INFO: Kompetenzfeld wird über die Änderung per Mail informiert'; ?> diff --git a/locale/en-US/zeitwunsch.php b/locale/en-US/zeitwunsch.php index 7d89d65f2..d12863710 100644 --- a/locale/en-US/zeitwunsch.php +++ b/locale/en-US/zeitwunsch.php @@ -26,7 +26,7 @@ $this->phrasen['zeitwunsch/profil']='Profile'; $this->phrasen['zeitwunsch/geteilteArbeitszeit']='Ich bin mit der Verplanung meiner Lehre in getrennten Blöcken am Tagesrand einverstanden.'; $this->phrasen['zeitwunsch/gueltigIm']="My preferred times valid in: "; $this->phrasen['zeitwunsch/erklaerungstext']="You can edit your preferred times directly in the table or copy a your preferred times from a previous semester.
    - As long as you do not make any changes, your preferred times will be carried over to the next study semester."; + As long as you do not make any changes, your preferred times will be carried over to the next study semester."; $this->phrasen['zeitwunsch/werteAuf1setzen']="Set all values to 1"; $this->phrasen['zeitwunsch/kopierenText']="Select the desired semester on the right. Your preferred time of that semester is then automatically transferred to the table.
    @@ -37,7 +37,8 @@ $this->phrasen['zeitwunsch/stundenBereitsVerplant']='Hours already scheduled for $this->phrasen['zeitwunsch/fuer']='Preferred time for %s  '; $this->phrasen['zeitwunsch/bearbeitungDeaktiviert']='Editing disabled'; $this->phrasen['zeitwunsch/bearbeitungDeaktiviertText']='You have already been assigned to course(s) in %s.
    - Please agree with %s before making a change.
    - Do you want to proceed editing?'; + Please agree with %s before making a change.
    + Would you still like to continue without agreement or after having agreed?'; $this->phrasen['zeitwunsch/bearbeitungAktivieren']='Enable editing'; +$this->phrasen['zeitwunsch/kompetenzfeldWirdInformiert']= 'INFO: The field of competence will be informed of your changes by email'; ?> From 684363aaead5e8dddb306498089c4afb7e88db9f Mon Sep 17 00:00:00 2001 From: Manfred Date: Tue, 7 Dec 2021 20:58:47 +0100 Subject: [PATCH 104/354] Anpassungen bpk und Gebustsdatum --- vilesci/bis/lehrgangsmeldung.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/vilesci/bis/lehrgangsmeldung.php b/vilesci/bis/lehrgangsmeldung.php index 8649c2a5b..158d7d164 100644 --- a/vilesci/bis/lehrgangsmeldung.php +++ b/vilesci/bis/lehrgangsmeldung.php @@ -311,7 +311,7 @@ if($result = $db->db_query($qry)) //Vergleich der letzten 6 Stellen der SVNR mit Geburtsdatum - ausser bei 01.01. und 01.07. if($row->svnr!='' && $row->svnr!=null && substr($row->svnr,4,6)!=$row->vdat && substr($row->vdat,0,4)!='0101' && substr($row->vdat,0,4)!='0107') { - $error_log_hinweis.=(!empty($error_log)?', ':'')."SVNR ('".$row->svnr."') enthält Geburtsdatum (".$row->gebdatum.") nicht"; + $error_log_hinweis.=(!empty($error_log_hinweis)?', ':'')."SVNR ('".$row->svnr."') enthält Geburtsdatum (".$row->gebdatum.") nicht"; } //Vergleich der letzten 6 Stellen des Ersatzkennzeichen mit Geburtsdatum if($row->ersatzkennzeichen!='' && $row->ersatzkennzeichen!=null && substr($row->ersatzkennzeichen,4,6)!=$row->vdat) @@ -390,7 +390,7 @@ if($result = $db->db_query($qry)) } if($row->bpk == '' || $row->bpk == null) { - $error_log .= (!empty($error_log) ? ', ' : '') . "bPK fehlt"; + $error_log_hinweis .= (!empty($error_log_hinweis) ? ', ' : '') . "bPK fehlt"; } if($row->bpk != '' && $row->bpk != null) @@ -606,7 +606,7 @@ if($result = $db->db_query($qry)) { if($error_log_hinweis != '') { - $v.="Bei Student (UID, Vorname, Nachname) '".$row->student_uid."', '".$row->nachname."', '".$row->vorname."' ($laststatus->status_kurzbz): \n"; + $v.="Bei Student (UID, Vorname, Nachname) '".$row->student_uid."', '".$row->nachname."', '".$row->vorname."' ($row->status_kurzbz): \n"; $v.="     ".$error_log_hinweis." (Nicht BIS-Relevant)\n"; $error_log_hinweis = ''; } @@ -649,10 +649,13 @@ if($result = $db->db_query($qry)) $datei.=" ".$row->ersatzkennzeichen.""; } - - $datei.=" - ".$row->bpk." - "; + + if($row->bpk != '' && $row->bpk != null) + { + $datei.=" + ".$row->bpk." + "; + } $datei.=" ".$row->staatsbuergerschaft." From 5edc56a8f2a89143c7562d4f767268beffc1da20 Mon Sep 17 00:00:00 2001 From: Manfred Date: Tue, 7 Dec 2021 20:59:38 +0100 Subject: [PATCH 105/354] =?UTF-8?q?Speichern=20von=20Insertamum=20und=20Up?= =?UTF-8?q?dateamum=20bei=20R=C3=A4umen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vilesci/stammdaten/raum_details.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/vilesci/stammdaten/raum_details.php b/vilesci/stammdaten/raum_details.php index 92f71886a..09ff298a5 100644 --- a/vilesci/stammdaten/raum_details.php +++ b/vilesci/stammdaten/raum_details.php @@ -115,9 +115,15 @@ $sg_update->gebteil = $gebteil; $sg_update->oe_kurzbz = $oe_kurzbz; $sg_update->arbeitsplaetze = $arbeitsplaetze; + $sg_update->updateamum = date('Y-m-d H:i:s'); + $sg_update->updatevon = $user; if ($_POST["neu"] == "true") + { + $sg_update->insertamum = date('Y-m-d H:i:s'); + $sg_update->insertvon = $user; $sg_update->new = 1; + } if(!$sg_update->save()) { From 3301aa87ddd7183f6bc5c9ab25e58ff864774186 Mon Sep 17 00:00:00 2001 From: Manfred Date: Tue, 7 Dec 2021 21:00:53 +0100 Subject: [PATCH 106/354] =?UTF-8?q?Export=20f=C3=BCr=20alle=20Bachelor=20u?= =?UTF-8?q?nd=20Masterstudieng=C3=A4nge.=20BIS-Datum=20als=20GET?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vilesci/bis/studentenmeldung.php | 261 +++++++++++++++++++------------ 1 file changed, 161 insertions(+), 100 deletions(-) diff --git a/vilesci/bis/studentenmeldung.php b/vilesci/bis/studentenmeldung.php index 710e38ead..6d1650f53 100644 --- a/vilesci/bis/studentenmeldung.php +++ b/vilesci/bis/studentenmeldung.php @@ -54,7 +54,6 @@ $error_log_hinweis=''; $error_log1=''; $error_log_all=""; $error_log_io = ''; // error log fuer plausichecks von incomings/outgoings -$stgart=''; $fehler=''; $maxsemester=0; $v=''; @@ -106,6 +105,8 @@ $student_data=array(); $datum_obj = new datum(); //Beginn- und Endedatum des aktuellen Semesters +// Update 07.12.2021 kindlm: scheint nicht verwendet zu werden +/* $qry="SELECT * FROM public.tbl_studiensemester WHERE studiensemester_kurzbz=".$db->db_add_param($ssem).";"; if($result = $db->db_query($qry)) { @@ -114,7 +115,8 @@ if($result = $db->db_query($qry)) $beginn=$row->start; $ende=$row->ende; } -} +}*/ + //Ermittlung aktuelles und letztes BIS-Meldedatum if(mb_strstr($ssem,"WS")) { @@ -130,6 +132,13 @@ else { die('Ungültiges Studiensemester!'); } + +//Wenn bisdatum als GET-Parameter übergeben wird, dieses Datum nehmen +if (isset($_GET['bisdatum'])) +{ + $bisdatum = $_GET['bisdatum']; +} + //ausgewaehlter Studiengang if(isset($_GET['stg_kz'])) { @@ -178,75 +187,46 @@ $kodex_studstatuscode_array['Unterbrecher']=2; $kodex_studstatuscode_array['Absolvent'] =3; $kodex_studstatuscode_array['Abbrecher'] =4; -//Studiengangsdaten auslesen -$stg_obj = new studiengang(); -if($stg_obj->load($stg_kz)) -{ - $maxsemester=$stg_obj->max_semester; - if($maxsemester==0) - { - echo "Die maximale Semesteranzahl des Studienganges ist nicht angegeben!"; - exit; - } - - $erhalter = sprintf('%03s',$stg_obj->erhalter_kz); - - switch($stg_obj->typ) - { - case 'b': $stgart=1; break; - case 'm': $stgart=2; break; - case 'd': $stgart=3; break; - case 'e': $stgart=4; break; - default: die('

    Dieser Studiengangstyp kann nicht gemeldet werden. Typ muss (b, m, d oder e) sein

    '); break; - } - - // DoubleDegree Studierende werden per Default aus BB gemeldet. - // Wenn es ein reiner VZ Studiengang ist, dann sollen diese aber als VZ gemeldet werden. - if($stg_obj->orgform_kurzbz=='VZ') - $orgform_code_array['DDP']=$orgform_code_array['VZ']; - - $orgform_code = $orgform_code_array[$stg_obj->orgform_kurzbz]; - $orgform_kurzbz=$stg_obj->orgform_kurzbz; -} -else - die('Fehler:'.$stg_obj->errormsg); - - //Ausgabe aktiver Studenten, die nicht gemeldet werden -$qry_akt=" - SELECT - DISTINCT ON(student_uid, nachname, vorname) *, public.tbl_person.person_id AS pers_id - FROM - public.tbl_student - JOIN public.tbl_benutzer ON(student_uid=uid) - JOIN public.tbl_person USING (person_id) - JOIN public.tbl_prestudent USING (prestudent_id) - JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id) - WHERE - bismelden=FALSE - AND tbl_student.studiengang_kz=".$db->db_add_param($stg_kz)." - AND (tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem)." AND status_kurzbz IN ('Student','Diplomand','Unterbrecher','Praktikant','Outgoing')) - AND tbl_prestudent.prestudent_id NOT IN - ( - SELECT prestudent_id - FROM public.tbl_prestudentstatus - WHERE - tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem)." - AND (status_kurzbz='Abbrecher' OR status_kurzbz='Absolvent') - ) - ORDER BY student_uid, nachname, vorname - "; -if($result_akt = $db->db_query($qry_akt)) +if ($stg_kz != 'alleBaMa') { - while($row_akt = $db->db_fetch_object($result_akt)) + $qry_akt = " + SELECT + DISTINCT ON(student_uid, nachname, vorname) *, public.tbl_person.person_id AS pers_id + FROM + public.tbl_student + JOIN public.tbl_benutzer ON(student_uid=uid) + JOIN public.tbl_person USING (person_id) + JOIN public.tbl_prestudent USING (prestudent_id) + JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id) + WHERE + bismelden=FALSE + AND tbl_student.studiengang_kz=".$db->db_add_param($stg_kz)." + AND (tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem)." AND status_kurzbz IN ('Student','Diplomand','Unterbrecher','Praktikant','Outgoing')) + AND tbl_prestudent.prestudent_id NOT IN + ( + SELECT prestudent_id + FROM public.tbl_prestudentstatus + WHERE + tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem)." + AND (status_kurzbz='Abbrecher' OR status_kurzbz='Absolvent') + ) + ORDER BY student_uid, nachname, vorname + "; + if ($result_akt = $db->db_query($qry_akt)) { - $v.="Person (UID, Vorname, Nachname) '".$row_akt->student_uid."', '".$row_akt->nachname."', '".$row_akt->vorname."' hat Status $row_akt->status_kurzbz, wird aber nicht BIS gemeldet!!!
    \n"; - $anzahl_fehler++; + while ($row_akt = $db->db_fetch_object($result_akt)) + { + $v .= "Person (UID, Vorname, Nachname) '".$row_akt->student_uid."', '".$row_akt->nachname."', '".$row_akt->vorname."' hat Status $row_akt->status_kurzbz, wird aber nicht BIS gemeldet!!!
    \n"; + $anzahl_fehler++; + } } } +if ($stg_kz != 'alleBaMa') +{ //Incoming ohne I/O Datensatz anzeigen -$qry_in=" + $qry_in = " SELECT DISTINCT ON(student_uid, nachname, vorname) *, public.tbl_person.person_id AS pers_id FROM @@ -261,16 +241,16 @@ $qry_in=" AND (status_kurzbz='Incoming' AND NOT EXISTS (SELECT 1 FROM bis.tbl_bisio WHERE student_uid=tbl_student.student_uid)) ORDER BY student_uid, nachname, vorname "; -if($result_in = $db->db_query($qry_in)) -{ - while($row_in = $db->db_fetch_object($result_in)) + if ($result_in = $db->db_query($qry_in)) { - $v.="Bei Student (UID, Vorname, Nachname) '".$row_in->student_uid."', '".$row_in->nachname."', '".$row_in->vorname."' ($row_in->status_kurzbz): \n"; - $v.="     Es fehlt der I/O-Datensatz\n\n"; - $anzahl_fehler++; + while ($row_in = $db->db_fetch_object($result_in)) + { + $v .= "Bei Student (UID, Vorname, Nachname) '".$row_in->student_uid."', '".$row_in->nachname."', '".$row_in->vorname."' ($row_in->status_kurzbz): \n"; + $v .= "     Es fehlt der I/O-Datensatz\n\n"; + $anzahl_fehler++; + } } } - //Hauptselect // An der FHTW können nur die Incomings ausgelesen werden, wenn die stg_kz 10006 übergeben wird if (CAMPUS_NAME == 'FH Technikum Wien' && $stg_kz==10006) @@ -292,6 +272,34 @@ if (CAMPUS_NAME == 'FH Technikum Wien' && $stg_kz==10006) ORDER BY student_uid, nachname, vorname "; } +// Wenn "alleBaMa" als $stg_kz übergeben wird, wird ein großes XML mit allen Studiengängen geladen +elseif ($stg_kz == 'alleBaMa') +{ + $qry=" + SELECT + DISTINCT ON(tbl_studiengang.typ, tbl_student.studiengang_kz, matrikelnummer, nachname, vorname) *, public.tbl_person.person_id AS pers_id, to_char(gebdatum, 'ddmmyy') AS vdat + FROM + public.tbl_student + JOIN public.tbl_benutzer ON(student_uid=uid) + JOIN public.tbl_person USING (person_id) + JOIN public.tbl_prestudent USING (prestudent_id) + JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id) + JOIN public.tbl_studiengang ON (tbl_studiengang.studiengang_kz=tbl_student.studiengang_kz) + WHERE + bismelden=TRUE + AND tbl_studiengang.typ IN ('b','m') + AND (((tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem).") AND (tbl_prestudentstatus.datum<=".$db->db_add_param($bisdatum).") + AND (status_kurzbz='Student' OR status_kurzbz='Outgoing' + OR status_kurzbz='Praktikant' OR status_kurzbz='Diplomand' OR status_kurzbz='Absolvent' + OR status_kurzbz='Abbrecher' OR status_kurzbz='Unterbrecher')) + OR ((tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($psem).") AND (status_kurzbz='Absolvent' + OR status_kurzbz='Abbrecher') AND tbl_prestudentstatus.datum>".$db->db_add_param($bisprevious).") + OR (status_kurzbz='Incoming' AND student_uid IN (SELECT student_uid FROM bis.tbl_bisio WHERE (tbl_bisio.bis>=".$db->db_add_param($bisprevious).") + OR (tbl_bisio.von<=".$db->db_add_param($bisdatum)." AND (tbl_bisio.bis>=".$db->db_add_param($bisdatum)." OR tbl_bisio.bis IS NULL)) + ))) + ORDER BY tbl_studiengang.typ, tbl_student.studiengang_kz, matrikelnummer, nachname, vorname + "; +} else { $qry=" @@ -321,25 +329,72 @@ else if($result = $db->db_query($qry)) { - $header =" - - ".$erhalter." - ".date("dmY", $datumobj->mktime_fromdate($bisdatum))." - - - ".$stg_kz.""; - - - $datei .= $header; - $dateiNurBewerber .= $header; + $stg_kz_index = ''; while($row = $db->db_fetch_object($result)) { - $datei.= GenerateXMLStudentBlock($row); + if ($row->studiengang_kz != $stg_kz_index) + { + //Studiengangsdaten auslesen + $stg_obj = new studiengang(); + if($stg_obj->load($row->studiengang_kz)) + { + $maxsemester = $stg_obj->max_semester; + if($maxsemester == 0) + { + echo "Die maximale Semesteranzahl des Studienganges ist nicht angegeben!"; + exit; + } + + $erhalter = sprintf('%03s',$stg_obj->erhalter_kz); + + switch($stg_obj->typ) + { + case 'b': $stgart = 1; break; + case 'm': $stgart = 2; break; + case 'd': $stgart = 3; break; + case 'e': $stgart = 4; break; + default: die('

    Dieser Studiengangstyp kann nicht gemeldet werden. Typ muss (b, m, d oder e) sein

    '); break; + } + + // DoubleDegree Studierende werden per Default aus BB gemeldet. + // Wenn es ein reiner VZ Studiengang ist, dann sollen diese aber als VZ gemeldet werden. + if($stg_obj->orgform_kurzbz == 'VZ') + $orgform_code_array['DDP'] = $orgform_code_array['VZ']; + + $orgform_code = $orgform_code_array[$stg_obj->orgform_kurzbz]; + $orgform_kurzbz = $stg_obj->orgform_kurzbz; + } + else + die('Fehler:'.$stg_obj->errormsg); + + // Header am Beginn rausschreiben + if ($stg_kz_index == '') + { + $header = " + + ".$erhalter." + ".date("dmY", $datumobj->mktime_fromdate($bisdatum))." + "; + + $datei .= $header; + $dateiNurBewerber .= $header; + } + if ($stg_kz_index != '' && $row->studiengang_kz != $stg_kz_index) + { + $datei .= " +
    "; + } + $stg_kz_index = $row->studiengang_kz; + $datei .= " + + ".$row->studiengang_kz.""; + } + $datei .= GenerateXMLStudentBlock($row); } //Bewerberblock bei Ausserordentlichen nicht anzeigen - if($stg_kz!=('9'.$erhalter)) + /*if($stg_kz!=('9'.$erhalter)) { $stg_obj = new studiengang(); @@ -360,7 +415,7 @@ if($result = $db->db_query($qry)) $datei.=$bewerberBlock; $dateiNurBewerber.=$bewerberBlock; } - } + }*/ } $footer=" @@ -421,6 +476,7 @@ if ($rechte->isBerechtigt('admin')) { echo '
    '; echo 'Studiengang: '; echo '
    '; } -$studiengang = new studiengang($stg_kz); -$typ = new studiengang($stg_kz); -$typ->getStudiengangTyp($studiengang->typ); -echo "

    BIS - Studentendaten werden überprüft! Studiengang: ".$db->convert_html_chars($stg_kz)." - ".$typ->bezeichnung." ".$studiengang->bezeichnung."

    \n"; +if ($stg_kz != 'alleBaMa') +{ + $studiengang = new studiengang($stg_kz); + $typ = new studiengang($stg_kz); + $typ->getStudiengangTyp($studiengang->typ); + echo "

    BIS - Studentendaten werden überprüft. Studiengang: ".$db->convert_html_chars($stg_kz)." - ".$typ->bezeichnung." ".$studiengang->bezeichnung."

    \n"; +} +else +{ + echo "

    BIS - Studentendaten aller Bachelor- und Master-Studiengänge werden überprüft.

    \n"; +} echo "

    Nicht plausible BIS-Daten (für Meldung ".$db->convert_html_chars($ssem)."):


    "; echo nl2br($v."\n\n"); @@ -821,7 +884,7 @@ function GenerateXMLStudentBlock($row) } if($row->svnr!='' && $row->svnr!=null && substr($row->svnr,4,6)!=$row->vdat && substr($row->vdat,0,4)!='0101' && substr($row->vdat,0,4)!='0107') { - $error_log_hinweis.=(!empty($error_log)?', ':'')."SVNR ('".$row->svnr."') enthält Geburtsdatum (".$datum_obj->formatDatum($row->gebdatum,'d.m.Y').") nicht"; + $error_log_hinweis.=(!empty($error_log_hinweis)?', ':'')."SVNR ('".$row->svnr."') enthält Geburtsdatum (".$datum_obj->formatDatum($row->gebdatum,'d.m.Y').") nicht"; } if($row->ersatzkennzeichen!='' && $row->ersatzkennzeichen!=null && substr($row->ersatzkennzeichen,4,6)!=$row->vdat) { @@ -853,7 +916,7 @@ function GenerateXMLStudentBlock($row) } if($row->bpk == '' || $row->bpk == null) { - $error_log .= (!empty($error_log) ? ', ' : '') . "bPK fehlt"; + $error_log_hinweis .= (!empty($error_log_hinweis) ? ', ' : '') . "bPK fehlt"; } if($row->bpk != '' && $row->bpk != null) { @@ -996,8 +1059,7 @@ function GenerateXMLStudentBlock($row) { if ($db->db_num_rows($resultAbbrecher) == 0) { - $error_log .= (!empty($error_log) ? ', ' : '')."Der Student ist Abbrecher vor der ersten BIS-Meldung. Bitte im FAS das Hakerl bei \"Bismelden\" im Reiter \"Prestudent\" entfernen"; - + //$error_log .= (!empty($error_log) ? ', ' : '')."Der Student ist Abbrecher vor der ersten BIS-Meldung. Bitte im FAS das Hakerl bei \"Bismelden\" im Reiter \"Prestudent\" entfernen"; } } } @@ -1322,9 +1384,11 @@ function GenerateXMLStudentBlock($row) " . $row->ersatzkennzeichen . ""; } - $datei .= " - " . $row->bpk . " - "; + if($row->bpk != '' && $row->bpk != null) + { + $datei.=" + ".$row->bpk.""; + } $datei .= " " . $row->staatsbuergerschaft . " @@ -1333,14 +1397,11 @@ function GenerateXMLStudentBlock($row) " . $nation . ""; - if (!$ausserordentlich && !$incoming) - { - $datei .= " + $datei .= " " . $zustell_plz . " " . $zustell_gemeinde . " " . $zustell_strasse . " " . $zustell_nation . ""; - } if ($co_name != '') { From d033803f47c9ab386cb28f86bee52ab1112fc318 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 9 Dec 2021 11:09:06 +0100 Subject: [PATCH 107/354] Sortierung an BIS Vergleich angepasst --- vilesci/bis/studentenmeldung.php | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/vilesci/bis/studentenmeldung.php b/vilesci/bis/studentenmeldung.php index 76ee1aecc..3842f7074 100644 --- a/vilesci/bis/studentenmeldung.php +++ b/vilesci/bis/studentenmeldung.php @@ -277,7 +277,7 @@ elseif ($stg_kz == 'alleBaMa') { $qry=" SELECT - DISTINCT ON(tbl_studiengang.typ, tbl_student.studiengang_kz, matrikelnummer, nachname, vorname) *, public.tbl_person.person_id AS pers_id, to_char(gebdatum, 'ddmmyy') AS vdat + DISTINCT ON(tbl_student.studiengang_kz, matrikelnr, nachname, vorname) *, public.tbl_person.person_id AS pers_id, to_char(gebdatum, 'ddmmyy') AS vdat FROM public.tbl_student JOIN public.tbl_benutzer ON(student_uid=uid) @@ -297,7 +297,7 @@ elseif ($stg_kz == 'alleBaMa') OR (status_kurzbz='Incoming' AND student_uid IN (SELECT student_uid FROM bis.tbl_bisio WHERE (tbl_bisio.bis>=".$db->db_add_param($bisprevious).") OR (tbl_bisio.von<=".$db->db_add_param($bisdatum)." AND (tbl_bisio.bis>=".$db->db_add_param($bisdatum)." OR tbl_bisio.bis IS NULL)) ))) - ORDER BY tbl_studiengang.typ, tbl_student.studiengang_kz, matrikelnummer, nachname, vorname + ORDER BY tbl_student.studiengang_kz, matrikelnr, nachname, vorname "; } else @@ -448,26 +448,26 @@ echo ' { $("#t1").tablesorter( { - sortList: [[6,1],[5,1],[4,1],[2,0],[3,0]], + sortList: [[6,1],[5,1],[4,1],[2,0],[3,0]], widgets: ["zebra", "filter", "stickyHeaders"], - widgetOptions : { filter_functions: - { - // Add select menu to this column + widgetOptions : { filter_functions: + { + // Add select menu to this column 4 : { - "Abbrecher" : function(e, n, f, i, $r, c, data) { return /Abbrecher/.test(e); }, + "Abbrecher" : function(e, n, f, i, $r, c, data) { return /Abbrecher/.test(e); }, "Absolvent" : function(e, n, f, i, $r, c, data) { return /Absolvent/.test(e); }, "Diplomand" : function(e, n, f, i, $r, c, data) { return /Diplomand/.test(e); }, "Incoming" : function(e, n, f, i, $r, c, data) { return /Incoming/.test(e); }, "Student" : function(e, n, f, i, $r, c, data) { return /Student/.test(e); }, - "Unterbrecher" : function(e, n, f, i, $r, c, data) { return /Unterbrecher/.test(e); }, + "Unterbrecher" : function(e, n, f, i, $r, c, data) { return /Unterbrecher/.test(e); }, } - } - } + } + } }); $("#t2").tablesorter( { - sortList: [[0,0],[1,0]], - widgets: ["zebra", "filter", "stickyHeaders"] + sortList: [[0,0],[1,0]], + widgets: ["zebra", "filter", "stickyHeaders"] }); }); From c3588b4eb49610da1a1b8c7099eb15290c27f1b2 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Thu, 9 Dec 2021 20:27:08 +0100 Subject: [PATCH 108/354] studeingang hinzugefuegt bei der uebersicht --- .../views/system/infocenter/infocenterAbgewiesenData.php | 2 ++ system/filtersupdate.php | 1 + 2 files changed, 3 insertions(+) diff --git a/application/views/system/infocenter/infocenterAbgewiesenData.php b/application/views/system/infocenter/infocenterAbgewiesenData.php index 3bf60a9ef..dbe0540be 100644 --- a/application/views/system/infocenter/infocenterAbgewiesenData.php +++ b/application/views/system/infocenter/infocenterAbgewiesenData.php @@ -14,6 +14,7 @@ $query = ' ps.prestudent_id AS "PreStudentID", p.vorname AS "Vorname", p.nachname AS "Nachname", + sg.kurzbzlang as "Studiengang", pss.insertamum AS "AbgewiesenAm", ( SELECT l.zeitpunkt @@ -62,6 +63,7 @@ $query = ' 'PreStudentID', 'Vorname', 'Nachname', + 'Studiengang', 'Abgewiesen am', 'Nachricht' ), diff --git a/system/filtersupdate.php b/system/filtersupdate.php index cf7ac4685..249a66fab 100644 --- a/system/filtersupdate.php +++ b/system/filtersupdate.php @@ -486,6 +486,7 @@ $filters = array( {"name": "PreStudentID"}, {"name": "Vorname"}, {"name": "Nachname"}, + {"name": "Studiengang"}, {"name": "AbgewiesenAm"}, {"name": "Nachricht"} ], From cc770e6324f97ae1da97d5751902aa156dfd0a81 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 13 Dec 2021 11:29:11 +0100 Subject: [PATCH 109/354] Added param 'nurBevorstehende' to getStundenplanData method in Lehrstunden Class If 'nurBevorstehende' true, only future Studenplandata will be queried. --- include/lehrstunde.class.php | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/include/lehrstunde.class.php b/include/lehrstunde.class.php index 84cd615ed..5cec78f3d 100644 --- a/include/lehrstunde.class.php +++ b/include/lehrstunde.class.php @@ -1062,7 +1062,19 @@ class lehrstunde extends basis_db return $result; } - public function getStundenplanData($db_stpl_table, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null) + /** + * Holt Studenplandaten. + * + * @param $db_stpl_table + * @param null $lehrveranstaltung_id + * @param null $studiensemester_kurzbz + * @param null $lehreinheit_id + * @param null $mitarbeiter_uid + * @param null $student_uid + * @param false $nurBevorstehende Wenn true, dann werden nur bevorstehende LVs abgefragt. + * @return bool + */ + public function getStundenplanData($db_stpl_table, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null, $nurBevorstehende = false) { $qry = "SELECT @@ -1114,6 +1126,11 @@ class lehrstunde extends basis_db else return false; + if($nurBevorstehende) + { + $qry.= " AND datum >= NOW()::date "; + } + $qry.="GROUP BY stpl.datum, stpl.unr, stpl.lehreinheit_id, lehrfach.bezeichnung ORDER BY stpl.datum, min(stpl.stunde), stpl.unr, stpl.lehreinheit_id"; From bb7922dd3a7f5dfa6771a1cdeecf5ce9419bf840 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 13 Dec 2021 11:40:32 +0100 Subject: [PATCH 110/354] Adapted to check only for future verplante LVs Only if LVs are assigend in the future, the lector should be informed and initially blocked to change their Zeitwunsch. For past LVs it is not relevant anymore. --- cis/private/profile/zeitwunsch.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cis/private/profile/zeitwunsch.php b/cis/private/profile/zeitwunsch.php index 1596fd582..2c2a7bce1 100644 --- a/cis/private/profile/zeitwunsch.php +++ b/cis/private/profile/zeitwunsch.php @@ -346,7 +346,7 @@ function updateZWG($uid, $zwg_id, $bis) function checkIsVerplant($uid, $studiensemester_kurzbz) { $lstd = new Lehrstunde(); - if (!$lstd->getStundenplanData('stundenplandev', null, $studiensemester_kurzbz, null, $uid)) + if (!$lstd->getStundenplanData('stundenplandev', null, $studiensemester_kurzbz, null, $uid, null, true)) { die($lstd->errormsg); } From bb29dca8468d501c3ef0d3c5f5f7afaf19992752 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Wed, 15 Dec 2021 15:55:16 +0100 Subject: [PATCH 111/354] text angepasst nach dem logout --- cis/testtool/logout.html | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/cis/testtool/logout.html b/cis/testtool/logout.html index ac5074f88..e350b4bca 100644 --- a/cis/testtool/logout.html +++ b/cis/testtool/logout.html @@ -3,9 +3,29 @@ TestTool - FH Technikum Wien + - Danke für die Teilnahme am Reihungstest. Klicken Sie hier, um zurück zur Startseite zu gelangen. +
    +
    +
    +
    +

    Vielen Dank für die Teilnahme an unserem Aufnahmeverfahren.

    +

    + Die zuständige Assistenz wird sich in den nächsten Tagen bei Ihnen melden. +

    + Zurück zur Startseite +
    +
    +

    Thank you for participating in our admission procedure.

    +

    + The assistant in charge will contact you in the next few days. +

    + Back to startpage +
    +
    +
    +
    From 66ba68965696030c3d7f70123bdb9f55416c2b24 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Thu, 16 Dec 2021 13:46:09 +0100 Subject: [PATCH 112/354] nicht im neuen tab oeffnen --- cis/testtool/logout.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cis/testtool/logout.html b/cis/testtool/logout.html index e350b4bca..58a0b191f 100644 --- a/cis/testtool/logout.html +++ b/cis/testtool/logout.html @@ -15,14 +15,14 @@

    Die zuständige Assistenz wird sich in den nächsten Tagen bei Ihnen melden.

    - Zurück zur Startseite + Zurück zur Startseite

    Thank you for participating in our admission procedure.



    The assistant in charge will contact you in the next few days.

    - Back to startpage + Back to startpage
    From d2c87d6a98bca24a0ea40e2c5209f91f7696f80e Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 20 Dec 2021 09:43:37 +0100 Subject: [PATCH 113/354] Added Class Zeitwunsch_gueltigkeit_model --- .../ressource/Zeitwunsch_gueltigkeit_model.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 application/models/ressource/Zeitwunsch_gueltigkeit_model.php diff --git a/application/models/ressource/Zeitwunsch_gueltigkeit_model.php b/application/models/ressource/Zeitwunsch_gueltigkeit_model.php new file mode 100644 index 000000000..f26e06d3c --- /dev/null +++ b/application/models/ressource/Zeitwunsch_gueltigkeit_model.php @@ -0,0 +1,14 @@ +dbTable = 'campus.tbl_zeitwunsch_gueltigkeit'; + $this->pk = 'zeitwunsch_gueltigkeit_id'; + } +} \ No newline at end of file From b2bd8e071b87c27ad1b3efed8ccc4239c993d00f Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 20 Dec 2021 09:47:21 +0100 Subject: [PATCH 114/354] Added getStudenplanData method to Class Studenplandev_model --- .../models/ressource/Stundenplandev_model.php | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/application/models/ressource/Stundenplandev_model.php b/application/models/ressource/Stundenplandev_model.php index 9fa92ae5e..4a9c9c5ed 100644 --- a/application/models/ressource/Stundenplandev_model.php +++ b/application/models/ressource/Stundenplandev_model.php @@ -61,4 +61,98 @@ class Stundenplandev_model extends DB_Model return $this->execQuery($qry, $parametersArray); } + + /** + * Get Stundenplan data. + * + * @param null $lehrveranstaltung_id + * @param null $studiensemester_kurzbz + * @param null $lehreinheit_id + * @param null $mitarbeiter_uid + * @param null $student_uid + * @param false $nurBevorstehende If true, only future data is retrieved. + * @return array|false|stdClass|null + */ + public function getStundenplanData($lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null, $nurBevorstehende = false) + { + $params = array(); + + $qry = "SELECT + stpl.datum, min(stpl.stunde) as stundevon, max(stpl.stunde) as stundebis, + stpl.lehreinheit_id, lehrfach.bezeichnung as lehrfach_bezeichnung, + array_agg( + CASE WHEN gruppe_kurzbz is not null THEN gruppe_kurzbz + ELSE (SELECT UPPER(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=stpl.studiengang_kz) || COALESCE(stpl.semester,'0') || COALESCE(stpl.verband,'') || COALESCE(stpl.gruppe,'') + END) as gruppen, array_agg(mitarbeiter_uid) as lektoren, + array_agg(ort_kurzbz) as orte, + array_agg(titel) as titel + FROM + lehre.tbl_stundenplandev as stpl + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id) + WHERE "; + + if ($lehrveranstaltung_id != '') + { + $qry.=" + lehreinheit_id IN ( + SELECT lehreinheit_id FROM lehre.tbl_lehreinheit + WHERE lehrveranstaltung_id = ? + AND studiensemester_kurzbz = ? + )"; + + $params[]= $lehrveranstaltung_id; + $params[]= $studiensemester_kurzbz; + + } + elseif ($lehreinheit_id!='') + { + $qry.=" lehreinheit_id = ?"; + + $params[]= $lehreinheit_id; + } + elseif ($mitarbeiter_uid != '') + { + $qry.= " + mitarbeiter_uid = ? + AND lehreinheit_id IN ( + SELECT lehreinheit_id + FROM lehre.tbl_lehreinheitmitarbeiter + JOIN lehre.tbl_lehreinheit USING (lehreinheit_id) + WHERE mitarbeiter_uid = ? + AND studiensemester_kurzbz IN ( ? ) + )"; + $params[] = $mitarbeiter_uid; + $params[] = $mitarbeiter_uid; + $params[] = $studiensemester_kurzbz; + } + elseif ($student_uid != '') + { + $qry.=" + lehreinheit_id IN ( + SELECT lehreinheit_id + FROM campus.vw_student_lehrveranstaltung + WHERE uid = ? + AND studiensemester_kurzbz = ? + )"; + + $params[] = $student_uid; + $params[] = $studiensemester_kurzbz; + } + else + return false; + + if($nurBevorstehende) + { + $qry.= " AND datum >= NOW()::date "; + } + + $qry.= " + GROUP BY stpl.datum, stpl.unr, stpl.lehreinheit_id, lehrfach.bezeichnung + ORDER BY stpl.datum, min(stpl.stunde), stpl.unr, stpl.lehreinheit_id + "; + + return $this->execQuery($qry, $params); + } + } From a4ffe9104b46e202c02e0ec3eca253ddcd62d21e Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 20 Dec 2021 09:49:49 +0100 Subject: [PATCH 115/354] Fixed query to get Studiensemest correctly when using getByDate method --- .../models/organisation/Studiensemester_model.php | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/application/models/organisation/Studiensemester_model.php b/application/models/organisation/Studiensemester_model.php index 07783cf0d..742757513 100644 --- a/application/models/organisation/Studiensemester_model.php +++ b/application/models/organisation/Studiensemester_model.php @@ -167,15 +167,13 @@ class Studiensemester_model extends DB_Model if (date_format(date_create($from), 'Y-m-d') > (date_format(date_create($to), 'Y-m-d'))) return success(array()); - $query = "SELECT * - FROM public.tbl_studiensemester - WHERE - (ende > ?::date AND start < ?::date) - OR start = ?::date - OR ende = ?::date - ORDER BY start DESC"; + $query = " + SELECT * + FROM public.tbl_studiensemester + WHERE ( ?::date < ende AND ?::date > start ) + ORDER BY start DESC"; - return $this->execQuery($query, array($from, $to, $from, $to)); + return $this->execQuery($query, array($from, $to)); } /** From c2d9afe3b1422f2e0a8e72dee3c354fa74d03228 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 20 Dec 2021 09:51:18 +0100 Subject: [PATCH 116/354] Added return value to sendSanchoMail to be able to handle mail error --- application/helpers/hlp_sancho_helper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/helpers/hlp_sancho_helper.php b/application/helpers/hlp_sancho_helper.php index 1653c44e7..d599e40bc 100644 --- a/application/helpers/hlp_sancho_helper.php +++ b/application/helpers/hlp_sancho_helper.php @@ -74,7 +74,7 @@ function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerIm $body = _parseMailContent('Sancho_Mail_Template', $layout); // Send mail - $ci->maillib->send($from, $to, $subject, $body, $alias = '', $cc, $bcc, $altMessage = '', $bulk = true, $autogenerated = true); + return $ci->maillib->send($from, $to, $subject, $body, $alias = '', $cc, $bcc, $altMessage = '', $bulk = true, $autogenerated = true); } /** From 4a2a30ac5eccc81fdc4485f9a5abd288d6d7d693 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 20 Dec 2021 09:55:29 +0100 Subject: [PATCH 117/354] Added Job mailUpdatedZeitwuensche Job sends Mail to STGL, Kompetenzfeld and LV Planung about todays updated Zeitwuensche. --- application/controllers/jobs/LVPlanJob.php | 349 ++++++++++++++++++++- 1 file changed, 348 insertions(+), 1 deletion(-) diff --git a/application/controllers/jobs/LVPlanJob.php b/application/controllers/jobs/LVPlanJob.php index 2688e5cc9..19359573a 100644 --- a/application/controllers/jobs/LVPlanJob.php +++ b/application/controllers/jobs/LVPlanJob.php @@ -19,7 +19,7 @@ */ if (!defined('BASEPATH')) exit('No direct script access allowed'); -class LVPlanJob extends CLI_Controller +class LVPlanJob extends JOB_Controller { /** * Initialize LVPlanJob Class @@ -149,4 +149,351 @@ class LVPlanJob extends CLI_Controller echo "Failed ".$fail."\n"; } } + + /** + * Send Mail to STGL, Kompetenzfeld and LV Planung about todays updated Zeitwuensche. + * STGL gets list only of lectors who updated future assigend courses concerning their STG. + * Kompetenzleitung gets list only of lectors who updated future assigend courses concerning their KF. + * LVPlanung gets list of lectors who updated future assigend courses. + */ + public function mailUpdatedZeitwuensche() + { + // Load models + $this->load->model('ressource/Stundenplandev_model', 'StundenplandevModel'); + $this->load->model('organisation/Studiensemester_model', 'StundiensemesterModel'); + $this->load->model('education/Lehreinheit_model', 'LehreinheitModel'); + $this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel'); + $this->load->model('person/Person_model', 'PersonModel'); + + // Load libs + $this->load->library('MailLib'); + + // Load helpers + $this->load->helper('hlp_sancho_helper'); + + // Start Log Message + $this->logInfo('Mail updated Zeitwuensche started.'); + + // Get all lectors, who updated their Zeitwunsch today + $db = new DB_Model(); + $result = $db->execReadOnlyQuery(' + SELECT mitarbeiter_uid, von, bis + FROM campus.tbl_zeitwunsch_gueltigkeit + WHERE updateamum::date = NOW()::date + -- dont get updated, if they were also inserted today + AND insertamum::date != NOW()::date + '); + + if (!hasData($result)) + { + return; // No updated Zeitwuensche today + } + + $uidByStg_arr = array(); // Mail data for Studiengang + $uidByOe_arr = array(); // Mail data for Kompetenzfeld + + // Loop through lectors, who updated their Zeitwunsch today + $zwg_arr = getData($result); + foreach ($zwg_arr as $zwg) + { + $next = $this->StudiensemesterModel->getNext(); + + // Get Studiensemester concerend by Zeitwunschgueltigkeit + // If Zeitwunschgueltigkeit Ende is null, get only till next Studiensemester, as LVs will be only + // assigned for actual or next Studiensemester + $result = $this->StudiensemesterModel->getByDate( + $zwg->von, + is_null($zwg->bis) ? $next->retval[0]->ende : $zwg->bis + ); + $studiensemester_arr = getData($result); + + // Get Stundenplan entries of lector of Studiensemester concerned by Zeitwunschgueltigkeit + $result = $this->StundenplandevModel + ->getStundenplanData( + null, + implode(array_column($studiensemester_arr, 'studiensemester_kurzbz'), ', '), + null, + $zwg->mitarbeiter_uid, + null, + true //...but only from now on + ); + + if (!hasData($result)) + { + continue; // Continue if lector has no Stundenplan entries + } + + // Loop through Stundenplan entries + $stundenplanData_arr = getData($result); + foreach ($stundenplanData_arr as $stundenplanData) + { + // Get LE of Stundenplan entry + $result = $this->LehreinheitModel->load($stundenplanData->lehreinheit_id); + + if (!hasData($result)) + { + // Return log error msg if no LE found and continue + $this->logError(' + LVPlanJob / mailUpdatedZeitwuensche did not find Lehreinheit for '. $zwg->mitarbeiter_uid + ); + continue; + } + + $le = getData($result)[0]; + + // GET LV by LE of Stundenplan entry + $result = $this->LehrveranstaltungModel->load($le->lehrveranstaltung_id); + + if (!hasData($result)) + { + // Return log error msg if no LV found and continue + $this->logError(' + LVPlanJob / mailUpdatedZeitwuensche did not find Lehrveranstaltung for '. $zwg->mitarbeiter_uid + ); + continue; + } + + $lv = getData($result)[0]; + + // Build unique Studiengang array + if (!array_key_exists($lv->studiengang_kz, $uidByStg_arr)) + { + $uidByStg_arr[$lv->studiengang_kz] = array($zwg->mitarbeiter_uid); + + } + else + { + // Add unique lector array to Studiengang array + if (!in_array($zwg->mitarbeiter_uid, $uidByStg_arr[$lv->studiengang_kz])) + { + $uidByStg_arr[$lv->studiengang_kz][]= $zwg->mitarbeiter_uid; + } + } + + // Build unique Kompetenzfeld array + if (!array_key_exists($lv->oe_kurzbz, $uidByOe_arr)) + { + $uidByOe_arr[$lv->oe_kurzbz] = array($zwg->mitarbeiter_uid); + + } + else + { + // Add unique lector array to Kompetenzfeld array + if (!in_array($zwg->mitarbeiter_uid, $uidByOe_arr[$lv->oe_kurzbz])) + { + $uidByOe_arr[$lv->oe_kurzbz][]= $zwg->mitarbeiter_uid; + } + } + } + } + + // Send mail to STG Assistenz + $result = $this->_sendMailToStg($uidByStg_arr); + if (isError($result)) + { + $this->logError(getError($result)); + } + + // Send mail to Kompetenzfeld Leitung + $result = $this->_sendMailToKF($uidByOe_arr); + if (isError($result)) + { + $this->logError(getError($result)); + } + + // Send mail to LV Planung + $result = $this->_sendMailToLvPlanung($zwg_arr); + if (isError($result)) + { + $this->logError(getError($result)); + } + + // End Log Message + $this->logInfo('Mail updated Zeitwuensche ended.'); + } + + /** + * Send Mail to STGL Assistance about lectors, who teach LV assigend to the STG, and who updated Zeitwuensche. + * + * @param $data_arr + * @param $stg_bezeichnung + */ + private function _sendMailToStg($data_arr) + { + foreach ($data_arr as $stg_kurzbz => $uid_arr) + { + // Get STG eMail + $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); + $result = $this->StudiengangModel->load($stg_kurzbz); + $stgMail = $result->retval[0]->email; + + $lektorenTabelle = ' + + + + + + + '; + + foreach($uid_arr as $uid) + { + $person = $this->PersonModel->getByUid($uid); + $lektorenTabelle.= ' + + + + + '; + } + + $lektorenTabelle.= '
    NameUID
    '. getData($person)[0]->vorname. ' '. getData($person)[0]->nachname. '['. $uid. ']
    '; + + $contentData_arr = array( + 'datentabelle' => $lektorenTabelle + ); + + // Send mail + if (!sendSanchoMail( + 'ZeitwunschUpdateMail', + $contentData_arr, + $stgMail, + 'Änderung von Zeitwünschen', + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg' + )) + { + $errorReceiverUid_arr[]= $stgMail; + } + } + + if (isset($errorReceiverUid_arr)) + { + return error('Mail updated Zeitwuensche could not be sent to :'. implode($errorReceiverUid_arr, ',')); + } + + return success(); + } + + /** + * Send Mail to Kompetenzfeld about lectors, who teach LV assigend to the Kompetenzfeld, and who updated Zeitwuensche. + * + * @param $data_arr + * @param $stg_bezeichnung + */ + private function _sendMailToKF($data_arr) + { + // Send mail to Komepetenzfeld Leitung + foreach ($data_arr as $oe_kurzbz => $uid_arr) + { + // Get KF Leitung eMail + $this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel'); + $result = $this->BenutzerfunktionModel->loadWhere(array( + 'funktion_kurzbz' => 'Leitung', + 'oe_kurzbz' => $oe_kurzbz + )); + $kfMail = $result->retval[0]->uid. '@'. DOMAIN; + + $lektorenTabelle = ' + + + + + + + '; + + foreach($uid_arr as $uid) + { + $person = $this->PersonModel->getByUid($uid); + $lektorenTabelle.= ' + + + + + '; + } + + $lektorenTabelle.= '
    NameUID
    '. getData($person)[0]->vorname. ' '. getData($person)[0]->nachname. '['. $uid. ']
    '; + + $contentData_arr = array( + 'datentabelle' => $lektorenTabelle + ); + + // Send mail + if (!sendSanchoMail( + 'ZeitwunschUpdateMail', + $contentData_arr, + $kfMail, + 'Änderung von Zeitwünschen', + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg' + )) + { + $errorReceiverUid_arr[]= $kfMail; + } + } + + if (isset($errorReceiverUid_arr)) + { + return error('Mail updated Zeitwuensche could not be sent to :'. implode($errorReceiverUid_arr, ',')); + } + + return success(); + } + + /** + * Send Mail to LV Planung about all lectors who updated Zeitwuensche. + * + * @param $data_arr + * @param $stg_bezeichnung + */ + private function _sendMailToLvPlanung($data_arr) + { + $lektorenTabelle = ' + + + + + + + '; + + foreach($data_arr as $lector) + { + $person = $this->PersonModel->getByUid($lector->mitarbeiter_uid); + $lektorenTabelle.= ' + + + + + '; + } + + $lektorenTabelle.= '
    NameUID
    '. getData($person)[0]->vorname. ' '. getData($person)[0]->nachname. '['. $lector->mitarbeiter_uid. ']
    '; + + $contentData_arr = array( + 'datentabelle' => $lektorenTabelle + ); + + // Send mail + if (!sendSanchoMail( + 'ZeitwunschUpdateMail', + $contentData_arr, + MAIL_LVPLAN, + 'Änderung von Zeitwünschen', + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg' + )) + { + $errorReceiver = MAIL_LVPLAN; + } + + if (isset($errorReceiver)) + { + return error('Mail updated Zeitwuensche could not be sent to :'. $errorReceiver); + } + + return success(); + } } From f73f26c6686d3a95a88fb4f5f4ce1dfc4695322d Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 20 Dec 2021 11:52:26 +0100 Subject: [PATCH 118/354] Added STG mail receiver to be addressed, when lector changes Zeitwunsch... ...and when lector has already been assigned to a course. Only addressing Studiengaenge that are concerned by Zeitwunsch change of lector. LV must be assigned in the selected Studiensemester, but not in the past --- cis/private/profile/zeitwunsch.php | 67 +++++++++++++++++++++++++++++- locale/de-AT/zeitwunsch.php | 2 +- locale/en-US/zeitwunsch.php | 2 +- 3 files changed, 68 insertions(+), 3 deletions(-) diff --git a/cis/private/profile/zeitwunsch.php b/cis/private/profile/zeitwunsch.php index 2c2a7bce1..41a295095 100644 --- a/cis/private/profile/zeitwunsch.php +++ b/cis/private/profile/zeitwunsch.php @@ -32,10 +32,12 @@ require_once('../../../include/datum.class.php'); require_once('../../../include/zeitwunsch.class.php'); require_once('../../../include/zeitwunsch_gueltigkeit.class.php'); require_once('../../../include/studiensemester.class.php'); +require_once('../../../include/studiengang.class.php'); require_once('../../../include/zeitaufzeichnung_gd.class.php'); require_once('../../../include/benutzer.class.php'); require_once('../../../include/mitarbeiter.class.php'); require_once('../../../include/lehrveranstaltung.class.php'); +require_once('../../../include/lehreinheit.class.php'); require_once('../../../include/lehrstunde.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/sprache.class.php'); @@ -354,6 +356,64 @@ function checkIsVerplant($uid, $studiensemester_kurzbz) return empty($lstd->result) ? false : true; } +/** + * Get Studiengaenge of STG assigend to LVs, to which lector is alredy assigend in + * the given Studiensemester. + * + * @param $uid + * @param $studiensemester_kurzbz + * @return array|void + */ +function getStgOfVerplant($uid, $studiensemester_kurzbz) +{ + $stg_arr = array(); // Mail data for Studiengang + + // Get Stundenplan entries of lector of Studiensemester concerned by Zeitwunschgueltigkeit + $lstd = new Lehrstunde(); + if (!$lstd->getStundenplanData( + 'stundenplandev', + null, + $studiensemester_kurzbz, + null, + $uid, + null, + true)) //...but only from now on + { + die($lstd->errormsg); + } + + // Loop through Stundenplan entries + foreach ($lstd->result as $row) + { + // Get LE of Stundenplan entry + $le = new Lehreinheit($row->lehreinheit_id); + + // GET LV by LE of Stundenplan entry + $lv = new Lehrveranstaltung($le->lehrveranstaltung_id); + + // Build Studiengang array + $stg_arr[] = $lv->studiengang_kz; + } + + // Make Studiengang array unique + return array_unique($stg_arr); +} + +/** + * Get Studiengang eMail Addresses. + * @param $stgKz_arr // Studiengang Kennzeichen Array + * @return array + */ +function getStgMail($stgKz_arr) +{ + $stgMail_arr = array(); + foreach($stgKz_arr as $stgKz) + { + $stg = new Studiengang($stgKz); + $stgMail_arr[]= $stg->email; + } + return $stgMail_arr; +} ?> @@ -664,11 +724,16 @@ function checkIsVerplant($uid, $studiensemester_kurzbz) echo ''; // end divCopyZWG echo '
    '; + + // Mail Adressen der Studiengaenge, wo Lektor ueber eine LV bereits verplant ist + $stgKzOfVerplant_arr = getStgOfVerplant($uid, $selected_ss); + $stgMail_arr = getStgMail($stgKzOfVerplant_arr); + echo '
    '; echo '
    '; echo '
    '; echo ''. $p->t("zeitwunsch/bearbeitungDeaktiviert"). ': '; - echo $p->t("zeitwunsch/bearbeitungDeaktiviertText", array($selected_ss, $p->t('global/studiengangsmanagement'))). ' + echo $p->t("zeitwunsch/bearbeitungDeaktiviertText", array($selected_ss, implode($stgMail_arr, '; '))). ' '. $p->t("zeitwunsch/bearbeitungAktivieren"). '
    '. $p->t("zeitwunsch/kompetenzfeldWirdInformiert") . ' '; diff --git a/locale/de-AT/zeitwunsch.php b/locale/de-AT/zeitwunsch.php index 35c8c3c99..e9d13a558 100644 --- a/locale/de-AT/zeitwunsch.php +++ b/locale/de-AT/zeitwunsch.php @@ -37,7 +37,7 @@ $this->phrasen['zeitwunsch/stundenBereitsVerplant']='Stunden für %s bereits ver $this->phrasen['zeitwunsch/fuer']='Zeitwunsch für %s  '; $this->phrasen['zeitwunsch/bearbeitungDeaktiviert']='Bearbeitung deaktiviert'; $this->phrasen['zeitwunsch/bearbeitungDeaktiviertText']='Ihnen wurden im %s bereits Lehrveranstaltung(en) zugeteilt.
    - Bitte stimmen Sie sich vor einer Änderung mit dem %s ab.
    + Bitte stimmen Sie sich vor einer Änderung per Mail mit den betroffenen Studiengängen ab.
    Möchten Sie trotzdem ohne Abstimmung bzw. nach bereits erfolgter Abstimmung fortsetzen?'; $this->phrasen['zeitwunsch/bearbeitungAktivieren']='Bearbeitung aktivieren'; $this->phrasen['zeitwunsch/kompetenzfeldWirdInformiert']= 'INFO: Kompetenzfeld wird über die Änderung per Mail informiert'; diff --git a/locale/en-US/zeitwunsch.php b/locale/en-US/zeitwunsch.php index d12863710..7aa8a6932 100644 --- a/locale/en-US/zeitwunsch.php +++ b/locale/en-US/zeitwunsch.php @@ -37,7 +37,7 @@ $this->phrasen['zeitwunsch/stundenBereitsVerplant']='Hours already scheduled for $this->phrasen['zeitwunsch/fuer']='Preferred time for %s  '; $this->phrasen['zeitwunsch/bearbeitungDeaktiviert']='Editing disabled'; $this->phrasen['zeitwunsch/bearbeitungDeaktiviertText']='You have already been assigned to course(s) in %s.
    - Please agree with %s before making a change.
    + Please agree per Mail with the degree programs concerned, before making a change.
    Would you still like to continue without agreement or after having agreed?'; $this->phrasen['zeitwunsch/bearbeitungAktivieren']='Enable editing'; $this->phrasen['zeitwunsch/kompetenzfeldWirdInformiert']= 'INFO: The field of competence will be informed of your changes by email'; From e0bc6198d021e9898df78aed8a87a8d1ea35d12b Mon Sep 17 00:00:00 2001 From: ma0048 Date: Mon, 20 Dec 2021 13:04:06 +0100 Subject: [PATCH 119/354] Name statt uid bei der "wird bearbeitet von" Meldung --- .../controllers/system/infocenter/InfoCenter.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index a69a43220..d2a058318 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -1708,9 +1708,15 @@ class InfoCenter extends Auth_Controller if (isset($locked->retval[0]->uid)) { - $lockedby = $locked->retval[0]->uid; - if ($lockedby !== $this->_uid) + if ($locked->retval[0]->uid !== $this->_uid) + { $lockedbyother = true; + + if (!$lockedby = getData($this->PersonModel->getFullName($locked->retval[0]->uid))) + { + show_error('Failed retrieving person'); + } + } } $stammdaten = $this->PersonModel->getPersonStammdaten($person_id, true); From 2d46d80b5f62c3075283d69971c5317e1f84894d Mon Sep 17 00:00:00 2001 From: ma0048 Date: Wed, 22 Dec 2021 16:26:45 +0100 Subject: [PATCH 120/354] meldung wird nun auch angezeigt wenn es die selbe person id ist --- application/models/person/Person_model.php | 37 ++++++++++++++++------ 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php index ec5522674..37d6fb9ff 100644 --- a/application/models/person/Person_model.php +++ b/application/models/person/Person_model.php @@ -268,16 +268,35 @@ class Person_model extends DB_Model public function checkDuplicate($person_id) { - $qry = "SELECT sp.person_id - FROM public.tbl_person p - LEFT JOIN public.tbl_person sp ON p.vorname = sp.vorname - AND p.nachname = sp.nachname - AND p.gebdatum = sp.gebdatum - JOIN public.tbl_prestudent ps ON sp.person_id = ps.person_id - JOIN public.tbl_prestudentstatus pss ON ps.prestudent_id = pss.prestudent_id - WHERE p.person_id = ? AND sp.person_id != ? AND pss.status_kurzbz = ?"; + $qry = "SELECT p.person_id + FROM public.tbl_person p + JOIN public.tbl_prestudent USING (person_id) + JOIN public.tbl_prestudentstatus USING (prestudent_id) + WHERE status_kurzbz = 'Abbrecher' + AND person_id IN (SELECT p2.person_id + FROM public.tbl_person p + JOIN public.tbl_person p2 + ON p.vorname = p2.vorname + AND p.nachname = p2.nachname + AND p.gebdatum = p2.gebdatum + WHERE p.person_id = ? + )"; + $person = $this->execQuery($qry, array($person_id)); - return $this->execQuery($qry, array($person_id, $person_id, 'Abbrecher')); + if (hasData($person)) + { + $qry = "SELECT p2.person_id + FROM public.tbl_person p + JOIN public.tbl_person p2 + ON p.vorname = p2.vorname + AND p.nachname = p2.nachname + AND p.gebdatum = p2.gebdatum + WHERE p.person_id = ?"; + + return $this->execQuery($qry, array($person_id)); + } + + return $person; } } From 4d223145d9bee02359c9fb0dcb6bd8b914bace3c Mon Sep 17 00:00:00 2001 From: ma0048 Date: Wed, 22 Dec 2021 16:32:00 +0100 Subject: [PATCH 121/354] if angepasst --- .../controllers/system/infocenter/InfoCenter.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index d2a058318..1d142d615 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -1708,14 +1708,14 @@ class InfoCenter extends Auth_Controller if (isset($locked->retval[0]->uid)) { + if (!$lockedby = getData($this->PersonModel->getFullName($locked->retval[0]->uid))) + { + show_error('Failed retrieving person'); + } + if ($locked->retval[0]->uid !== $this->_uid) { $lockedbyother = true; - - if (!$lockedby = getData($this->PersonModel->getFullName($locked->retval[0]->uid))) - { - show_error('Failed retrieving person'); - } } } From 4c3fe39df73c5ac813ee61b865e12eb8b350a0be Mon Sep 17 00:00:00 2001 From: ma0048 Date: Mon, 3 Jan 2022 13:12:01 +0100 Subject: [PATCH 122/354] zeigt nun noch die lvs des studiengangs an --- content/student/studentprojektarbeit.js.php | 3 ++- rdf/lehrveranstaltung.rdf.php | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/content/student/studentprojektarbeit.js.php b/content/student/studentprojektarbeit.js.php index 40af4107d..124516357 100644 --- a/content/student/studentprojektarbeit.js.php +++ b/content/student/studentprojektarbeit.js.php @@ -652,11 +652,12 @@ function StudentProjektarbeitNeu() StudentProjektarbeitResetFields(); StudentProjektarbeitDetailDisableFields(false); StudentProjektbetreuerDisableFields(true); + var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value; var student_uid = document.getElementById('student-detail-textbox-uid').value; //Lehrveranstaltung DropDown laden var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung'); - url='rdf/lehrveranstaltung.rdf.php?uid='+student_uid+"&projektarbeit=true&"+gettimestamp(); + url='rdf/lehrveranstaltung.rdf.php?uid='+student_uid+'&stg_kz='+stg_kz+"&projektarbeit=true&"+gettimestamp(); //Alte DS entfernen var oldDatasources = LvDropDown.database.GetDataSources(); diff --git a/rdf/lehrveranstaltung.rdf.php b/rdf/lehrveranstaltung.rdf.php index e0f967727..c3519d73e 100644 --- a/rdf/lehrveranstaltung.rdf.php +++ b/rdf/lehrveranstaltung.rdf.php @@ -73,7 +73,11 @@ else $lehrveranstaltung=new lehrveranstaltung(); if($student_uid!='') +{ $lehrveranstaltung->load_lva_student($student_uid); + if ($stg_kz !== '') + $lehrveranstaltung->load_lva($stg_kz); +} elseif($lehrveranstaltung_kompatibel_id!='') { // Laedt die Lehrveranstaltung und alle die dazu kompatibel sind From fe41a3d830549c3051002ab7d099a4e8be10290f Mon Sep 17 00:00:00 2001 From: ma0068 Date: Mon, 3 Jan 2022 15:23:11 +0100 Subject: [PATCH 123/354] =?UTF-8?q?Nationensperre=20im=20Dropdown=20f?= =?UTF-8?q?=C3=BCr=20Staatsbuergerschaft,=20Geburtsnation,=20ZGVNation=20u?= =?UTF-8?q?nd=20ZGVMasternation=20umgesetzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/student/studentdetailoverlay.xul.php | 41 +++++++++++++++++--- rdf/nation.rdf.php | 1 + 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/content/student/studentdetailoverlay.xul.php b/content/student/studentdetailoverlay.xul.php index dd86b3657..d038364fc 100644 --- a/content/student/studentdetailoverlay.xul.php +++ b/content/student/studentdetailoverlay.xul.php @@ -107,9 +107,16 @@ echo ''; ref="http://www.technikum-wien.at/nation/liste" > @@ -130,12 +137,21 @@ echo ''; ref="http://www.technikum-wien.at/nation/liste" > + +