From bbc6c8a470713c5cd41162001360cf1723b47c24 Mon Sep 17 00:00:00 2001 From: Nikolaus Krondraf Date: Tue, 11 Sep 2018 11:46:16 +0200 Subject: [PATCH 01/21] zeigt LVs des Studienplans statt des Studiengangs bei Anrechnungen --- content/student/studentoverlay.js.php | 6 +- rdf/lehrveranstaltung_studienplan.rdf.php | 206 ++++++++++++++++++++++ 2 files changed, 211 insertions(+), 1 deletion(-) create mode 100644 rdf/lehrveranstaltung_studienplan.rdf.php diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php index 7a6c082b4..ad71d1ad4 100644 --- a/content/student/studentoverlay.js.php +++ b/content/student/studentoverlay.js.php @@ -4529,9 +4529,13 @@ function StudentAnrechnungNeu() var col = tree.columns ? tree.columns["student-treecol-studiengang_kz"] : "student-treecol-studiengang_kz"; var stg_kz = tree.view.getCellText(tree.currentIndex,col); + // Prestudent-ID ermitteln + var col = tree.columns ? tree.columns["student-treecol-prestudent_id"] : "student-treecol-prestudent_id"; + var prestudentId = tree.view.getCellText(tree.currentIndex,col); + //Lehrveranstaltung Drop Down laden var LVDropDown = document.getElementById('student-anrechnungen-menulist-lehrveranstaltung'); - url="rdf/lehrveranstaltung.rdf.php?stg_kz="+stg_kz+"&"+gettimestamp(); + url="rdf/lehrveranstaltung_studienplan.rdf.php?&prestudent="+prestudentId+"&"+gettimestamp(); //Alte DS entfernen var oldDatasources = LVDropDown.database.GetDataSources(); diff --git a/rdf/lehrveranstaltung_studienplan.rdf.php b/rdf/lehrveranstaltung_studienplan.rdf.php new file mode 100644 index 000000000..72f78a7b1 --- /dev/null +++ b/rdf/lehrveranstaltung_studienplan.rdf.php @@ -0,0 +1,206 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/* + * Created on 02.12.2004 + * + */ +// header fuer 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/functions.inc.php'); +require_once('../include/lehrveranstaltung.class.php'); +require_once('../include/prestudent.class.php'); + +$uid=get_uid(); + +$error_msg=''; +$db = new basis_db(); + +$error_msg.=loadVariables($uid); + +if (isset($_GET['prestudent'])) + $prestudent_id = $_GET['prestudent']; +else + die('prestudent is not set!'); + +if (isset($semester_aktuell)) + $studiensemester=$semester_aktuell; +else + die('studiensemester is not set!'); + +if (isset($_GET['stg_kz'])) + $stg_kz=$_GET['stg_kz']; +else + $stg_kz=null; +if (isset($_GET['sem']) && is_numeric($_GET['sem'])) + $sem=$_GET['sem']; +else + $sem=null; +if(isset($_GET['uid'])) + $student_uid = $_GET['uid']; +else + $student_uid=null; + +if(isset($_GET['lehrveranstaltung_kompatibel_id'])) +{ + $lehrveranstaltung_kompatibel_id = $_GET['lehrveranstaltung_kompatibel_id']; + isset($_GET['self']) ? $self = $_GET['self'] : $self = 1; +} +else + $lehrveranstaltung_kompatibel_id=null; + +$lehrveranstaltung=new lehrveranstaltung(); + +if($student_uid!='') + $lehrveranstaltung->load_lva_student($student_uid); +elseif($lehrveranstaltung_kompatibel_id!='') +{ + // Laedt die Lehrveranstaltung und alle die dazu kompatibel sind + $lvid_arr = $lehrveranstaltung->loadLVkompatibel($lehrveranstaltung_kompatibel_id); + if($self == 1) + $lvid_arr[]=$lehrveranstaltung_kompatibel_id; + + if(isset($_GET['lehrfach_id'])) + $lvid_arr[]=$_GET['lehrfach_id']; + $lehrveranstaltung->loadArray($lvid_arr); +} +else +{ + $prestudent = new Prestudent(); + $prestudent->getLastStatus($prestudent_id); + + $lehrveranstaltung->loadLehrveranstaltungStudienplan($prestudent->studienplan_id, $sem); +} + +$rdf_url='http://www.technikum-wien.at/lehrveranstaltung/'; + +echo ' + + + +'; + +if(isset($_GET['optional']) && $_GET['optional']=='true') +{ + echo' + + + + + + + + + + + + + + + + + + + + + + '; +} + +foreach ($lehrveranstaltung->lehrveranstaltungen as $row) +{ + if(isset($_GET['projektarbeit']) && $row->projektarbeit==false) + { + if(isset($_GET['withlv']) && $_GET['withlv']==$row->lehrveranstaltung_id) + { + //Diese LV soll zusaetzlich in der liste aufscheinen unabhaengig ob + //Projektarbeit gesetzt ist oder nicht + } + else + continue; + } + + if(isset($_GET['genehmigt'])) + { + // Wenn genehmigt Parameter mitgeliefert wird, dann werden nur LVs + // geliefert die genehmigten Studienordnungen zugeordnet sind + // Module werden nicht geliefert + $qry = "SELECT + count(*) as anzahl + FROM + lehre.tbl_studienplan_lehrveranstaltung + JOIN lehre.tbl_studienplan USING(studienplan_id) + JOIN lehre.tbl_studienordnung USING(studienordnung_id) + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + JOIN lehre.tbl_lehrtyp USING(lehrtyp_kurzbz) + WHERE + tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id=".$db->db_add_param($row->lehrveranstaltung_id)." + AND tbl_studienordnung.status_kurzbz='approved' + AND lehrtyp_kurzbz='lv'"; + if($result_genehmigt = $db->db_query($qry)) + { + if($row_genehmigt = $db->db_fetch_object($result_genehmigt)) + { + if($row_genehmigt->anzahl==0) + continue; + } + } + } + + echo' + + lehrveranstaltung_id.']]> + kurzbz.']]> + bezeichnung.']]> + bezeichnung_english.']]> + studiengang_kz.']]> + semester.']]> + sprache.']]> + ects.']]> + semesterstunden.']]> + anmerkung.']]> + lehre?'Ja':'Nein').']]> + lehreverzeichnis.']]> + aktiv?'Ja':'Nein').']]> + planfaktor.']]> + planlektoren.']]> + planpersonalkosten.']]> + plankostenprolektor.']]> + lehrform_kurzbz.']]> + orgform_kurzbz.']]> + oe_kurzbz.']]> + + '; +} +?> + + From 792a293524f0fc5490de95947d72a097f4889523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 12 Sep 2018 07:06:06 +0200 Subject: [PATCH 02/21] =?UTF-8?q?Berechtigungen=20-=20Berechtigungsrollen?= =?UTF-8?q?=20die=20zu=20Funktionen=20zugeteilt=20sind=20werden=20jetzt=20?= =?UTF-8?q?korrekt=20aufgel=C3=B6st?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/benutzerberechtigung.class.php | 16 ++++++++++++++++ .../stammdaten/benutzerberechtigung_details.php | 15 ++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/include/benutzerberechtigung.class.php b/include/benutzerberechtigung.class.php index a615729f4..69d4947bf 100644 --- a/include/benutzerberechtigung.class.php +++ b/include/benutzerberechtigung.class.php @@ -421,6 +421,22 @@ class benutzerberechtigung extends basis_db UNION + SELECT + benutzerberechtigung_id, tbl_benutzerfunktion.uid, tbl_benutzerrolle.funktion_kurzbz, + tbl_benutzerrolle.rolle_kurzbz, tbl_rolleberechtigung.berechtigung_kurzbz, tbl_benutzerrolle.art, tbl_rolleberechtigung.art art1, + tbl_benutzerfunktion.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start, + tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon, + tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon,tbl_benutzerrolle.kostenstelle_id,tbl_benutzerrolle.anmerkung + FROM + system.tbl_benutzerrolle + JOIN public.tbl_benutzerfunktion USING(funktion_kurzbz) + JOIN system.tbl_rolleberechtigung ON(tbl_benutzerrolle.rolle_kurzbz=tbl_rolleberechtigung.rolle_kurzbz) + WHERE tbl_benutzerfunktion.uid=".$this->db_add_param($uid)." + AND (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) + AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now()) + + UNION + SELECT benutzerberechtigung_id, '', tbl_benutzerrolle.funktion_kurzbz, tbl_benutzerrolle.rolle_kurzbz, tbl_benutzerrolle.berechtigung_kurzbz, tbl_benutzerrolle.art, tbl_benutzerrolle.art art1, diff --git a/vilesci/stammdaten/benutzerberechtigung_details.php b/vilesci/stammdaten/benutzerberechtigung_details.php index 690bf720b..7b3482de0 100644 --- a/vilesci/stammdaten/benutzerberechtigung_details.php +++ b/vilesci/stammdaten/benutzerberechtigung_details.php @@ -391,7 +391,20 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz'])) $sel = ""; $htmlstr .= ""; } - $htmlstr .= " \n"; + $htmlstr .= " "; + + // Wenn editiert wird, zu der Zeile Springen + $htmlstr.=" + + "; + $htmlstr.="\n"; //Berechtigung $htmlstr .= " @@ -185,7 +186,7 @@ else echo "".$row->nachname.""; echo "".$row->vorname.""; echo "".$row->uid.""; - if(!$gruppe->generiert && $rechte->isBerechtigt('lehre/gruppe',null,'suid')) + if(!$generiertegruppe && $rechte->isBerechtigt('lehre/gruppe',null,'suid')) echo 'Delete'; echo "\n"; } From 352ccf530c93ac462b8572872760f3ffe7aa01a2 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 13 Sep 2018 09:39:50 +0200 Subject: [PATCH 07/21] Bugfixed not-array-error-msg in Ampelverwaltung --- cis/private/tools/ampelverwaltung.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/cis/private/tools/ampelverwaltung.php b/cis/private/tools/ampelverwaltung.php index 20c91b8b5..c3135b71e 100644 --- a/cis/private/tools/ampelverwaltung.php +++ b/cis/private/tools/ampelverwaltung.php @@ -112,7 +112,10 @@ list( getUserAmpelData($user); //sort ampeln -$user_ampel_arr = sortUserAmpelData($user_ampel_arr); +if (!empty($user_ampel_arr)) +{ + $user_ampel_arr = sortUserAmpelData($user_ampel_arr); +} //filter ampeln for popup (if at least one mandatory, which is neither expired nor before vorlaufzeit) if ($is_popup) @@ -224,20 +227,27 @@ function getUserAmpelData($user) function sortUserAmpelData($user_ampel_arr) { //first: sort deadline + $deadline_arr = array(); foreach ($user_ampel_arr as $key => $val) - $deadline[$key] = $val['deadline']; + { + $deadline_arr[$key] = $val['deadline']; + } - array_multisort($deadline, SORT_DESC, $user_ampel_arr); - + array_multisort($deadline_arr, SORT_DESC, $user_ampel_arr); + //second: sort inactive after active $active_ampel_arr = array(); $inactive_ampel_arr = array(); foreach ($user_ampel_arr as $user_ampel) { if ($user_ampel['active']) + { $active_ampel_arr[] = $user_ampel; + } else + { $inactive_ampel_arr[] = $user_ampel; + } } return $user_ampel_arr = array_merge($active_ampel_arr, $inactive_ampel_arr); } From 6695bf027e48c91b6baf08ccf21e271a02658347 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 13 Sep 2018 09:51:28 +0200 Subject: [PATCH 08/21] added nategood/httpful to composer in core --- composer.json | 2 ++ composer.lock | 54 +++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 0b1b06750..f8e26e736 100644 --- a/composer.json +++ b/composer.json @@ -267,6 +267,8 @@ "ml/json-ld": "1.*", "mottie/tablesorter": "^2.29", + "nategood/httpful": "^0.2.20", + "netcarver/textile": "^3.5", "nicolaskruchten/pivottable": "^2.15.0", diff --git a/composer.lock b/composer.lock index 0e505abcd..a160578ea 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "0a7b99cf08f40f15cad6397a2097d834", - "content-hash": "4065f6ebe38d16462908ebbdac8adf7d", + "hash": "e5e3e110545316baa4087a8e1a283a7c", + "content-hash": "e191f9af8e2103de78eaa130122ec72b", "packages": [ { "name": "BlackrockDigital/startbootstrap-sb-admin-2", @@ -1159,6 +1159,56 @@ ], "time": "2018-07-10 13:32:19" }, + { + "name": "nategood/httpful", + "version": "0.2.20", + "source": { + "type": "git", + "url": "https://github.com/nategood/httpful.git", + "reference": "c1cd4d46a4b281229032cf39d4dd852f9887c0f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nategood/httpful/zipball/c1cd4d46a4b281229032cf39d4dd852f9887c0f6", + "reference": "c1cd4d46a4b281229032cf39d4dd852f9887c0f6", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "*" + }, + "type": "library", + "autoload": { + "psr-0": { + "Httpful": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nate Good", + "email": "me@nategood.com", + "homepage": "http://nategood.com" + } + ], + "description": "A Readable, Chainable, REST friendly, PHP HTTP Client", + "homepage": "http://github.com/nategood/httpful", + "keywords": [ + "api", + "curl", + "http", + "requests", + "rest", + "restful" + ], + "time": "2015-10-26 16:11:30" + }, { "name": "netcarver/textile", "version": "v3.6.0", From 0916a27ecbca59c7d0e876fce022f57bf77f444a Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 13 Sep 2018 09:55:06 +0200 Subject: [PATCH 09/21] - replaced spaces by hyphens in lv group names - updated comment for getBenutzerFunktionen --- application/models/education/Lehrveranstaltung_model.php | 2 +- application/models/person/Benutzerfunktion_model.php | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php index c55ce8e10..e2578b388 100644 --- a/application/models/education/Lehrveranstaltung_model.php +++ b/application/models/education/Lehrveranstaltung_model.php @@ -88,7 +88,7 @@ class Lehrveranstaltung_model extends DB_Model $query = " - SELECT lehrveranstaltung_id, ? || '_' || kuerzel || '_' || lvpostfix AS lvgroupname + SELECT lehrveranstaltung_id, ? || '_' || kuerzel || '_' || replace(lvpostfix, ' ', '-') AS lvgroupname FROM( SELECT DISTINCT ON (kuerzel, lvpostfix) lehrveranstaltung_id, diff --git a/application/models/person/Benutzerfunktion_model.php b/application/models/person/Benutzerfunktion_model.php index 6a15df107..e6f030e7f 100644 --- a/application/models/person/Benutzerfunktion_model.php +++ b/application/models/person/Benutzerfunktion_model.php @@ -25,8 +25,10 @@ class Benutzerfunktion_model extends DB_Model /** * Gets all Benutzer for a given OE and specified Benutzerfunktionen - * @param $oe_kurzbz * @param $funktion_kurzbz string with one benutzerfunktionname or array with one or more + * @param $oe_kurzbz + * @param bool $activeoeonly if true, retrieve only active Organisationseinheiten + * @param bool $activebenonly if true, retrieve only active Benutzer * @return array|null */ public function getBenutzerFunktionen($funktion_kurzbz, $oe_kurzbz = null, $activeoeonly = false, $activebenonly = false) @@ -41,7 +43,7 @@ class Benutzerfunktion_model extends DB_Model if ($activebenonly === true) $query .= " JOIN public.tbl_benutzer USING(uid)"; - $query .= "WHERE (datum_von <= NOW() OR datum_von IS NULL) AND (datum_bis >= NOW() OR datum_bis IS NULL)"; + $query .= " WHERE (datum_von <= NOW() OR datum_von IS NULL) AND (datum_bis >= NOW() OR datum_bis IS NULL)"; if (is_string($funktion_kurzbz)) { From 99265cb30aa446d492ca0947a2424a0638a5e72e Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 13 Sep 2018 14:58:13 +0200 Subject: [PATCH 10/21] Moved functions to addons-casetime-function.inc.php --- include/functions.inc.php | 113 -------------------------------------- 1 file changed, 113 deletions(-) diff --git a/include/functions.inc.php b/include/functions.inc.php index 866bbc115..6f6c5cc3b 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -1097,117 +1097,4 @@ function PersonLog($person_id, $logtype_kurzbz, $logdata, $taetigkeit_kurzbz, $a $personlog = new personlog(); $personlog->log($person_id, $logtype_kurzbz, $logdata, $taetigkeit_kurzbz, $app, $oe_kurzbz, $user); } - -/** - * Sendet einen Request an den CaseTime Server um die Zeitfehler abzufragen - */ -function getCaseTimeErrors($uid) -{ - $ch = curl_init(); - - $url = CASETIME_SERVER.'/sync/get_zeitfehler'; - - $params = 'sachb='.$uid; - - curl_setopt($ch, CURLOPT_URL, $url.'?'.$params ); //Url together with parameters - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Return data instead printing directly in Browser - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , 7); //Timeout after 7 seconds - curl_setopt($ch, CURLOPT_USERAGENT , "FH-Complete CaseTime Addon"); - curl_setopt($ch, CURLOPT_HEADER, 0); - - $result = curl_exec($ch); - - if(curl_errno($ch)) - { - return 'Curl error: ' . curl_error($ch); - curl_close($ch); - } - else - { - curl_close($ch); - $data = json_decode($result); - - if(isset($data->STATUS) && $data->STATUS=='OK') - { - return $data->RESULT; - } - else - return false; - } -} - -/** - * Sendet einen Request an den CaseTime Server um den Zeitsaldo abzufragen - */ -function getCaseTimeZeitsaldo($uid) -{ - $ch = curl_init(); - - $url = CASETIME_SERVER.'/sync/get_zeitsaldo'; - - $params = 'sachb='.$uid; - - curl_setopt($ch, CURLOPT_URL, $url.'?'.$params ); //Url together with parameters - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Return data instead printing directly in Browser - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , 7); //Timeout after 7 seconds - curl_setopt($ch, CURLOPT_USERAGENT , "FH-Complete CaseTime Addon"); - curl_setopt($ch, CURLOPT_HEADER, 0); - - $result = curl_exec($ch); - - if(curl_errno($ch)) - { - return 'Curl error: ' . curl_error($ch); - curl_close($ch); - } - else - { - curl_close($ch); - $data = json_decode($result); - - if(isset($data->STATUS) && $data->STATUS=='OK') - { - return $data->RESULT; - } - else - return false; - } -} - -/** - * Sendet einen Request an den CaseTime Server um den Urlaubssaldo abzufragen - */ -function getCastTimeUrlaubssaldo($uid) -{ - $ch = curl_init(); - - $url = CASETIME_SERVER.'/sync/get_urlaubsaldo'; - - $params = 'sachb='.$uid; - - curl_setopt($ch, CURLOPT_URL, $url.'?'.$params); //Url together with parameters - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Return data instead printing directly in Browser - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 7); //Timeout after 7 seconds - curl_setopt($ch, CURLOPT_USERAGENT, "FH-Complete CaseTime Addon"); - curl_setopt($ch, CURLOPT_HEADER, 0); - - $result = curl_exec($ch); - - if (curl_errno($ch)) - { - return 'Curl error: '.curl_error($ch); - } - else - { - curl_close($ch); - $data = json_decode($result); - - if (isset($data->STATUS) && $data->STATUS == 'OK') - { - return $data->RESULT; - } - else - return false; - } -} ?> From 1cea25a6f37c8c5565bb29320f1c6cd4927234b8 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 14 Sep 2018 15:53:33 +0200 Subject: [PATCH 11/21] load correct Studiensemester Model --- application/models/education/Lehrveranstaltung_model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php index e2578b388..c042c2e0a 100644 --- a/application/models/education/Lehrveranstaltung_model.php +++ b/application/models/education/Lehrveranstaltung_model.php @@ -22,7 +22,6 @@ class Lehrveranstaltung_model extends DB_Model */ public function getLehrveranstaltungGroupNames($studiensemester_kurzbz, $ausbildungssemester = null, $studiengang_kz = null, $lehrveranstaltung_ids = null) { - $this->load->model('system/studiensemester_model', 'StudiensemesterModel'); $this->load->model('organisation/studiengang_model', 'StudiengangModel'); $studiengang_kz_arr = array(); @@ -60,6 +59,7 @@ class Lehrveranstaltung_model extends DB_Model } else { + $this->load->model('organisation/studiensemester_model', 'StudiensemesterModel'); foreach ($studiengang_kz_arr as $studiengang_kz_item) { $result = $this->StudiensemesterModel->getAusbildungssemesterByStudiensemesterAndStudiengang($studiensemester_kurzbz, $studiengang_kz_item); From c32f9b6b5a8c8b9cc9f40ca0b6f1d050b7367201 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 14 Sep 2018 15:54:18 +0200 Subject: [PATCH 12/21] =?UTF-8?q?PHP-Error=20behoben=20wenn=20versucht=20w?= =?UTF-8?q?ird=20Suchanfragen=20=C3=BCber=20Caldav=20Schnittstelle=20auszu?= =?UTF-8?q?f=C3=BChren?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webdav/Principal.php | 92 ++++++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/webdav/Principal.php b/webdav/Principal.php index 0c898c250..7e3241dac 100644 --- a/webdav/Principal.php +++ b/webdav/Principal.php @@ -3,40 +3,40 @@ /** * PDO principal backend * - * This is a simple principal backend that maps exactly to the users table, as + * This is a simple principal backend that maps exactly to the users table, as * used by Sabre_DAV_Auth_Backend_PDO. * - * It assumes all principals are in a single collection. The default collection + * It assumes all principals are in a single collection. The default collection * is 'principals/', but this can be overriden. * * @package Sabre * @subpackage DAVACL * @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved. - * @author Evert Pot (http://www.rooftopsolutions.nl/) + * @author Evert Pot (http://www.rooftopsolutions.nl/) * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License */ class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\BackendInterface { /** - * PDO table name for 'principals' - * - * @var string + * PDO table name for 'principals' + * + * @var string */ protected $tableName; /** - * PDO table name for 'group members' - * - * @var string + * PDO table name for 'group members' + * + * @var string */ protected $groupMembersTableName; protected $result_ma; /** * Sets up the backend. - * + * * @param PDO $pdo - * @param string $tableName + * @param string $tableName */ public function __construct($auth) { @@ -46,7 +46,7 @@ class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\ $ma = new mitarbeiter(); $this->result_ma = $ma->getMitarbeiter(null,null,null); */ - } + } /** * Liefert den eingeloggten User @@ -60,20 +60,20 @@ class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\ /** * Returns a list of principals based on a prefix. * - * This prefix will often contain something like 'principals'. You are only + * This prefix will often contain something like 'principals'. You are only * expected to return principals that are in this base path. * - * You are expected to return at least a 'uri' for every user, you can + * You are expected to return at least a 'uri' for every user, you can * return any additional properties if you wish so. Common properties are: - * {DAV:}displayname - * {http://sabredav.org/ns}email-address - This is a custom SabreDAV + * {DAV:}displayname + * {http://sabredav.org/ns}email-address - This is a custom SabreDAV * field that's actualy injected in a number of other properties. If * you have an email address, use this property. - * - * @param string $prefixPath - * @return array + * + * @param string $prefixPath + * @return array */ - public function getPrincipalsByPrefix($prefixPath) + public function getPrincipalsByPrefix($prefixPath) { //$prefixPath = principals //error_log('Principal.php/getPrincipalsByPrefix('.$prefixPath.')'); @@ -82,7 +82,7 @@ class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\ if($prefixPath=='principals') { - + $principals[] = array( 'id' => $user, 'uri' => 'principals/'.$user, @@ -118,7 +118,7 @@ class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\ '{DAV:}displayname' => '', '{http://sabredav.org/ns}email-address' => '', ); - + }*/ } else //if($prefixPath=='principals/oesi') @@ -138,13 +138,13 @@ class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\ /** * Returns a specific principal, specified by it's path. - * The returned structure should be the exact same as from - * getPrincipalsByPrefix. - * - * @param string $path - * @return array + * The returned structure should be the exact same as from + * getPrincipalsByPrefix. + * + * @param string $path + * @return array */ - public function getPrincipalByPath($path) + public function getPrincipalByPath($path) { //$path = principals/oesi //error_log('Principal.php/getPrincipalByPath('.$path.')'); @@ -164,26 +164,26 @@ class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\ } /** - * Returns the list of members for a group-principal - * - * @param string $principal - * @return array + * Returns the list of members for a group-principal + * + * @param string $principal + * @return array */ - public function getGroupMemberSet($principal) + public function getGroupMemberSet($principal) { //error_log('Principal.php/getGroupMemberSet('.$principal.')'); $result = array(); return $result; - + } /** - * Returns the list of groups a principal is a member of - * - * @param string $principal - * @return array + * Returns the list of groups a principal is a member of + * + * @param string $principal + * @return array */ - public function getGroupMembership($principal) + public function getGroupMembership($principal) { //$principal = username // error_log('Principal.php/getGroupMembership('.$principal.')'); @@ -215,17 +215,17 @@ class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\ /** * Updates the list of group members for a group principal. * - * The principals should be passed as a list of uri's. - * - * @param string $principal - * @param array $members + * The principals should be passed as a list of uri's. + * + * @param string $principal + * @param array $members * @return void */ - public function setGroupMemberSet($principal, array $members) + public function setGroupMemberSet($principal, array $members) { throw new \Sabre\DAV\Exception('Not implemented'); } - + public function updatePrincipal($path, $mutations) { throw new \Sabre\DAV\Exception('Not implemented'); @@ -233,6 +233,6 @@ class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\ public function searchPrincipals($prefixPath,array $searchProperties) { - throw new \Sabre\DAV\Exceptin('Not implemented'); + throw new \Sabre\DAV\Exception('Not implemented'); } } From 0898ad8c9e2287e0aef39b9afab8d1cc1df44549 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 14 Sep 2018 16:01:28 +0200 Subject: [PATCH 13/21] =?UTF-8?q?Fehler=20behoben=20wodurch=20beim=20?= =?UTF-8?q?=C3=84ndern=20von=20DMS=20Kategorien=20PHP=20Notices=20angezeig?= =?UTF-8?q?t=20wurden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cms/tinymce_dms.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cms/tinymce_dms.php b/cms/tinymce_dms.php index eb10e5a4d..c54fcc385 100644 --- a/cms/tinymce_dms.php +++ b/cms/tinymce_dms.php @@ -330,7 +330,7 @@ if (isset($_POST['fileupload'])) if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { $dms = new dms(); - + if(!$dms->setPermission($uploadfile)) echo $dms->errormsg; @@ -1616,7 +1616,7 @@ function drawChangeKategorie($dms_id, $page = NULL, $dpp = NULL) if ($kategorienResult->kategorie_kurzbz == $dms->kategorie_kurzbz) $selected = 'selected'; - echo ''; + echo ''; } echo ' From 5ca09b8ddc0b37adeaa8decb1d271368822e245d Mon Sep 17 00:00:00 2001 From: Gerald Raab Date: Mon, 17 Sep 2018 16:54:26 +0200 Subject: [PATCH 14/21] Sperrdatum bei Zeitsperren, Erweiterte Zeiteintragungsfeatures wenn Projekte zugeordnet sind --- cis/private/profile/zeitsperre_resturlaub.php | 37 +++++++++++++++++-- cis/private/tools/zeitaufzeichnung.php | 2 +- include/zeitaufzeichnung.class.php | 4 +- locale/de-AT/zeitsperre.php | 1 + locale/en-US/zeitsperre.php | 1 + 5 files changed, 39 insertions(+), 6 deletions(-) mode change 100644 => 100755 locale/de-AT/zeitsperre.php mode change 100644 => 100755 locale/en-US/zeitsperre.php diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index 5ccffac99..b7654310e 100755 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -33,6 +33,7 @@ require_once('../../../include/mitarbeiter.class.php'); require_once('../../../include/mail.class.php'); require_once('../../../include/benutzerberechtigung.class.php'); require_once('../../../include/phrasen.class.php'); +require_once('../../../include/zeitaufzeichnung.class.php'); $sprache = getSprache(); $p = new phrasen($sprache); @@ -44,6 +45,8 @@ $uid = get_uid(); $PHP_SELF = $_SERVER['PHP_SELF']; +$typen_arr = array("Urlaub", "PflegeU", "ZA", "Krank", "DienstF", "DienstV"); + if(isset($_GET['type'])) $type=$_GET['type']; @@ -65,6 +68,17 @@ if(isset($_GET['uid'])) $datum_obj = new datum(); $ma= new mitarbeiter(); +// definiert bis zu welchem Datum die Eintragung nicht mehr möglich ist +$zasperre = new zeitaufzeichnung(); +if ($sperrdat = $zasperre->getEintragungGesperrtBisForUser($uid)) + $gesperrt_bis = $sperrdat; +else if (defined('CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS') && CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS != '') + $gesperrt_bis = CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS; +else + $gesperrt_bis = '2015-08-31'; + +//echo $gesperrt_bis; + //Stundentabelleholen if(! $result_stunde=$db->db_query("SELECT * FROM lehre.tbl_stunde ORDER BY stunde")) die($db->db_last_error()); @@ -268,6 +282,8 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_ { $error=false; $error_msg=''; + + //von-datum pruefen if(isset($_POST['vondatum']) && !$datum_obj->checkDatum($_POST['vondatum'])) { @@ -290,6 +306,7 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_ if (@checkdate($date[1], $date[0], $date[2])) { $vondatum=$date[2].$date[1].$date[0]; + $vondatum_iso = $date[2].'-'.$date[1].'-'.$date[0]; } else { @@ -327,7 +344,12 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_ $error_msg .= $p->t('zeitsperre/vonDatumGroesserAlsBisDatum').'! '; } - + //von-datum pruefen TODO + if($vondatum_iso < $gesperrt_bis && in_array($_POST['zeitsperretyp_kurzbz'],$typen_arr)) + { + $error=true; + $error_msg .= $p->t('zeitsperre/vorSperrdatum'); + } $zeitsperre = new zeitsperre(); @@ -448,7 +470,11 @@ if(isset($_GET['type']) && $_GET['type']=='delete_sperre') //besitzer dieses datensatzes ist if($zeit->mitarbeiter_uid==$uid) { - if($zeit->delete($_GET['id'])) + if ($zeit->vondatum < $gesperrt_bis && in_array($zeit->zeitsperretyp_kurzbz,$typen_arr)) + { + echo "".$p->t('zeitsperre/vorSperrdatum').""; + } + else if($zeit->delete($_GET['id'])) { echo $p->t('global/erfolgreichgelöscht'); } @@ -473,6 +499,7 @@ if($result = $db->db_query($qry)) $erreichbarkeit_arr[$row->erreichbarkeit_kurzbz]=$row->beschreibung; } } + //liste aller zeitsperren ausgeben if(count($zeit->result)>0) { @@ -499,9 +526,13 @@ if(count($zeit->result)>0) ".($row->freigabeamum!=''?'Ja':'').""; if ($row->zeitsperretyp_kurzbz == 'DienstV') $content_table .= ' '; + else if ($row->vondatum < $gesperrt_bis AND in_array($row->zeitsperretyp_kurzbz,$typen_arr)) + $content_table .= ' '; else $content_table.="".$p->t('zeitsperre/edit').""; - if($row->freigabeamum=='' || $row->zeitsperretyp_kurzbz!='Urlaub') + if ($row->vondatum < $gesperrt_bis AND in_array($row->zeitsperretyp_kurzbz,$typen_arr)) + $content_table .= ' '; + else if($row->freigabeamum=='' || $row->zeitsperretyp_kurzbz!='Urlaub') { $content_table.="\n".$p->t('zeitsperre/loeschen').""; } diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 1f7788270..59715d4fa 100755 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -987,7 +987,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) '; - if ($za_simple == 0) + if ($za_simple == 0 || $anzprojekte > 0) { echo ' diff --git a/include/zeitaufzeichnung.class.php b/include/zeitaufzeichnung.class.php index a713db0f0..6a58a23cf 100755 --- a/include/zeitaufzeichnung.class.php +++ b/include/zeitaufzeichnung.class.php @@ -754,7 +754,7 @@ or not exists //check if addon casetime is installed $qrytable = " SELECT EXISTS( - SELECT * + SELECT 1 FROM information_schema.tables WHERE table_schema = 'addon' AND @@ -763,7 +763,7 @@ or not exists "; $res = $this->db_query($qrytable); - if ($this->db_fetch_row($res)[0]===true) + if ($this->db_fetch_row($res)[0] == 't') { //check if sent timesheets for the UID exist $where = "uid=".$this->db_add_param($user); diff --git a/locale/de-AT/zeitsperre.php b/locale/de-AT/zeitsperre.php old mode 100644 new mode 100755 index 48727cc1b..4801f10ec --- a/locale/de-AT/zeitsperre.php +++ b/locale/de-AT/zeitsperre.php @@ -42,4 +42,5 @@ $this->phrasen['zeitsperre/legendeErreichbarkeit']='E...Erreichbarkeit (n=nicht $this->phrasen['zeitsperre/legendeVertretung']='V...Vertretung'; $this->phrasen['zeitsperre/legendeDurchwahl']='(123)...Durchwahl'; $this->phrasen['zeitsperre/vertretungNichtKorrekt']='Die angegebene Vertretung kann nicht gefunden werden. Bitte prüfen Sie die Vertretung und versuchen Sie es erneut.'; +$this->phrasen['zeitsperre/vorSperrdatum']='Datum liegt vor dem Sperrdatum der Zeitliste'; ?> diff --git a/locale/en-US/zeitsperre.php b/locale/en-US/zeitsperre.php old mode 100644 new mode 100755 index 024865d0e..d6adad2ac --- a/locale/en-US/zeitsperre.php +++ b/locale/en-US/zeitsperre.php @@ -42,4 +42,5 @@ $this->phrasen['zeitsperre/legendeErreichbarkeit']='A...Availability (n=not avai $this->phrasen['zeitsperre/legendeVertretung']='S...Substitute'; $this->phrasen['zeitsperre/legendeDurchwahl']='(123)...Extension'; $this->phrasen['zeitsperre/vertretungNichtKorrekt']='The selected substitute is invalid. Please check the substitute an try again.'; +$this->phrasen['zeitsperre/vorSperrdatum']='Date is before last open timesheet date'; ?> From 0e2b38d54d5492bfc87c7a5e6c61d26213579a63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 18 Sep 2018 16:36:59 +0200 Subject: [PATCH 15/21] Ansprechpartner bei Accountdeaktivierung korrigiert --- system/account_deaktivierung_mail.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/system/account_deaktivierung_mail.php b/system/account_deaktivierung_mail.php index 0d065008b..8fbb49c31 100644 --- a/system/account_deaktivierung_mail.php +++ b/system/account_deaktivierung_mail.php @@ -58,7 +58,7 @@ if($result = $db->db_query($qry)) $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 Maria Meyer-Mölleringhof, meyermoe@technikum-wien.at\n"; + $message .= "Frau Natalie König, natalie.koenig@technikum-wien.at\n"; $message .= "\n"; $message .= "Mit freundlichen Grüßen\n"; $message .= "\n"; @@ -90,9 +90,9 @@ if($result = $db->db_query($qry)) $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); $mail->send(); $text.= "Warnung zur Accountloeschung wurde an $row->uid verschickt\n"; @@ -159,7 +159,7 @@ if($result = $db->db_query($qry)) if($mail->send()) $text.="Abbrecher Infomail an $to verschickt\n"; else - $text.="Fehler beim Versenden des Abbrecher Infomails an $to !\n"; + $text.="Fehler beim Versenden des Abbrecher Infomails an $to !\n"; } } @@ -187,7 +187,7 @@ if($result = $db->db_query($qry)) $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); @@ -212,7 +212,7 @@ if($result = $db->db_query($qry)) $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 Maria Meyer-Mölleringhof, meyermoe@technikum-wien.at\n"; + $message .= "Frau Natalie König, natalie.koenig@technikum-wien.at\n"; $message .= "\n"; $message .= "Mit freundlichen Grüßen\n"; $message .= "\n"; @@ -221,9 +221,9 @@ if($result = $db->db_query($qry)) $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); $mail->send(); $text.= "Letzte Warnung zur Accountloeschung wurde an $row->uid verschickt\n"; @@ -238,4 +238,4 @@ if($text!='') } echo ''; -?> \ No newline at end of file +?> From b61cabe6d1bda525cef1e2283d056d61330899a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 20 Sep 2018 15:48:56 +0200 Subject: [PATCH 16/21] =?UTF-8?q?Script=20f=C3=BCr=20Mailverteiler=20abgle?= =?UTF-8?q?ich=20aus=20Core=20entfernt=20und=20in=20Addon=20verschoben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- system/mlists/mlists_generate.php | 1208 ----------------------------- 1 file changed, 1208 deletions(-) delete mode 100644 system/mlists/mlists_generate.php diff --git a/system/mlists/mlists_generate.php b/system/mlists/mlists_generate.php deleted file mode 100644 index 18123d0a4..000000000 --- a/system/mlists/mlists_generate.php +++ /dev/null @@ -1,1208 +0,0 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ -/**************************************************************************** - * Script: mlists_generate.php - * Descr: Das Skript generiert Mailinglisten in der Datenbanken - * fuer Einheiten, Lektoren und fix Angestellte. - * Author: Christian Paminger - * Erstellt: 12.9.2005 - * Update: 14.9.2005 von Christian Paminger - *****************************************************************************/ - -require_once('../../config/vilesci.config.inc.php'); -require_once('../../include/functions.inc.php'); -require_once('../../include/studiensemester.class.php'); -require_once('../../include/organisationseinheit.class.php'); -require_once('../../include/gruppe.class.php'); -require_once('../../include/basis_db.class.php'); -require_once('../../include/mail.class.php'); - -$error_msg=''; -?> - - - - Mailinglisten - - - - -

MailingListen abgleich

- db_query($sql_query))) - $error_msg.=$db->db_last_error(); - if($row = $db->db_fetch_object($result)) - $studiensemester=$row->studiensemester_kurzbz; - else - $error_msg.= $db->db_last_error().$sql_query; - - $stsem_obj = new studiensemester(); - - /* - if(mb_substr($studiensemester,0,1)=='W') - $stsem2 = $stsem_obj->getPreviousFrom($studiensemester); - else - $stsem2 = $stsem_obj->getNextFrom($studiensemester); - */ - $stsem2 = $stsem_obj->getNearestFrom($studiensemester); - - function setGeneriert($gruppe) - { - $db = new basis_db(); - $qry = "UPDATE public.tbl_gruppe SET generiert=true WHERE UPPER(gruppe_kurzbz)=UPPER('".addslashes($gruppe)."')"; - $db->db_query($qry); - } - - /** - * Löscht alle BenutzerInnen aus NICHT-generierten Verteilern die nicht für die Lehre sind (Attribut lehre=false), deren Account vor mehr als 3 Wochen deaktiviert wurde - */ - - $qry_delete = " DELETE FROM public.tbl_benutzergruppe - WHERE tbl_benutzergruppe.studiensemester_kurzbz IS NULL - AND gruppe_kurzbz IN (SELECT gruppe_kurzbz FROM public.tbl_gruppe WHERE generiert=false AND lehre=false) - AND uid IN (SELECT uid FROM public.tbl_benutzer WHERE aktiv=false AND updateaktivamdb_query($qry_delete))) - $error_msg .= $db->db_last_error().$qry_delete.'

'; - - echo $db->db_affected_rows($result).' inaktive BenutzerInnen wurden aus statischen Verteilern gelöscht

'; - - /** - * Einfache Verteiler, deren Erstellung ohne Schleifen-Logik moeglich ist, werden ueber dieses Array erstellt - * Benoetigt werden die 3 Attribute: - * $verteilerArray['name_des_verteilers']['bezeichnung'] = 'Bezeichnung des Verteilers (32 Zeichen)'; - * $verteilerArray['name_des_verteilers']['beschreibung'] = 'Beschreibung des Verteilers (Anzeige im CIS)(128 Zeichen)'; - * $verteilerArray['name_des_verteilers']['sql'] = 'UIDs, die im Verteiler enthalten sein sollen (kein Semikolon am Ende)'; - * - * Die Verteiler werden dann alle gleich erstellt: - * - Pruefen, ob Gruppe existiert, wenn nicht, anlegen mit Default-Werten - * - Gruppe auf generiert setzen - * - UIDs loeschen, die nicht mehr in den Verteiler gehoeren - * - UIDs hinzufuegen, die im Verteiler fehlen - */ - - $verteilerArray = array(); - - // Sql-Schema: SELECT foo AS uid FROM bar WHERE foobar - - //Aktive MitarbeiterInnen mit Personalnummer > 0 - $verteilerArray['tw_ma']['bezeichnung'] = 'Alle aktiven MitarbeiterInnen'; - $verteilerArray['tw_ma']['beschreibung'] = 'Alle aktiven MitarbeiterInnen'; - $verteilerArray['tw_ma']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid - FROM public.tbl_mitarbeiter - JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid) - WHERE aktiv - AND personalnummer >= 0"; - //Aktive weibliche MitarbeiterInnen mit Personalnummer > 0 - $verteilerArray['tw_ma_w']['bezeichnung'] = 'Weibliche Mitarbeiterinnen'; - $verteilerArray['tw_ma_w']['beschreibung'] = 'Weibliche Mitarbeiterinnen'; - $verteilerArray['tw_ma_w']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid - FROM public.tbl_mitarbeiter - JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid) - JOIN public.tbl_person USING(person_id) - WHERE tbl_benutzer.aktiv - AND geschlecht='w' - AND personalnummer >=0"; - //Alle aktiven MitarbeiterInnen mit Attribut lektor=true - $verteilerArray['tw_lkt']['bezeichnung'] = 'Alle LektorInnen'; - $verteilerArray['tw_lkt']['beschreibung'] = 'Alle LektorInnen an der FH Technikum Wien'; - $verteilerArray['tw_lkt']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid - FROM public.tbl_mitarbeiter - JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid) - WHERE lektor - AND aktiv - AND personalnummer >=0"; - //MitarbeiterInnen mit gueltiger Funktion "ass" (assistenz) - $verteilerArray['tw_sek']['bezeichnung'] = 'Alle Sekretariate'; - $verteilerArray['tw_sek']['beschreibung'] = 'Alle Sekretariate an der FH Technikum Wien'; - $verteilerArray['tw_sek']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid - FROM - public.tbl_mitarbeiter - JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid) - JOIN public.tbl_benutzerfunktion USING(uid) - WHERE aktiv AND funktion_kurzbz='ass' AND - (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND - (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now()) AND - mitarbeiter_uid NOT LIKE '\\\\_%' "; - //Aktive MitarbeiterInnen mit gueltiger Funktion "Leitung", "gLtg" oder "stvLtg" in aktiven Studiengaengen - $verteilerArray['tw_stgl']['bezeichnung'] = 'Alle StudiengangsleiterInnen'; - $verteilerArray['tw_stgl']['beschreibung'] = 'Alle StudiengangsleiterInnen und deren StellvertreterInnen'; - $verteilerArray['tw_stgl']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid - FROM - public.tbl_mitarbeiter - JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid) - JOIN public.tbl_benutzerfunktion USING(uid) - JOIN public.tbl_studiengang USING(oe_kurzbz) - WHERE - tbl_benutzer.aktiv - AND (tbl_benutzerfunktion.funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg' OR funktion_kurzbz='stvLtg') - AND (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) - AND (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) - AND mitarbeiter_uid NOT LIKE '\\\\_%' - AND tbl_studiengang.aktiv=true"; - //Aktive MitarbeiterInnen mit gueltiger Funktion "Leitung", "gLtg" oder "stvLtg" in aktiven Bachelor- oder Master-Studiengaengen mit Kennzahl>0 und Kennzahl<10000 - $verteilerArray['tw_stgl_bama']['bezeichnung'] = 'Studiengangsleitung BAMA'; - $verteilerArray['tw_stgl_bama']['beschreibung'] = 'Studiengangsleitung und Stellvertretung von Bachelor und Master Studiengängen'; - $verteilerArray['tw_stgl_bama']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid - FROM - public.tbl_mitarbeiter - JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid) - JOIN public.tbl_benutzerfunktion USING(uid) - JOIN public.tbl_studiengang USING(oe_kurzbz) - WHERE - tbl_benutzer.aktiv - AND (tbl_benutzerfunktion.funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg' OR funktion_kurzbz='stvLtg') - AND (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) - AND (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) - AND mitarbeiter_uid NOT LIKE '\\\\_%' - AND tbl_studiengang.aktiv=true - AND tbl_studiengang.typ in('b','m') - AND tbl_studiengang.studiengang_kz>0 - AND tbl_studiengang.studiengang_kz<10000"; - //Alle aktiven MitarbeiterInnen mit Attribut fixangestellt=true - $verteilerArray['tw_fix']['bezeichnung'] = 'Alle Fix-Angestellten'; - $verteilerArray['tw_fix']['beschreibung'] = 'Alle Fix-Angestellten an der FH Technikum Wien'; - $verteilerArray['tw_fix']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid - FROM public.tbl_mitarbeiter - JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid) - WHERE fixangestellt - AND aktiv - AND mitarbeiter_uid NOT LIKE '\\\\_%' - AND NOT EXISTS(SELECT 1 FROM public.tbl_benutzerfunktion WHERE funktion_kurzbz in('hilfskraft','praktikum') AND uid=mitarbeiter_uid AND (datum_bis>=now() or datum_bis is null))"; - //Alle aktiven MitarbeiterInnen mit Attribut fixangestellt=true und lektor=true - $verteilerArray['tw_fix_lkt']['bezeichnung'] = 'Alle fixangestellten LektorInnen'; - $verteilerArray['tw_fix_lkt']['beschreibung'] = 'Alle fixangestellten LektorInnen an der FH Technikum Wien'; - $verteilerArray['tw_fix_lkt']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid - FROM public.tbl_mitarbeiter - JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid) - WHERE fixangestellt - AND lektor - AND aktiv - AND mitarbeiter_uid NOT LIKE '\\\\_%'"; - //Alle aktiven MitarbeiterInnen mit Attribut fixangestellt=false und lektor=true - $verteilerArray['tw_ext_lkt']['bezeichnung'] = 'Externe LektorInnen'; - $verteilerArray['tw_ext_lkt']['beschreibung'] = 'Alle externen LektorInnen an der FH Technikum Wien'; - $verteilerArray['tw_ext_lkt']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid - FROM public.tbl_mitarbeiter - JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid) - WHERE NOT fixangestellt - AND lektor - AND aktiv - AND mitarbeiter_uid NOT LIKE '\\\\_%'"; - //Hochschulvertretung. Studierende mit gueltiger Funktion 'hsv'. - $verteilerArray['tw_hsv']['bezeichnung'] = 'Hochschulvertretung FHTW'; - $verteilerArray['tw_hsv']['beschreibung'] = 'Hochschulvertretung FHTW'; - $verteilerArray['tw_hsv']['sql'] = " SELECT DISTINCT uid - FROM - public.tbl_benutzerfunktion - JOIN public.tbl_benutzer USING(uid) - WHERE - funktion_kurzbz='hsv' - AND tbl_benutzer.aktiv AND - (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND - (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())"; - //Studienvertretung. Studierende mit gueltiger Funktion 'stdv'. - $verteilerArray['tw_stdv']['bezeichnung'] = 'Alle StudierendenvertreterInnen'; - $verteilerArray['tw_stdv']['beschreibung'] = 'Alle StudierendenvertreterInnen'; - $verteilerArray['tw_stdv']['sql'] = " SELECT DISTINCT uid - FROM - public.tbl_benutzerfunktion - JOIN public.tbl_benutzer USING(uid) - WHERE - funktion_kurzbz='stdv' - AND tbl_benutzer.aktiv AND - (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND - (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())"; - //Jahrgangsvertretung. Studierende mit gueltiger Funktion 'jgv'. - $verteilerArray['tw_jgv']['bezeichnung'] = 'Alle JahrgangsvertreterInnen'; - $verteilerArray['tw_jgv']['beschreibung'] = 'Alle JahrgangsvertreterInnen'; - $verteilerArray['tw_jgv']['sql'] = " SELECT DISTINCT uid - FROM - public.tbl_benutzerfunktion - JOIN public.tbl_benutzer USING(uid) - WHERE - funktion_kurzbz='jgv' - AND tbl_benutzer.aktiv AND - (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND - (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())"; - //Alle aktiven Studierenden - //Abbrecher bleiben noch 3 Wochen im Verteiler andere inaktive noch fuer 20 Wochen - //damit im CIS die Menuepunkte fuer Studierende richtig angezeigt werden - $verteilerArray['tw_std']['bezeichnung'] = 'Alle Studierenden'; - $verteilerArray['tw_std']['beschreibung'] = 'Alle ordentlichen, außerordentlichen und fiktiven Studierenden'; - $verteilerArray['tw_std']['sql'] = " SELECT DISTINCT uid - FROM campus.vw_student - WHERE ( - aktiv - OR - (aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)='Abbrecher' AND updateaktivam>now()-'3 weeks'::interval) - OR - (aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)!='Abbrecher' AND updateaktivam>now()-'20 weeks'::interval) - )"; - //Alle aktiven männlichen Studierenden - //Abbrecher bleiben noch 3 Wochen im Verteiler andere inaktive noch fuer 20 Wochen - $verteilerArray['tw_std_m']['bezeichnung'] = 'Alle männlichen Studenten'; - $verteilerArray['tw_std_m']['beschreibung'] = 'Alle männlichen Studenten an der FHTW'; - $verteilerArray['tw_std_m']['sql'] = " SELECT DISTINCT uid - FROM campus.vw_student - WHERE ( - aktiv - AND geschlecht='m' - OR - (aktiv=false AND geschlecht='m' AND get_rolle_prestudent(vw_student.prestudent_id, null)='Abbrecher' AND updateaktivam>now()-'3 weeks'::interval) - OR - (aktiv=false AND geschlecht='m' AND get_rolle_prestudent(vw_student.prestudent_id, null)!='Abbrecher' AND updateaktivam>now()-'20 weeks'::interval) - )"; - //Alle aktiven weiblichen Studierenden - //Abbrecher bleiben noch 3 Wochen im Verteiler andere inaktive noch fuer 20 Wochen - $verteilerArray['tw_std_w']['bezeichnung'] = 'Alle weiblichen Studentinnen'; - $verteilerArray['tw_std_w']['beschreibung'] = 'Alle weiblichen Studentinnen an der FHTW'; - $verteilerArray['tw_std_w']['sql'] = " SELECT DISTINCT uid - FROM campus.vw_student - WHERE ( - aktiv - AND geschlecht='w' - OR - (aktiv=false AND geschlecht='w' AND get_rolle_prestudent(vw_student.prestudent_id, null)='Abbrecher' AND updateaktivam>now()-'3 weeks'::interval) - OR - (aktiv=false AND geschlecht='w' AND get_rolle_prestudent(vw_student.prestudent_id, null)!='Abbrecher' AND updateaktivam>now()-'20 weeks'::interval) - )"; - //Alle ordentlichen, aktiven Bachelor- und Master-Studierenden - //Absolventen bleiben noch 20 Wochen im Verteiler - $verteilerArray['tw_bama']['bezeichnung'] = 'Alle BaMa-Studierenden'; - $verteilerArray['tw_bama']['beschreibung'] = 'Alle ordentlichen Bachelor- und Master-Studierenden'; - $verteilerArray['tw_bama']['sql'] = " SELECT DISTINCT uid - FROM campus.vw_student - WHERE ( - aktiv - OR - (aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)='Absolvent' AND updateaktivam>now()-'20 weeks'::interval) - AND studiengang_kz IN (SELECT studiengang_kz FROM public.tbl_studiengang WHERE typ IN ('b','m')) - )"; - //Moodle-LektorenVerteiler - /* Von kindlm auskommentiert am 27.09.2017. Verteiler wird vermutlich nicht mehr benötigt. Wenn ein Jahr lang kein Problem, dann bitte löschen. - $verteilerArray['moodle_lkt']['bezeichnung'] = 'Moodle Lektoren'; - $verteilerArray['moodle_lkt']['beschreibung'] = 'Moodle Lektoren'; - $verteilerArray['moodle_lkt']['sql'] = " SELECT distinct mitarbeiter_uid AS uid - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, addon.tbl_moodle ,campus.vw_lehreinheit - WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id - AND vw_lehreinheit.studiengang_kz=tbl_lehrveranstaltung.studiengang_kz - AND vw_lehreinheit.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id - AND vw_lehreinheit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id - AND vw_lehreinheit.studiensemester_kurzbz=tbl_lehreinheit.studiensemester_kurzbz - AND vw_lehreinheit.studiensemester_kurzbz=tbl_lehreinheit.studiensemester_kurzbz - AND ((tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_moodle.lehrveranstaltung_id - AND tbl_moodle.studiensemester_kurzbz=tbl_lehreinheit.studiensemester_kurzbz) - OR (tbl_lehreinheit.lehreinheit_id=tbl_moodle.lehreinheit_id))";*/ - //Serviceabteilungen. Aktive MitarbeiterInnen mit gueltiger Leitungsfunktion in einer Abteilung - $verteilerArray['serviceabteilungen']['bezeichnung'] = 'LeiterInnen sonst. OEen'; - $verteilerArray['serviceabteilungen']['beschreibung'] = 'LeiterInnen der Abteilungen und Gruppen'; - $verteilerArray['serviceabteilungen']['sql'] = " SELECT distinct mitarbeiter_uid AS uid - FROM - public.tbl_mitarbeiter - JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid) - JOIN public.tbl_benutzerfunktion USING(uid) - JOIN public.tbl_organisationseinheit USING(oe_kurzbz) - WHERE tbl_benutzer.aktiv AND (funktion_kurzbz='Leitung') - AND (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) - AND (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) - AND tbl_organisationseinheit.organisationseinheittyp_kurzbz='Abteilung'"; - //Aktive MitarbeiterInnen der OE "Sprachen" - $verteilerArray['sprachen']['bezeichnung'] = 'Sprachen'; - $verteilerArray['sprachen']['beschreibung'] = 'MitarbeiterInnen des Instituts Sprachen und Kulturwissenschaften '; - $verteilerArray['sprachen']['sql'] = " SELECT distinct uid - FROM - public.tbl_benutzer - JOIN public.tbl_benutzerfunktion USING(uid) - JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid) - WHERE oe_kurzbz in('Sprachen') - AND tbl_benutzer.aktiv - AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null) - AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)"; - // Aktive MitarbeiterInnen der OE "Sprachen" - $verteilerArray['humanities']['bezeichnung'] = 'MA Institut Sprachen'; - $verteilerArray['humanities']['beschreibung'] = 'MitarbeiterInnen des Instituts Sprachen und Kulturwissenschaften '; - $verteilerArray['humanities']['sql'] = "SELECT distinct uid - FROM - public.tbl_benutzer - JOIN public.tbl_benutzerfunktion USING(uid) - JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid) - WHERE oe_kurzbz in('Sprachen') - AND tbl_benutzer.aktiv - AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null) - AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)"; - //Aktive BenutzerInnen mit der Funktion "kollegium" - $verteilerArray['kollegium']['bezeichnung'] = 'Kollegium der FH Technikum Wien'; - $verteilerArray['kollegium']['beschreibung'] = 'Kollegium der FH Technikum Wien'; - $verteilerArray['kollegium']['sql'] = " SELECT distinct uid - FROM - public.tbl_benutzer - JOIN public.tbl_benutzerfunktion USING(uid) - WHERE funktion_kurzbz='kollegium' - AND tbl_benutzer.aktiv - AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null) - AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)"; - //Aktive BenutzerInnen mit der Funktion "managementteam" - $verteilerArray['tw_managementteam']['bezeichnung'] = 'Akademisches Managementteam'; - $verteilerArray['tw_managementteam']['beschreibung'] = 'Akademisches Managementteam'; - $verteilerArray['tw_managementteam']['sql'] = " SELECT distinct uid - FROM - public.tbl_benutzer - JOIN public.tbl_benutzerfunktion USING(uid) - WHERE funktion_kurzbz='managementteam' - AND tbl_benutzer.aktiv - AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null) - AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)"; - //Aktive BenutzerInnen mit der Funktion "fue" - $verteilerArray['tw_fue']['bezeichnung'] = 'Forschung und Entwicklung'; - $verteilerArray['tw_fue']['beschreibung'] = 'Forschung und Entwicklung'; - $verteilerArray['tw_fue']['sql'] = " SELECT distinct uid - FROM - public.tbl_benutzer - JOIN public.tbl_benutzerfunktion USING(uid) - WHERE funktion_kurzbz='fue' - AND tbl_benutzer.aktiv - AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null) - AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)"; - //Aktive weiblichen Benutzerinnen mit der Funktion "fue" - $verteilerArray['tw_fue_frauen']['bezeichnung'] = 'Weibliche Mitarbeiterinnen FuE'; - $verteilerArray['tw_fue_frauen']['beschreibung'] = 'Weibliche Mitarbeiterinnen in Forschung und Entwicklung'; - $verteilerArray['tw_fue_frauen']['sql'] = " SELECT distinct uid - FROM - public.tbl_benutzer - JOIN public.tbl_benutzerfunktion USING(uid) - JOIN public.tbl_person USING (person_id) - WHERE funktion_kurzbz='fue' - AND geschlecht='w' - AND tbl_benutzer.aktiv - AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null) - AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)"; - //Alle aktiven MitarbeiterInnen mit Funktion Leitung oder stvLeitung oder gfLtg - $verteilerArray['tw_leitung']['bezeichnung'] = 'Alle MA mit Leitungsfunktion'; - $verteilerArray['tw_leitung']['beschreibung'] = 'Alle MA mit Funktion Leitung, stellvertretende Leitung oder geschäftsführende Leitung'; - $verteilerArray['tw_leitung']['sql'] = " SELECT DISTINCT uid - FROM - public.tbl_person - JOIN public.tbl_benutzer USING (person_id) - JOIN tbl_benutzerfunktion USING (uid) - WHERE funktion_kurzbz IN('Leitung','stvLtg','gLtg') - AND tbl_benutzer.aktiv - AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null) - AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)"; - //Alle aktiven Studierenden in Academy-Lehrgaengen - //Abbrecher bleiben noch 3 Wochen im Verteiler andere inaktive noch fuer 20 Wochen - $verteilerArray['tw_academy_std']['bezeichnung'] = 'Alle Studierenden der Academy'; - $verteilerArray['tw_academy_std']['beschreibung'] = 'Alle Studierenden der TW-Academy (LehrgangsteilnehmerInnen)'; - $verteilerArray['tw_academy_std']['sql'] = " SELECT DISTINCT uid AS uid - FROM campus.vw_student - JOIN public.tbl_studiengang USING (studiengang_kz) - JOIN public.tbl_organisationseinheit USING (oe_kurzbz) - WHERE ( - vw_student.aktiv - OR - (vw_student.aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)='Abbrecher' AND vw_student.updateaktivam>now()-'3 weeks'::interval) - OR - (vw_student.aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)!='Abbrecher' AND vw_student.updateaktivam>now()-'20 weeks'::interval)) - AND tbl_organisationseinheit.oe_parent_kurzbz='lehrgang' - AND organisationseinheittyp_kurzbz='Lehrgang'"; - //Alle aktiven Lektoren von BIF DUA - $verteilerArray['bif_lkt_dua']['bezeichnung'] = 'Alle Lektoren von BIF DUAL'; - $verteilerArray['bif_lkt_dua']['beschreibung'] = 'Alle Lektoren von BIF DUAL'; - $verteilerArray['bif_lkt_dua']['sql'] = "SELECT distinct mitarbeiter_uid as uid - FROM - lehre.tbl_lehrveranstaltung - JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id) - JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id) - WHERE - (studiensemester_kurzbz='$studiensemester' OR - studiensemester_kurzbz='$stsem2') - AND mitarbeiter_uid NOT LIKE '\\\\_%' - AND tbl_lehrveranstaltung.studiengang_kz=257 - AND tbl_lehrveranstaltung.orgform_kurzbz='DUA' - "; - - $verteilerArray['pre_alumni_wintersemester']['bezeichnung'] = 'Zukünftige Absolventen Wintersemester'; - $verteilerArray['pre_alumni_wintersemester']['beschreibung'] = 'Zukünftige Absolventen Wintersemester'; - $verteilerArray['pre_alumni_wintersemester']['sql'] = "SELECT - distinct tbl_benutzer.uid - FROM - public.tbl_studentlehrverband - JOIN public.tbl_studiengang USING(studiengang_kz) - JOIN public.tbl_benutzer ON(uid=student_uid) - WHERE - ( - (tbl_studiengang.typ='m' AND semester=3) - OR (tbl_studiengang.typ='b' AND semester=5) - ) - AND tbl_benutzer.aktiv = true - AND tbl_studentlehrverband.studiensemester_kurzbz = (SELECT studiensemester_kurzbz FROM public.vw_studiensemester where studiensemester_kurzbz like 'WS%' ORDER BY delta LIMIT 1)"; - - $verteilerArray['pre_alumni_sommersemester']['bezeichnung'] = 'Zukünftige Absolventen Sommersemester'; - $verteilerArray['pre_alumni_sommersemester']['beschreibung'] = 'Zukünftige Absolventen Sommersemester'; - $verteilerArray['pre_alumni_sommersemester']['sql'] = "SELECT - distinct tbl_benutzer.uid - FROM - public.tbl_studentlehrverband - JOIN public.tbl_studiengang USING(studiengang_kz) - JOIN public.tbl_benutzer ON(uid=student_uid) - WHERE - ( - (tbl_studiengang.typ='m' AND semester=4) - OR (tbl_studiengang.typ='b' AND semester=6) - ) - AND tbl_benutzer.aktiv = true - AND tbl_studentlehrverband.studiensemester_kurzbz = (SELECT studiensemester_kurzbz FROM public.vw_studiensemester where studiensemester_kurzbz like 'SS%' ORDER BY delta LIMIT 1)"; - - $bezeichnung = ''; - $beschreibung = ''; - foreach ($verteilerArray AS $listname => $data) - { - $grp = new gruppe(); - // Pruefen, ob die Gruppe existert, wenn nicht, anlegen - if(!$grp->exists($listname)) - { - if (strlen($data['bezeichnung']) > 32) - $bezeichnung = substr($data['bezeichnung'], 0, 32); - else - $bezeichnung = $data['bezeichnung']; - - if (strlen($data['beschreibung']) > 128) - $beschreibung = substr($data['beschreibung'], 0, 128); - else - $beschreibung = $data['beschreibung']; - - $grp->gruppe_kurzbz = $listname; - $grp->studiengang_kz = '0'; - $grp->semester = '0'; - $grp->bezeichnung = $bezeichnung; - $grp->beschreibung = $beschreibung; - $grp->mailgrp = true; - $grp->sichtbar = true; - $grp->generiert = true; - $grp->aktiv = true; - $grp->lehre = false; - $grp->content_visible = false; - $grp->gesperrt = false; - $grp->zutrittssystem = false; - $grp->aufnahmegruppe = false; - $grp->insertamum = date('Y-m-d H:i:s'); - $grp->insertvon = 'mlists_generate'; - - if(!$grp->save(true, true)) - { - $error_msg .= 'Fehler beim Anlegen der Gruppe '.$listname.': '.$grp->errormsg; - continue; - } - } - else - { - setGeneriert($listname); - } - echo strtoupper($listname).' wird abgeglichen...
'; - flush(); - //Eventuelles Semikolon am Ende des SQLs entfernen - if (substr($data['sql'], -1) == ';') - $data['sql'] = substr($data['sql'], 0, strlen($data['sql'])-1); - - $qry_delete = " DELETE FROM - public.tbl_benutzergruppe - WHERE - UPPER(gruppe_kurzbz)=UPPER(".$db->db_add_param($listname).") - AND - uid NOT IN (".$data['sql'].");"; - - if(!($result = $db->db_query($qry_delete))) - $error_msg .= $db->db_last_error().$qry_delete.'

'; - - echo strtoupper($listname).' '.$db->db_affected_rows($result).' Einträge gelöscht
'; - - flush(); - - $qry_insert = " WITH - uids AS (".$data['sql'].") - INSERT INTO - public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) - SELECT - *, UPPER(".$db->db_add_param($listname)."), now(), 'mlists_generate' - FROM - uids - WHERE - uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER(".$db->db_add_param($listname)."));"; - - if(!($result = $db->db_query($qry_insert))) - $error_msg .= $db->db_last_error().$qry_insert.'

'; - - echo strtoupper($listname).' '.$db->db_affected_rows($result).' Einträge hinzugefügt

'; - - flush(); - } - -// ************************************************************** -// Erstellen der Mailinglisten mit Schleifen-Logik -// ************************************************************** - - - // ************************************************************** - // Lektoren-Verteiler innerhalb der Studiengaenge abgleichen - // Lektoren holen die nicht mehr in den Verteiler gehoeren - echo '
Lektoren-Verteiler der Studiengaenge werden abgeglichen!
'; - flush(); - $sql_query="SELECT uid, gruppe_kurzbz FROM public.tbl_benutzergruppe - WHERE gruppe_kurzbz LIKE '%\\_LKT' AND UPPER(gruppe_kurzbz)!=UPPER('tw_lkt') AND UPPER(gruppe_kurzbz)!=UPPER('tw_fix_lkt') AND UPPER(gruppe_kurzbz)!=UPPER('tw_ext_lkt') AND UPPER(gruppe_kurzbz)!=UPPER('moodle_lkt') - AND (uid,UPPER(gruppe_kurzbz)) NOT IN - (SELECT mitarbeiter_uid,UPPER(typ::varchar(1) || tbl_studiengang.kurzbz || '_lkt') - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter, public.tbl_studiengang - WHERE - tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND - tbl_studiengang.studiengang_kz=tbl_lehrveranstaltung.studiengang_kz AND - (studiensemester_kurzbz='$studiensemester' OR - studiensemester_kurzbz='$stsem2') AND mitarbeiter_uid NOT LIKE '\\\\_%')"; - - if(!($result=$db->db_query($sql_query))) - $error_msg.=$db->db_last_error().$sql_query; - while($row=$db->db_fetch_object($result)) - { - $sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$row->gruppe_kurzbz') AND uid='$row->uid'"; - if(!$db->db_query($sql_query)) - $error_msg.=$db->db_last_error().$sql_query; - echo '-'; - flush(); - } - // Lektoren holen die noch nicht im Verteiler sind - echo '
'; - $sql_query="SELECT distinct mitarbeiter_uid, UPPER(typ::varchar(1) || tbl_studiengang.kurzbz || '_lkt') AS mlist_name, tbl_studiengang.studiengang_kz - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter, public.tbl_studiengang - WHERE - tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND - tbl_studiengang.studiengang_kz=tbl_lehrveranstaltung.studiengang_kz AND - (studiensemester_kurzbz='$studiensemester' OR - studiensemester_kurzbz='$stsem2') AND - mitarbeiter_uid NOT LIKE '\\\\_%' AND tbl_studiengang.studiengang_kz!=0 AND - (mitarbeiter_uid,UPPER(typ::varchar(1) || tbl_studiengang.kurzbz || '_lkt')) NOT IN - (SELECT uid, UPPER(gruppe_kurzbz) FROM public.tbl_benutzergruppe - WHERE gruppe_kurzbz LIKE '%\\_LKT' AND UPPER(gruppe_kurzbz)!=UPPER('tw_lkt') AND UPPER(gruppe_kurzbz)!=UPPER('tw_fix_lkt') AND UPPER(gruppe_kurzbz)!=UPPER('tw_ext_lkt') AND UPPER(gruppe_kurzbz)!=UPPER('moodle_lkt'))"; - //echo $sql_query; - if(!($result=$db->db_query($sql_query))) - $error_msg.=$db->db_last_error().$sql_query; - while($row=$db->db_fetch_object($result)) - { - $sql_query="SELECT * FROM public.tbl_gruppe WHERE gruppe_kurzbz='".strtoupper($row->mlist_name)."'"; - if($res = $db->db_query($sql_query)) - { - if($db->db_num_rows($res)<=0) - { - setGeneriert($row->mlist_name); - $sql_query="INSERT INTO public.tbl_gruppe(gruppe_kurzbz, studiengang_kz, semester, bezeichnung, - beschreibung, mailgrp, sichtbar, generiert, aktiv, updateamum, updatevon, - insertamum, insertvon) - VALUES('".strtoupper($row->mlist_name)."',$row->studiengang_kz, 0,'$row->mlist_name',". - "'$row->mlist_name', true, true, true, true, now(),'mlists_generate',now(), 'mlists_generate');"; - if(!$db->db_query($sql_query)) - echo "
Fehler beim Anlegen der Gruppe: $sql_query
"; - } - } - else - echo "
Fehler:$sql_query"; - - setGeneriert($row->mlist_name); - $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row->mitarbeiter_uid','".strtoupper($row->mlist_name)."', now(), 'mlists_generate')"; - if(!$db->db_query($sql_query)) - $error_msg.=$db->db_last_error().$sql_query; - - flush(); - } - - - // ************************************************************** - // Studienvertretungen der Studiengänge abgleichen - - echo 'Studienvertretungsverteiler werden abgeglichen!
'; - flush(); - - //Verteiler anlegen - $sql_query="SELECT DISTINCT - UPPER(typ||kurzbz)||'_'||UPPER(funktion_kurzbz) AS gruppe , - UPPER(typ||kurzbz) AS studiengang, - tbl_studiengang.studiengang_kz - FROM public.tbl_benutzerfunktion - JOIN public.tbl_studiengang USING (oe_kurzbz) - WHERE funktion_kurzbz='stdv' - AND UPPER(typ||kurzbz)||'_'||UPPER(funktion_kurzbz) NOT IN (SELECT gruppe_kurzbz FROM public.tbl_gruppe) - AND tbl_studiengang.aktiv - AND tbl_studiengang.studiengang_kz!=0"; - if($res = $db->db_query($sql_query)) - { - while($row = $db->db_fetch_object($res)) - { - if($db->db_num_rows($res)>0) - { - $sql_query="INSERT INTO public.tbl_gruppe(gruppe_kurzbz, studiengang_kz, semester, bezeichnung, - beschreibung, mailgrp, sichtbar, generiert, aktiv, updateamum, updatevon, - insertamum, insertvon) - VALUES(".$db->db_add_param($row->gruppe).",".$db->db_add_param($row->studiengang_kz).", NULL,".$db->db_add_param('Studienvertretung '.$row->studiengang).",".$db->db_add_param('Studienvertretung '.$row->studiengang).", true, true, true, true, now(),'mlists_generate',now(), 'mlists_generate');"; - if(!$db->db_query($sql_query)) - echo "
Fehler beim Anlegen der Gruppe: $sql_query
"; - } - } - } - - // Studierende holen, die nicht mehr in den Verteiler gehoeren - $sql_query="SELECT gruppe_kurzbz, uid - FROM public.tbl_benutzergruppe JOIN public.tbl_gruppe USING(gruppe_kurzbz) - WHERE gruppe_kurzbz LIKE '%_STDV' - AND uid not in (SELECT uid FROM public.tbl_benutzerfunktion JOIN public.tbl_benutzer USING(uid) - WHERE funktion_kurzbz='stdv' AND tbl_benutzer.aktiv AND - (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND - (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now()) - AND (SELECT studiengang_kz FROM public.tbl_studiengang - WHERE oe_kurzbz=tbl_benutzerfunktion.oe_kurzbz LIMIT 1)=tbl_gruppe.studiengang_kz) - AND tbl_gruppe.studiengang_kz!='0'"; - if(!($result=$db->db_query($sql_query))) - $error_msg.=$db->db_last_error(); - while($row = $db->db_fetch_object($result)) - { - $sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$row->gruppe_kurzbz') AND uid='$row->uid'"; - if(!$db->db_query($sql_query)) - $error_msg.=$db->db_last_error().$sql_query; - - flush(); - } - ob_flush(); - // Studierende holen, die nicht im Verteiler sind - echo '
'; - $sql_query="SELECT DISTINCT uid, tbl_gruppe.gruppe_kurzbz - FROM - public.tbl_benutzerfunktion - JOIN public.tbl_benutzer USING(uid) - JOIN public.tbl_studiengang USING(oe_kurzbz) - JOIN public.tbl_gruppe ON(tbl_gruppe.studiengang_kz=tbl_studiengang.studiengang_kz AND gruppe_kurzbz like '%_STDV') - WHERE - funktion_kurzbz='stdv' - AND tbl_benutzer.aktiv AND - (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND - (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now()) - AND uid NOT in(Select uid from public.tbl_benutzergruppe JOIN public.tbl_gruppe USING(gruppe_kurzbz) - WHERE studiengang_kz=(SELECT studiengang_kz FROM public.tbl_studiengang - WHERE oe_kurzbz=tbl_benutzerfunktion.oe_kurzbz LIMIT 1) - AND gruppe_kurzbz Like '%_STDV')"; - if(!($result = $db->db_query($sql_query))) - $error_msg.=$db->db_last_error(); - while($row = $db->db_fetch_object($result)) - { - if($row->gruppe_kurzbz!='') - { - setGeneriert($row->gruppe_kurzbz); - $sql_query="INSERT INTO public.tbl_benutzergruppe (uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row->uid','".mb_strtoupper($row->gruppe_kurzbz)."', now(), 'mlists_generate')"; - if(!$db->db_query($sql_query)) - $error_msg.=$db->db_last_error().$sql_query; - - flush(); - } - } - - - // ************************************************************** - // Verteiler Jahrgangsvertretung abgleichen - - echo 'Jahrgangsvertretungsverteiler werden abgeglichen!
'; - flush(); - - //Verteiler der einzelnen Studiengaenge anlegen - $sql_query="SELECT DISTINCT - UPPER(typ||kurzbz)||'_'||UPPER(funktion_kurzbz) AS gruppe , - UPPER(typ||kurzbz) AS studiengang, - tbl_studiengang.studiengang_kz - FROM public.tbl_benutzerfunktion - JOIN public.tbl_studiengang USING (oe_kurzbz) - WHERE funktion_kurzbz='jgv' - AND UPPER(typ||kurzbz)||'_'||UPPER(funktion_kurzbz) NOT IN (SELECT gruppe_kurzbz FROM public.tbl_gruppe) - AND tbl_studiengang.aktiv - AND tbl_studiengang.studiengang_kz!=0"; - if($res = $db->db_query($sql_query)) - { - while($row = $db->db_fetch_object($res)) - { - if($db->db_num_rows($res)>0) - { - $sql_query="INSERT INTO public.tbl_gruppe(gruppe_kurzbz, studiengang_kz, semester, bezeichnung, - beschreibung, mailgrp, sichtbar, generiert, aktiv, updateamum, updatevon, - insertamum, insertvon) - VALUES(".$db->db_add_param($row->gruppe).",".$db->db_add_param($row->studiengang_kz).", NULL,".$db->db_add_param('Jahrgangsvertretung '.$row->studiengang).",".$db->db_add_param('Jahrgangsvertretung '.$row->studiengang).", true, true, true, true, now(),'mlists_generate',now(), 'mlists_generate');"; - if(!$db->db_query($sql_query)) - echo "
Fehler beim Anlegen der Gruppe: $sql_query
"; - } - } - } - - // Studierende holen, die nicht mehr in den Verteiler gehoeren - $sql_query="SELECT gruppe_kurzbz, uid - FROM public.tbl_benutzergruppe JOIN public.tbl_gruppe USING(gruppe_kurzbz) - WHERE gruppe_kurzbz LIKE '%_JGV' - AND uid not in (SELECT uid FROM public.tbl_benutzerfunktion JOIN public.tbl_benutzer USING(uid) - WHERE funktion_kurzbz='jgv' AND tbl_benutzer.aktiv AND - (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND - (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now()) - AND (SELECT studiengang_kz FROM public.tbl_studiengang - WHERE oe_kurzbz=tbl_benutzerfunktion.oe_kurzbz LIMIT 1)=tbl_gruppe.studiengang_kz) - AND tbl_gruppe.studiengang_kz!='0'"; - if(!($result=$db->db_query($sql_query))) - $error_msg.=$db->db_last_error(); - while($row = $db->db_fetch_object($result)) - { - $sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$row->gruppe_kurzbz') AND uid='$row->uid'"; - if(!$db->db_query($sql_query)) - $error_msg.=$db->db_last_error().$sql_query; - - flush(); - } - - // Studierende holen, die noch nicht im Verteiler sind - echo '
'; - $sql_query="SELECT DISTINCT uid, tbl_gruppe.gruppe_kurzbz - FROM - public.tbl_benutzerfunktion - JOIN public.tbl_benutzer USING(uid) - JOIN public.tbl_studiengang USING(oe_kurzbz) - JOIN public.tbl_gruppe ON(tbl_gruppe.studiengang_kz=tbl_studiengang.studiengang_kz AND gruppe_kurzbz like '%_JGV') - WHERE - funktion_kurzbz='jgv' - AND tbl_benutzer.aktiv AND - (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND - (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now()) - AND uid NOT in(Select uid from public.tbl_benutzergruppe JOIN public.tbl_gruppe USING(gruppe_kurzbz) - WHERE studiengang_kz=(SELECT studiengang_kz FROM public.tbl_studiengang - WHERE oe_kurzbz=tbl_benutzerfunktion.oe_kurzbz LIMIT 1) - AND gruppe_kurzbz Like '%_JGV')"; - if(!($result = $db->db_query($sql_query))) - $error_msg.=$db->db_last_error(); - while($row = $db->db_fetch_object($result)) - { - if($row->gruppe_kurzbz!='') - { - setGeneriert($row->gruppe_kurzbz); - $sql_query="INSERT INTO public.tbl_benutzergruppe (uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row->uid','".mb_strtoupper($row->gruppe_kurzbz)."', now(), 'mlists_generate')"; - if(!$db->db_query($sql_query)) - $error_msg.=$db->db_last_error().$sql_query; - - flush(); - } - } - - // ************************************************************** - // Organisationseinheiten-Verteiler - - /* - $qry = "SELECT * FROM public.tbl_organisationseinheit WHERE aktiv AND mailverteiler"; - if($result = $db->db_query($qry)) - { - while($row = $db->db_fetch_object($result)) - { - $mlist_name=strtoupper($row->oe_kurzbz); - - $grp = new gruppe(); - if(!$grp->exists($mlist_name)) - { - $grp->gruppe_kurzbz = $mlist_name; - $grp->studiengang_kz = '0'; - $grp->bezeichnung = $row->oe_kurzbz; - $grp->beschreibung = 'Personen der Organisationseinheit '.$row->bezeichnung; - $grp->semester = '0'; - $grp->mailgrp = true; - $grp->sichtbar = true; - $grp->generiert = true; - $grp->aktiv = true; - $grp->lehre = true; - $grp->insertamum = date('Y-m-d H:i:s'); - $grp->insertvon = 'mlists_generate'; - - if(!$grp->save(true, false)) - die('Fehler: '.$grp->errormsg); - } - else - { - setGeneriert($mlist_name); - } - - $oe = new organisationseinheit(); - $childs = $oe->getChilds($row->oe_kurzbz); - - // Lektoren holen die nicht mehr in den Verteiler gehoeren - echo '
'.$mlist_name.' wird abgeglichen!
'; - flush(); - - $oes=''; - foreach ($childs as $oe_kurzbz) - { - if($oes!='') - $oes.=','; - - $oes .= "'".addslashes($oe_kurzbz)."'"; - } - - $sql_query = "SELECT distinct uid FROM public.tbl_benutzer JOIN public.tbl_benutzerfunktion USING(uid) - WHERE oe_kurzbz in($oes) - AND tbl_benutzer.aktiv - AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null) - AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)"; - - $sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name' AND uid NOT IN ($sql_query)"; - if(!$db->db_query($sql_querys)) - { - $error_msg.=$db->db_last_error().' '.$sql_querys; - echo '-'; - flush(); - } - - $sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')"; - if(!($result_oe = $db->db_query($sql_query))) - $error_msg.=$db->db_last_error().' '.$sql_query; - // Lektoren holen die nicht im Verteiler sind - echo '
'; - while($row_oe = $db->db_fetch_object($result_oe)) - { - $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->uid','".$mlist_name."', now(), 'mlists_generate')"; - if(!$db->db_query($sql_query)) - { - $error_msg.=$db->db_last_error().$sql_query; - exit($error_msg); - } - echo '-'; - flush(); - } - } - } - */ - // ************************************************************** - // Instituts-Verteiler - echo '
Abgleich der Institutsverteiler
'; - //Externe Mitarbeiter - $qry = "SELECT * FROM public.tbl_organisationseinheit WHERE aktiv AND mailverteiler AND organisationseinheittyp_kurzbz='Institut'"; - - if($result = $db->db_query($qry)) - { - while($row = $db->db_fetch_object($result)) - { - $mlist_name=strtoupper($row->oe_kurzbz).'_EXT'; - - $grp = new gruppe(); - if(!$grp->exists($mlist_name)) - { - $grp->gruppe_kurzbz = $mlist_name; - $grp->studiengang_kz = '0'; - $grp->bezeichnung = $row->oe_kurzbz; - $grp->beschreibung = 'Externe Mitarbeiter des Instituts '.$row->bezeichnung; - $grp->semester = '0'; - $grp->mailgrp = true; - $grp->sichtbar = true; - $grp->generiert = true; - $grp->aktiv = true; - $grp->lehre = true; - $grp->insertamum = date('Y-m-d H:i:s'); - $grp->insertvon = 'mlists_generate'; - - if(!$grp->save(true, false)) - die('Fehler: '.$grp->errormsg); - } - else - { - setGeneriert($mlist_name); - } - - $oe = new organisationseinheit(); - $childs = $oe->getChilds($row->oe_kurzbz); - - // Lektoren holen die nicht mehr in den Verteiler gehoeren - echo '
'.$mlist_name.' wird abgeglichen!'; - flush(); - - $oes=''; - foreach ($childs as $oe_kurzbz) - { - if($oes!='') - $oes.=','; - - $oes .= "'".addslashes($oe_kurzbz)."'"; - } - - $sql_query = "SELECT distinct uid - FROM - public.tbl_benutzer - JOIN public.tbl_benutzerfunktion USING(uid) - JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid) - WHERE oe_kurzbz in($oes) - AND tbl_benutzer.aktiv AND NOT fixangestellt - AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null) - AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)"; - - $sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name' AND uid NOT IN ($sql_query)"; - if(!$db->db_query($sql_querys)) - { - $error_msg.=$db->db_last_error().' '.$sql_querys; - } - - $sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')"; - if(!($result_oe = $db->db_query($sql_query))) - $error_msg.=$db->db_last_error().' '.$sql_query; - // Lektoren holen die nicht im Verteiler sind - - while($row_oe = $db->db_fetch_object($result_oe)) - { - $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->uid','".$mlist_name."', now(), 'mlists_generate')"; - if(!$db->db_query($sql_query)) - { - $error_msg.=$db->db_last_error().$sql_query; - } - } - } - } - - //Fixe Mitarbeiter - $qry = "SELECT * FROM public.tbl_organisationseinheit WHERE aktiv AND mailverteiler AND organisationseinheittyp_kurzbz='Institut'"; - - if($result = $db->db_query($qry)) - { - while($row = $db->db_fetch_object($result)) - { - $mlist_name=strtoupper($row->oe_kurzbz).'_FIX'; - - $grp = new gruppe(); - if(!$grp->exists($mlist_name)) - { - $grp->gruppe_kurzbz = $mlist_name; - $grp->studiengang_kz = '0'; - $grp->bezeichnung = $row->oe_kurzbz; - $grp->beschreibung = 'Fixangestellte Mitarbeiter des Instituts '.$row->bezeichnung; - $grp->semester = '0'; - $grp->mailgrp = true; - $grp->sichtbar = true; - $grp->generiert = true; - $grp->aktiv = true; - $grp->lehre = true; - $grp->insertamum = date('Y-m-d H:i:s'); - $grp->insertvon = 'mlists_generate'; - - if(!$grp->save(true, false)) - die('Fehler: '.$grp->errormsg); - } - else - { - setGeneriert($mlist_name); - } - - $oe = new organisationseinheit(); - $childs = $oe->getChilds($row->oe_kurzbz); - - // Lektoren holen die nicht mehr in den Verteiler gehoeren - echo '
'.$mlist_name.' wird abgeglichen!'; - flush(); - - $oes=''; - foreach ($childs as $oe_kurzbz) - { - if($oes!='') - $oes.=','; - - $oes .= "'".addslashes($oe_kurzbz)."'"; - } - - $sql_query = "SELECT distinct uid - FROM - public.tbl_benutzer - JOIN public.tbl_benutzerfunktion USING(uid) - JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid) - WHERE oe_kurzbz in($oes) - AND tbl_benutzer.aktiv AND fixangestellt - AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null) - AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)"; - - $sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name' AND uid NOT IN ($sql_query)"; - if(!$db->db_query($sql_querys)) - { - $error_msg.=$db->db_last_error().' '.$sql_querys; - } - - $sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')"; - if(!($result_oe = $db->db_query($sql_query))) - $error_msg.=$db->db_last_error().' '.$sql_query; - // Lektoren holen die nicht im Verteiler sind - while($row_oe = $db->db_fetch_object($result_oe)) - { - $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->uid','".$mlist_name."', now(), 'mlists_generate')"; - if(!$db->db_query($sql_query)) - { - $error_msg.=$db->db_last_error().$sql_query; - } - } - } - } - echo '
'; - - // ************************************************************** - // Studierendenverteiler fuer die einzelnen Organisationseinheiten bei Mischformen - echo '
Abgleich der Mischformverteiler'; - $stsem = $stsem_obj->getNearest(); - - $sql_query = " - SELECT - tbl_prestudentstatus.orgform_kurzbz, - tbl_studiengang.studiengang_kz, - tbl_studiengang.typ, - tbl_studiengang.kurzbz - FROM - public.tbl_student - JOIN public.tbl_benutzer ON(student_uid=uid) - JOIN public.tbl_prestudentstatus USING(prestudent_id) - JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE - tbl_studiengang.mischform - AND tbl_benutzer.aktiv - AND tbl_prestudentstatus.orgform_kurzbz is not null - GROUP BY - tbl_studiengang.studiengang_kz, tbl_prestudentstatus.orgform_kurzbz, tbl_studiengang.typ, tbl_studiengang.kurzbz - "; - - if($result = $db->db_query($sql_query)) - { - echo '
'; - - while($row = $db->db_fetch_object($result)) - { - $mlist_name=strtoupper($row->typ.$row->kurzbz.'_'.$row->orgform_kurzbz); - echo $mlist_name.'
'; - - //Gruppe anlegen falls noch nicht vorhanden - $grp = new gruppe(); - if(!$grp->exists($mlist_name)) - { - $grp->gruppe_kurzbz = $mlist_name; - $grp->studiengang_kz = $row->studiengang_kz; - $grp->bezeichnung = 'Alle '.$row->orgform_kurzbz.' Studenten von '.strtoupper($row->typ.$row->kurzbz); - $grp->beschreibung = 'Alle '.$row->orgform_kurzbz.' Studenten von '.strtoupper($row->typ.$row->kurzbz); - $grp->semester = '0'; - $grp->mailgrp = true; - $grp->sichtbar = true; - $grp->generiert = true; - $grp->aktiv = true; - $grp->lehre = false; - $grp->insertamum = date('Y-m-d H:i:s'); - $grp->insertvon = 'mlists_generate'; - - if(!$grp->save(true, false)) - die('Fehler: '.$grp->errormsg); - } - else - { - setGeneriert($mlist_name); - } - - $sql_query=" - SELECT - distinct student_uid - FROM - public.tbl_student - JOIN public.tbl_benutzer ON(uid=student_uid) - WHERE - tbl_benutzer.aktiv AND - '".addslashes($row->orgform_kurzbz)."'= - (SELECT orgform_kurzbz - FROM public.tbl_prestudentstatus - WHERE - prestudent_id=tbl_student.prestudent_id - AND tbl_prestudentstatus.studiensemester_kurzbz='".addslashes($stsem)."' - ORDER BY datum desc, insertamum desc, ext_id desc LIMIT 1) - AND tbl_student.studiengang_kz='".addslashes($row->studiengang_kz)."'"; - - //Personen entfernen die nicht mehr in den Verteiler gehoeren - $qry = "DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='".$mlist_name."' AND uid NOT IN(".$sql_query.");"; - if(!$db->db_query($qry)) - { - $error_msg.="Fehler bei Qry:".$qry; - } - - //Fehlende Personen hinzufuegen - $sql_query.=" AND student_uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')"; - if(!($result_oe = $db->db_query($sql_query))) - $error_msg.=$db->db_last_error().' '.$sql_query; - - - while($row_oe = $db->db_fetch_object($result_oe)) - { - $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->student_uid','".$mlist_name."', now(), 'mlists_generate')"; - if(!$db->db_query($sql_query)) - { - $error_msg.=$db->db_last_error().$sql_query; - exit($error_msg); - } - flush(); - } - } - } - else - $error_msg.=$db->db_last_error().' '.$sql_query; - - echo $error_msg; - - // Send Mail to admin if error occurs - if ($error_msg != '') - { - $mailtext = ' - - Im Script mlists_generate.php sind folgende Fehler aufgetreten:

'; - $mailtext .= $error_msg; - $mailtext = wordwrap($mailtext,70); - $mail = new mail(MAIL_ADMIN, 'no-reply', 'ERROR mlists_generate.php', 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Inhalt vollständig darzustellen.'); - //$mail->setBCCRecievers('kindlm@technikum-wien.at'); - $mail->setHTMLContent($mailtext); - $mail->send(); - } - ?> -
-

- Die Mailinglisten wurden abgeglichen.
-

- - From 1d74d6c758858c9e99d76ffcdb735afba132954e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 20 Sep 2018 15:57:11 +0200 Subject: [PATCH 17/21] Added updateaktivam, updateaktivvon, lastupdate to campus.vw_mitarbeiter --- system/dbupdate_3.3.php | 60 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 95c23ba99..581ee4388 100755 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -2322,6 +2322,66 @@ if(!$result = @$db->db_query("SELECT bezeichnung FROM public.tbl_filter LIMIT 1" echo '
public.tbl_filter: Spalte bezeichnung hinzugefuegt'; } +// vw_mitarbeiter updateaktivamum updateaktivvon +if(!$result = @$db->db_query("SELECT updateaktivam FROM campus.vw_mitarbeiter LIMIT 1")) +{ + $qry = "CREATE OR REPLACE VIEW campus.vw_mitarbeiter as + SELECT tbl_benutzer.uid, + tbl_mitarbeiter.ausbildungcode, + tbl_mitarbeiter.personalnummer, + tbl_mitarbeiter.kurzbz, + tbl_mitarbeiter.lektor, + tbl_mitarbeiter.fixangestellt, + tbl_mitarbeiter.telefonklappe, + tbl_benutzer.person_id, + tbl_benutzer.alias, + tbl_person.geburtsnation, + tbl_person.sprache, + tbl_person.anrede, + tbl_person.titelpost, + tbl_person.titelpre, + tbl_person.nachname, + tbl_person.vorname, + tbl_person.vornamen, + tbl_person.gebdatum, + tbl_person.gebort, + tbl_person.gebzeit, + tbl_person.foto, + tbl_mitarbeiter.anmerkung, + tbl_person.homepage, + tbl_person.svnr, + tbl_person.ersatzkennzeichen, + tbl_person.geschlecht, + tbl_person.familienstand, + tbl_person.anzahlkinder, + tbl_mitarbeiter.ort_kurzbz, + tbl_benutzer.aktiv, + tbl_mitarbeiter.bismelden, + tbl_mitarbeiter.standort_id, + tbl_mitarbeiter.updateamum, + tbl_mitarbeiter.updatevon, + tbl_mitarbeiter.insertamum, + tbl_mitarbeiter.insertvon, + tbl_mitarbeiter.ext_id, + tbl_benutzer.aktivierungscode, + ( SELECT tbl_kontakt.kontakt + FROM tbl_kontakt + WHERE tbl_kontakt.person_id = tbl_person.person_id AND tbl_kontakt.kontakttyp::text = 'email'::text + ORDER BY tbl_kontakt.zustellung DESC + LIMIT 1) AS email_privat, + tbl_benutzer.updateaktivam, + tbl_benutzer.updateaktivvon, + greatest(tbl_person.updateamum, tbl_benutzer.updateamum, tbl_mitarbeiter.updateamum) as lastupdate + FROM public.tbl_mitarbeiter + JOIN public.tbl_benutzer ON tbl_mitarbeiter.mitarbeiter_uid::text = tbl_benutzer.uid::text + JOIN public.tbl_person USING (person_id); + "; + + if(!$db->db_query($qry)) + echo 'campus.vw_mitarbeiter: '.$db->db_last_error().'
'; + else + echo '
campus.vw_mitarbeiter: Spalte updateaktivam, updateaktivon, lastupdate hinzugefuegt'; +} // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; From 89d73d49848e2e1ef2675aa9000f8518af060a5a Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 20 Sep 2018 16:41:09 +0200 Subject: [PATCH 18/21] Added Bezeichnung field to filter overview --- vilesci/statistik/filter_overview.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/vilesci/statistik/filter_overview.php b/vilesci/statistik/filter_overview.php index 2bc0d6b3a..47ea3ee3a 100644 --- a/vilesci/statistik/filter_overview.php +++ b/vilesci/statistik/filter_overview.php @@ -89,6 +89,9 @@ if (!$filter->loadAll()) KurzBz + + Bezeichnung + ValueName @@ -125,6 +128,9 @@ if (!$filter->loadAll()) kurzbz ?> + + convert_html_chars($filter->bezeichnung) ?> + convert_html_chars($filter->valuename) ?> From fa52f3a34ee50db09e00aa4bbb1f3b85cb365911 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 20 Sep 2018 18:31:32 +0200 Subject: [PATCH 19/21] =?UTF-8?q?Neue=20Mail=20Header=20hinzugef=C3=BCgt:?= =?UTF-8?q?=20Precedence:=20bulk=20zur=20Markierung=20als=20Massenmail=20A?= =?UTF-8?q?uto-Submitted:=20auto-generated=20zur=20Markierung=20als=20auto?= =?UTF-8?q?matisch=20generiertes=20E-Mail?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/mail.class.php | 78 ++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/include/mail.class.php b/include/mail.class.php index b0285c11b..45f2fbc30 100644 --- a/include/mail.class.php +++ b/include/mail.class.php @@ -23,8 +23,8 @@ /** * Klasse Mail * @create 2008-11-20 - * - * Versendet ein Mail als Text, Html, CC und BCC Empfaenger, + * + * Versendet ein Mail als Text, Html, CC und BCC Empfaenger, * Replyto und Attachments */ @@ -40,7 +40,7 @@ class mail public $htmlContent; public $attachments; public $errormsg; - + /** * MAIL - Konstruktor * $to Empfaenger @@ -73,18 +73,18 @@ class mail $this->BCC_recievers = ($this->BCC_recievers!=''?MAIL_DEBUG:''); $this->replyTo = ($this->replyTo!=''?MAIL_DEBUG:''); } - + $mime_boundary_alternative = 'ALT+'.md5(time()); $mime_boundary_mixed = 'MIXD+'.md5(time()); $eol="\n"; - + if(defined('MAIL_FROM') && MAIL_FROM!='') $this->sender = MAIL_FROM; // Header $header = ''; $header .= "From: {$this->sender}".$eol; - + if (!empty($this->CC_recievers)) $header .= "CC: {$this->CC_recievers}".$eol; if (!empty($this->BCC_recievers)) @@ -94,11 +94,13 @@ class mail if (!empty($this->replyTo)) $header .= "Return-Path: {$this->replyTo}".$eol; - $header .= 'X-Mailer: FHComplete V1'.$eol; + $header .= 'X-Mailer: FHComplete V1'.$eol; $header .= 'Mime-Version: 1.0'.$eol; + $header .= 'Precedence: bulk'.$eol; + $header .= 'Auto-Submitted: auto-generated'.$eol; $header .= "Content-Type: multipart/related; boundary=\"$mime_boundary_mixed\"".$eol; $header .= "Content-Transfer-Encoding: 8bit".$eol; - + // Body $mailbody = ""; $mailbody .= $eol; @@ -112,8 +114,8 @@ class mail $mailbody .= $this->textContent[0]; $mailbody .= $eol; $mailbody .= $eol; - - if (!empty($this->htmlContent[0])) + + if (!empty($this->htmlContent[0])) { $mailbody .= "--$mime_boundary_alternative".$eol; $mailbody .= "Content-Type: text/html; charset={$this->htmlContent[1]}".$eol; @@ -126,17 +128,17 @@ class mail $mailbody .= "--{$mime_boundary_alternative}--".$eol; $mailbody .= $eol; $mailbody .= "--$mime_boundary_mixed"; - + // Attachments Plain - if (is_array($this->attachmentsplain) && (count($this->attachmentsplain) > 0)) + if (is_array($this->attachmentsplain) && (count($this->attachmentsplain) > 0)) { - foreach ($this->attachmentsplain as $attachment) + foreach ($this->attachmentsplain as $attachment) { $dispo = 'attachment'; $mailbody .= $eol; $mailbody .= "Content-Disposition: $dispo; filename={$attachment[2]}".$eol; $mailbody .= "Content-Type: {$attachment[1]}; name={$attachment[2]}".$eol; - + $mailbody .= 'Content-Transfer-Encoding: '.$attachment[3].$eol; $mailbody .= $eol; $mailbody .= $attachment[0]; @@ -144,17 +146,17 @@ class mail $mailbody .= "--$mime_boundary_mixed"; } } - + // Attachments Binary - if (is_array($this->attachments) && (count($this->attachments) > 0)) + if (is_array($this->attachments) && (count($this->attachments) > 0)) { - foreach ($this->attachments as $attachment) + foreach ($this->attachments as $attachment) { $dispo = empty($attachment[3]) ? 'attachment' : 'inline'; $mailbody .= $eol; $mailbody .= "Content-Disposition: $dispo; filename={$attachment[2]}".$eol; - $mailbody .= "Content-Type: {$attachment[1]}; name={$attachment[2]}".$eol; - if (!empty($attachment[3])) + $mailbody .= "Content-Type: {$attachment[1]}; name={$attachment[2]}".$eol; + if (!empty($attachment[3])) { $mailbody .= "Content-ID: <{$attachment[3]}>".$eol; } @@ -166,15 +168,15 @@ class mail } } $mailbody .= "--".$eol; - + // Subject Encoding setzen $subject = "=?UTF-8?B?".base64_encode($this->subject)."?="; - + // Senden if(mail($this->to, $subject, $mailbody, $header)) return true; - else - return false; + else + return false; } /** @@ -187,7 +189,7 @@ class mail $this->textContent[2] = $encoding; return true; } - + /** * Setzt den HTMLText fuer ein Mail */ @@ -198,7 +200,7 @@ class mail $this->htmlContent[2] = $encoding; if (empty($this->textContent[0])) $this->setTextContent(strip_tags($html), $charset, $encoding); - + return true; } @@ -211,27 +213,27 @@ class mail */ public function addAttachmentBinary($file, $type, $name, $ContentID = "") { - if (!file_exists($file)) + if (!file_exists($file)) { $this->errormsg = 'Attachment wurde nicht gefunden'; return false; } - + $handle = fopen($file,'rb'); - if (!$handle) + if (!$handle) { $this->errormsg = 'Fehler beim Oeffnen der Datei'; return false; } - + $file_content = fread($handle,filesize($file)); @fclose($handle); - + $attachment_string = chunk_split(base64_encode($file_content)); $this->attachments[] = Array($attachment_string, $type, $name, $ContentID); return true; } - + /** * Fuegt ein Bild zum Mail hinzu * $image image-URL @@ -242,16 +244,16 @@ class mail public function addEmbeddedImage ($image, $type, $name = '', $ContentID) { $image_string = file_get_contents($image); - if (!$image_string) + if (!$image_string) { $this->errormsg = 'Fehler beim Einlesen der Datei'; return false; } - + $image_b64 = chunk_split(base64_encode($image_string), 76, "\n"); $this->attachments[] = Array($image_b64, $type, $name, $ContentID); } - + /** * Fuegt ein Attachment zum Mail hinzu * $content @@ -272,14 +274,14 @@ class mail $this->replyTo = $repl; return true; } - + /** * Setzt die CC Empfaenger */ public function setCCRecievers($rcvs) { $this->CC_recievers = ''; - if (is_array($rcvs)) + if (is_array($rcvs)) { foreach ($rcvs as $rcv) $this->CC_recievers .= ",$rcv"; @@ -291,14 +293,14 @@ class mail } return true; } - + /** * Setzt die BCC Empfaenger */ public function setBCCRecievers($rcvs) { $this->BCC_recievers = ''; - if (is_array($rcvs)) + if (is_array($rcvs)) { foreach ($rcvs as $rcv) $this->BCC_recievers .= ",$rcv"; From 2d6f1cf5ca6cbe8ca6e07e8461d9ebc4b0dbcf32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 21 Sep 2018 15:14:57 +0200 Subject: [PATCH 20/21] =?UTF-8?q?Problem=20behoben=20beim=20Erstellen=20vo?= =?UTF-8?q?n=20Lehrauftr=C3=A4gen=20f=C3=BCr=20deaktivierte=20Studieng?= =?UTF-8?q?=C3=A4nge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rdf/lehrauftrag.xml.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rdf/lehrauftrag.xml.php b/rdf/lehrauftrag.xml.php index c268ca8d7..9d0ac32a4 100644 --- a/rdf/lehrauftrag.xml.php +++ b/rdf/lehrauftrag.xml.php @@ -68,7 +68,7 @@ else $xml = ''; $stg_arr = array(); $studiengang = new studiengang(); -$studiengang->getAll(); +$studiengang->getAll(null, false); foreach ($studiengang->result as $row) $stg_arr[$row->studiengang_kz] = $row->kuerzel; From e3e5f690a742c86a2e523ff55253ebdab91e178c Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 24 Sep 2018 11:54:00 +0200 Subject: [PATCH 21/21] - Added Abgewiesener Status to exclude status from zeugnis (to be sure) --- rdf/zeugnis.rdf.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rdf/zeugnis.rdf.php b/rdf/zeugnis.rdf.php index 6e76765eb..d7cfff1ea 100644 --- a/rdf/zeugnis.rdf.php +++ b/rdf/zeugnis.rdf.php @@ -138,7 +138,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") WHERE prestudent_id=".$db->db_add_param($row->prestudent_id)." AND studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." AND - tbl_prestudentstatus.status_kurzbz not in('Incoming','Aufgenommener','Bewerber','Wartender', 'Interessent') + tbl_prestudentstatus.status_kurzbz not in('Incoming','Aufgenommener','Bewerber','Wartender', 'Interessent', 'Abgewiesener') ORDER BY DATUM DESC LIMIT 1"; if($result_sem = $db->db_query($qry)) {