From fe4017c7862f0de746d3ec7fb1f50d0b0868851a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 20 Mar 2019 16:30:44 +0100 Subject: [PATCH 1/8] Added function to install extensions from commandline --- .../controllers/system/extensions/Manager.php | 11 +++++++--- application/libraries/ExtensionsLib.php | 20 +++++++++++++++---- application/libraries/PermissionLib.php | 3 ++- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/application/controllers/system/extensions/Manager.php b/application/controllers/system/extensions/Manager.php index 0a8867c1f..aa4e76e9c 100644 --- a/application/controllers/system/extensions/Manager.php +++ b/application/controllers/system/extensions/Manager.php @@ -81,10 +81,15 @@ class Manager extends Auth_Controller } /** - * + * Installiert eine Extension. + * Es wird davon ausgegangen, dass die Extension ueber einen Fileupload hochgeladen wird. + * alternativ kann hier auch der Name und Filename uebergeben werden um die installation ueber + * die Commandline ohne Upload durchzufuehren. + * @param $extensioName string Name der Extension + * @param $filename Url Encoded Pfad zum tgz File der Extension */ - public function uploadExtension() + public function uploadExtension($extensionName = null, $filename = null) { - $this->extensionslib->installExtension(); + $this->extensionslib->installExtension($extensionName, urldecode($filename)); } } diff --git a/application/libraries/ExtensionsLib.php b/application/libraries/ExtensionsLib.php index 67fa9d117..f678a0bc1 100644 --- a/application/libraries/ExtensionsLib.php +++ b/application/libraries/ExtensionsLib.php @@ -59,17 +59,29 @@ class ExtensionsLib /** * Main method to install an extension + * If no filename / Extensionname is provided the extension should be uploaded via webupload + * + * @param $extensionName string Name of Extension (optional) + * @param $filename Path to tgz Extension File (optional) */ - public function installExtension() + public function installExtension($extensionName = null, $filename = null) { $extensionDB = null; // contains data from DB about an extension $extensionJson = null; // contains the extension.json data $this->_printInfo('WARNING!!! Please do not change page or stop this procedure before it is finished'); - $this->_loadUploadLibrary(); // loads CI upload library - - $uploadData = $this->_uploadExtension(); // perform the upload of the file and returns info about it + if (!is_null($extensionName) && !is_null($filename)) + { + $uploadData = new stdClass(); + $uploadData->fullPath = $filename; + $uploadData->extensionName = $extensionName; + } + else + { + $this->_loadUploadLibrary(); // loads CI upload library + $uploadData = $this->_uploadExtension(); // perform the upload of the file and returns info about it + } if ($uploadData != null) // if no error occurred { diff --git a/application/libraries/PermissionLib.php b/application/libraries/PermissionLib.php index 980598d9b..3b6e3ab5f 100644 --- a/application/libraries/PermissionLib.php +++ b/application/libraries/PermissionLib.php @@ -123,11 +123,12 @@ class PermissionLib public function isEntitled($requiredPermissions, $calledMethod) { $checkPermissions = false; - $requestMethod = $_SERVER['REQUEST_METHOD']; // If it's called from command line than it's trusted if (is_cli()) return true; + $requestMethod = $_SERVER['REQUEST_METHOD']; + // Checks if the parameter $requiredPermissions is set, is an array and contains at least one element if (isset($requiredPermissions) && !isEmptyArray($requiredPermissions)) { From 72a9d9dc01f2ac00fb2a4eac3263c29c7c120c2c Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 20 Mar 2019 17:32:52 +0100 Subject: [PATCH 2/8] Modified function getReihungstestErgebnisPerson in pruefling class . Function now provides end resulting points only of the general basic question areas. (without quereinsteiger-gebiete) . Function now accepts question areas to be excluded. --- include/pruefling.class.php | 189 ++++++++++++++++++++++-------------- 1 file changed, 115 insertions(+), 74 deletions(-) diff --git a/include/pruefling.class.php b/include/pruefling.class.php index 071d7a1a1..7e56d4bf0 100644 --- a/include/pruefling.class.php +++ b/include/pruefling.class.php @@ -20,6 +20,7 @@ * Rudolf Hangl . */ require_once(dirname(__FILE__).'/basis_db.class.php'); +require_once(dirname(__FILE__).'/ablauf.class.php'); class pruefling extends basis_db { @@ -308,100 +309,140 @@ class pruefling extends basis_db /** * Berechnet das Reihungstestergebnis fuer eine Person und ggf Reihungstest - * ACHTUNG - Diese Funktion liefert keine zuverlaessigen Ergebnisse wenn keine ReihungstestID uebergeben wird - * und die Person mehrere Reihungstests absolviert hat! * @param $person_id ID der Person. * @param $punkte Wenn true werden Punkte geliefert, sonst Prozentsumme. * @param $reihungstest_id ID des Reihungstests. * @param $has_excluded_gebiete Wenn true werden die Punkte der Fragengebiete, die im config-array * definiert sind, bei der Berechnung der Endpunkte nicht berücksichtigt. + * @param $studiengang_kz Wenn eine Studiengangskennzahl übergeben wird, dann werden nur die Punkte der + * Basis-Fragengebiete (ohne Quereinsteiger) bei der Berechnung der Endpunkte berücksichtigt. * @return Endpunkte des Reihungstests oder False wenn keine Punkte vorhanden */ - public function getReihungstestErgebnisPerson($person_id, $punkte=false, $reihungstest_id=null, $has_excluded_gebiete = false) + public function getReihungstestErgebnisPerson($person_id, $punkte=false, $reihungstest_id, $has_excluded_gebiete = false, $studiengang_kz = null) { - $qry = "SELECT * FROM testtool.vw_auswertung - WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER); - - if ($has_excluded_gebiete) + if(is_numeric($reihungstest_id)) { - if (defined('FAS_REIHUNGSTEST_EXCLUDE_GEBIETE') && !empty(FAS_REIHUNGSTEST_EXCLUDE_GEBIETE)) + $ergebnis=0; + + $qry = " + SELECT DISTINCT ON (vw_auswertung_ablauf.gebiet_id) gebiet_id, + vw_auswertung_ablauf.*, + tbl_studiengang.typ + FROM + testtool.vw_auswertung_ablauf + JOIN + public.tbl_studiengang ON vw_auswertung_ablauf.stg_kurzbz = tbl_studiengang.kurzbzlang + WHERE + reihungstest_id = ".$this->db_add_param($reihungstest_id, FHC_INTEGER); + + // Ggf. die Basis-Fragengebiete ermitteln (ohne Quereinsteigergebiete) + if (is_numeric($studiengang_kz)) { - $exclude_gebiet_id_arr = FAS_REIHUNGSTEST_EXCLUDE_GEBIETE; - $exclude_gebiet_id_toString = implode(', ', $exclude_gebiet_id_arr); - $qry .= " AND gebiet_id NOT IN (". $exclude_gebiet_id_toString. ")"; + $ablauf = new Ablauf(); + $ablauf->getAblaufGebiete($studiengang_kz, NULL, 1); + $basis_gebiet_id_arr = array(); + $basis_gebiet_id_toString = ''; + + foreach ($ablauf->result as $obj) + { + $basis_gebiet_id_arr []= $obj->gebiet_id; + } + $basis_gebiet_id_toString = implode(', ', $basis_gebiet_id_arr); + + if (!empty($basis_gebiet_id_toString)) + { + $qry .= " + AND + gebiet_id IN (". $basis_gebiet_id_toString. ") + "; + } } - } - $ergebnis=0; - - if(!is_null($reihungstest_id)) - { - $qry.=" AND reihungstest_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER); - - // Quercheck der PrestudentID ueber den Status damit bei Personen - // die den Reihungstest oefter im selben Studiengang gemacht haben nicht das - // Ergebniss der beiden Tests summiert bekommen - // Im Zweifelsfall wird der neuere Reihungstest genommen - $qry.= " - AND - prestudent_id = ( - SELECT - prestudent_id - FROM - public.tbl_rt_person - JOIN - public.tbl_prestudent USING(person_id) - JOIN - public.tbl_prestudentstatus USING (prestudent_id) - JOIN - tbl_reihungstest ON ( - tbl_rt_person.rt_id = tbl_reihungstest.reihungstest_id - AND - tbl_prestudentstatus.studiensemester_kurzbz = tbl_reihungstest.studiensemester_kurzbz - ) - WHERE - tbl_rt_person.person_id = ".$this->db_add_param($person_id, FHC_INTEGER)." + // Ggf. Fragengebiete exkludieren + if ($has_excluded_gebiete) + { + if (defined('FAS_REIHUNGSTEST_EXCLUDE_GEBIETE') && !empty(FAS_REIHUNGSTEST_EXCLUDE_GEBIETE)) + { + $exclude_gebiet_id_arr = FAS_REIHUNGSTEST_EXCLUDE_GEBIETE; + $exclude_gebiet_id_toString = implode(', ', $exclude_gebiet_id_arr); + $qry .= " AND - tbl_rt_person.rt_id = ".$this->db_add_param($reihungstest_id, FHC_INTEGER)." + gebiet_id NOT IN (". $exclude_gebiet_id_toString. ") AND - tbl_prestudentstatus.status_kurzbz='Interessent' - AND - (tbl_reihungstest.stufe = 1 OR tbl_reihungstest.stufe IS NULL) - ORDER BY - tbl_reihungstest.datum desc LIMIT 1 - )"; - } + typ = 'b' + "; + } + } - if($result = $this->db_query($qry)) - { - // Wenn keine Eintraege vorhanden dann false - if($this->db_num_rows($result)==0) + /** + * Quercheck der PrestudentID ueber den Status damit bei Personen + * die den Reihungstest oefter im selben Studiengang gemacht haben nicht das + * Ergebniss der beiden Tests summiert bekommen + * Im Zweifelsfall wird der neuere Reihungstest genommen */ + $qry .= " + AND prestudent_id = ( + SELECT + prestudent_id + FROM + public.tbl_rt_person + JOIN + public.tbl_prestudent USING(person_id) + JOIN + public.tbl_prestudentstatus USING (prestudent_id, studienplan_id) + JOIN + tbl_reihungstest ON ( + tbl_rt_person.rt_id = tbl_reihungstest.reihungstest_id + ) + WHERE + tbl_rt_person.person_id = ".$this->db_add_param($person_id, FHC_INTEGER)." + AND + tbl_rt_person.rt_id = ".$this->db_add_param($reihungstest_id, FHC_INTEGER)." + AND + tbl_prestudentstatus.status_kurzbz='Interessent' + AND + (tbl_reihungstest.stufe = 1 OR tbl_reihungstest.stufe IS NULL) + ORDER BY + tbl_reihungstest.datum desc LIMIT 1 + ) + "; + + if($result = $this->db_query($qry)) + { + // Wenn keine Eintraege vorhanden dann false + if($this->db_num_rows($result)==0) + return false; + + while($row = $this->db_fetch_object($result)) + { + //wenn maxpunkte ueberschritten wurde -> 100% + if($row->punkte>=$row->maxpunkte) + { + $prozent=100; + $row->punkte = $row->maxpunkte; + } + else + $prozent = ($row->punkte/$row->maxpunkte)*100; + + if($punkte) + { + $ergebnis +=$row->punkte; + } + + else + $ergebnis+=$prozent*$row->gewicht; + } + return $ergebnis; + } + else + { + $this->errormsg = 'Fehler bei einer Abfrage'; return false; - - while($row = $this->db_fetch_object($result)) - { - //wenn maxpunkte ueberschritten wurde -> 100% - if($row->punkte>=$row->maxpunkte) - { - $prozent=100; - $row->punkte = $row->maxpunkte; - } - else - $prozent = ($row->punkte/$row->maxpunkte)*100; - - if($punkte) - { - $ergebnis +=$row->punkte; - } - - else - $ergebnis+=$prozent*$row->gewicht; } - return $ergebnis; + } else { - $this->errormsg = 'Fehler bei einer Abfrage'; + $this->errormsg = 'reihungstest_id muss numerisch sein'; return false; } } From 12019bfdaec4c8a3ea3e733e99ad5d7029808db5 Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 20 Mar 2019 17:41:06 +0100 Subject: [PATCH 3/8] Added Reihungstest results of basic areas (excluding Quereinsteiger) Now there are 2 new fields in FAS > Aufnahmetermine displaying the results only of the basic areas (without points of Quereinsteigergebiete). . First field: total result of basic areas . Second field: total result of basic areas EXCLUDING physics . Both fields are only shown for Bachelor-studies. . Generally the display of these fields is controlled by the config file. --- config/vilesci.config-default.inc.php | 3 ++ content/student/aufnahmetermine.js.php | 19 +++++++++ content/student/aufnahmetermine.xul.php | 31 ++++++++------ rdf/aufnahmetermine.rdf.php | 57 +++++++++++++++++-------- 4 files changed, 81 insertions(+), 29 deletions(-) diff --git a/config/vilesci.config-default.inc.php b/config/vilesci.config-default.inc.php index 9c0c21c22..1d68cfdb3 100644 --- a/config/vilesci.config-default.inc.php +++ b/config/vilesci.config-default.inc.php @@ -174,6 +174,9 @@ define('VIEW_BEGIN', 'vw_'); //Legt fest ob die Personalnummer beim Anlegen NULL sein soll define('FAS_PERSONALNUMMER_GENERATE_NULL', false); +// Legt fest ob Felder mit Reihgungstest-Basispunkten im Reiter Aufnahme-Termine angezeigt werden +define('FAS_REIHUNGSTEST_PUNKTE_BASISGEBIET_ANZEIGEN', false); + // API Informationen define('FHC_REST_API_KEY', 'testapikey@fhcomplete.org'); define('FHC_REST_USER', 'username'); diff --git a/content/student/aufnahmetermine.js.php b/content/student/aufnahmetermine.js.php index bcbe350f4..d1ffda1e1 100644 --- a/content/student/aufnahmetermine.js.php +++ b/content/student/aufnahmetermine.js.php @@ -244,6 +244,7 @@ function AufnahmeTermineAuswahl() var studienplan_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studienplan_id" )); var endpunkte_inkl_gebiete = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#endpunkte_inkl_gebiete" )); var endpunkte_exkl_gebiete = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#endpunkte_exkl_gebiete" )); + var typ = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#typ" )); document.getElementById('aufnahmetermine-textbox-rt_person_id').value=rt_person_id; document.getElementById('aufnahmetermine-textbox-person_id').value=person_id; @@ -259,6 +260,24 @@ function AufnahmeTermineAuswahl() document.getElementById('aufnahmetermine-menulist-studienplan').value=studienplan_id; document.getElementById('aufnahmetermine-textbox-endpunkte-inkl-gebiete').value = endpunkte_inkl_gebiete; document.getElementById('aufnahmetermine-textbox-endpunkte-exkl-gebiete').value = endpunkte_exkl_gebiete; + + // Sichtbarkeit der RT-Vergleichsergebnispunkte (ohne Quereinsteiger) + var basisgebiet_punkte_anzeigen = ; + + // * Generell Anzeige nur wenn über config-Datei gesetzt ist + if (basisgebiet_punkte_anzeigen) + { + // * für Bachelor-Studiengänge anzeigen + if (typ == 'b') + { + document.getElementById('aufnahmetermine-groupbox-vergleich-endpunkte').hidden = false; + } + // * für Master-Studiengänge verstecken + else if (typ == 'm') + { + document.getElementById('aufnahmetermine-groupbox-vergleich-endpunkte').hidden = true; + } + } } function AufnahmeTermineNeu() diff --git a/content/student/aufnahmetermine.xul.php b/content/student/aufnahmetermine.xul.php index 3b1e4a174..fe0cff1c4 100644 --- a/content/student/aufnahmetermine.xul.php +++ b/content/student/aufnahmetermine.xul.php @@ -28,6 +28,7 @@ require_once('../../config/global.config.inc.php'); require_once('../../include/functions.inc.php'); require_once('../../include/variable.class.php'); require_once('../../include/prestudent.class.php'); +require_once('../../include/studiengang.class.php'); $user=get_uid(); $variable = new variable(); @@ -294,18 +295,24 @@ echo ']> - - - - + diff --git a/rdf/aufnahmetermine.rdf.php b/rdf/aufnahmetermine.rdf.php index 0ec40ff9e..50941d7e4 100644 --- a/rdf/aufnahmetermine.rdf.php +++ b/rdf/aufnahmetermine.rdf.php @@ -95,35 +95,47 @@ if($prestudent_id!='') $stsem_arr[] = $reihungstest_obj_arr[$row->reihungstest_id]->studiensemester_kurzbz; } - // Reale (nicht von Assistenz überarbeitete) Gesamtpunkte des RT laden; ggf. ohne bestimmte Fragengebiete - $pruefling = new Pruefling(); + // Studiengangstyp ermitteln + $stpl = new Studienplan(); + $stpl->loadStudienplan($row->studienplan_id); // Studienplan von RT-Person + $rtp_sto_id = $stpl->studienordnung_id; // Studienordnung-ID von RT-Person + $sto = new Studienordnung(); + $sto->loadStudienordnung($rtp_sto_id); + $studiengang_kz = $sto->studiengang_kz; // Studiengang-KZ von RT-Person + $stg = new Studiengang($studiengang_kz); + $typ = $stg->typ; // Studiengangstyp von RT-Person - // * Gesamtpunkte inklusive alle Fragengebiete + // Reihungstestpunkte der Basisgebiete ermitteln (ohne Quereinsteiger) + $pruefling = new Pruefling(); $endpunkte_inkl_gebiete = 0; $endpunkte_exkl_gebiete = 0; + + // * Endpunkte über alle Basisgebiete if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) { - $endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, true, $row->reihungstest_id); + $endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, true, $row->reihungstest_id, false, $row->studiengang_kz); } else { - $endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $row->reihungstest_id); + $endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $row->reihungstest_id, false, $row->studiengang_kz); } - // * ggf. Gesamtpunkte exklusive bestimmte Fragengebiete + + // * ggf. Endpunkte exklusive bestimmter Gebiete, die in der config-Datei gesetzt sind if (defined('FAS_REIHUNGSTEST_EXCLUDE_GEBIETE') && !empty(FAS_REIHUNGSTEST_EXCLUDE_GEBIETE)) { if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) { - $endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, true, $row->reihungstest_id, true); + $endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, true, $row->reihungstest_id, true, $row->studiengang_kz); } else { - $endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $row->reihungstest_id, true); + $endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $row->reihungstest_id, true, $row->studiengang_kz); } } $row->endpunkte_inkl_gebiete = round($endpunkte_inkl_gebiete, 2); $row->endpunkte_exkl_gebiete = round($endpunkte_exkl_gebiete, 2); + $row->typ = $typ; } if(count($stsem_arr) > 0) { @@ -144,36 +156,46 @@ elseif($rt_person_id!='') $reihungstest_obj_arr[$reihungstest->reihungstest_id] = new reihungstest(); $reihungstest_obj_arr[$reihungstest->reihungstest_id]->load($reihungstest->reihungstest_id); - // Reale (nicht von Assistenz überarbeitete) Gesamtpunkte des RT laden; ggf. ohne bestimmte Fragengebiete - $pruefling = new Pruefling(); + // Studiengangstyp ermitteln + $stpl = new Studienplan(); + $stpl->loadStudienplan($reihungstest->studienplan_id); // Studienplan von RT-Person + $rtp_sto_id = $stpl->studienordnung_id; // Studienordnung-ID von RT-Person + $sto = new Studienordnung(); + $sto->loadStudienordnung($rtp_sto_id); + $studiengang_kz = $sto->studiengang_kz; // Studiengang-KZ von RT-Person + $stg = new Studiengang($studiengang_kz); + $typ = $stg->typ; // Studiengangstyp von RT-Person - // * Gesamtpunkte inklusive alle Fragengebiete + // Reihungstestpunkte der Basisgebiete ermitteln (ohne Quereinsteiger) + $pruefling = new Pruefling(); $endpunkte_inkl_gebiete = 0; $endpunkte_exkl_gebiete = 0; + + // * Endpunkte über alle Basisgebiete if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) { - $endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, true, $reihungstest->reihungstest_id); + $endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, true, $reihungstest->reihungstest_id, false, $studiengang_kz); } else { - $endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, false, $reihungstest->reihungstest_id); + $endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, false, $reihungstest->reihungstest_id, false, $studiengang_kz); } - // * ggf. Gesamtpunkte exklusive bestimmte Fragengebiete + // * ggf. Endpunkte exklusive bestimmter Gebiete, die in der config-Datei gesetzt sind if (defined('FAS_REIHUNGSTEST_EXCLUDE_GEBIETE') && !empty(FAS_REIHUNGSTEST_EXCLUDE_GEBIETE)) { if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) { - $endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, true, $reihungstest->reihungstest_id, true); + $endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, true, $reihungstest->reihungstest_id, true, $studiengang_kz); } else { - $endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, false, $reihungstest->reihungstest_id, true); + $endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, false, $reihungstest->reihungstest_id, true, $studiengang_kz); } } - $reihungstest->endpunkte_inkl_gebiete = round($endpunkte_inkl_gebiete, 2); $reihungstest->endpunkte_exkl_gebiete = round($endpunkte_exkl_gebiete, 2); + $reihungstest->typ = $typ; drawrow($reihungstest); } @@ -228,6 +250,7 @@ function drawrow($row) $oRdf->obj[$i]->setAttribut('datum_iso',$reihungstest_obj->datum,true); $oRdf->obj[$i]->setAttribut('endpunkte_inkl_gebiete', $row->endpunkte_inkl_gebiete, true); $oRdf->obj[$i]->setAttribut('endpunkte_exkl_gebiete', $row->endpunkte_exkl_gebiete, true); + $oRdf->obj[$i]->setAttribut('typ', $row->typ, true); // Es wird der neueste Reihungstest im Studiengang des Prestudenten markiert damit im FAS erkennbar ist welches // Eintraege zur Punkteberechnung verwendet werden From aaff64867b746d6a4ab43d7e1d06895fe2340627 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 21 Mar 2019 09:38:02 +0100 Subject: [PATCH 4/8] Ordered Reihungstestgebiete by reihung --- cis/testtool/menu.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cis/testtool/menu.php b/cis/testtool/menu.php index dd3475ce1..ed63324a3 100644 --- a/cis/testtool/menu.php +++ b/cis/testtool/menu.php @@ -155,7 +155,7 @@ if (isset($_SESSION['pruefling_id'])) prestudent_id = ".$db->db_add_param($_SESSION['prestudent_id'])." ) - -- Filter only future studiensemester (incl. actual one) + /* Filter only future studiensemester (incl. actual one) */ AND studiensemester_kurzbz IN ( SELECT @@ -184,7 +184,7 @@ if (isset($_SESSION['pruefling_id'])) $qry .= " - -- Order to get last semester when using distinct on + /* Order to get last semester when using distinct on */ ORDER BY prestudent_id, datum DESC, @@ -197,6 +197,7 @@ if (isset($_SESSION['pruefling_id'])) semester, gebiet_id, bezeichnung, + reihung, ". $bezeichnung_mehrsprachig_sel. " FROM ( @@ -250,7 +251,8 @@ if (isset($_SESSION['pruefling_id'])) ) temp ORDER BY - semester + semester, + reihung "; $result = $db->db_query($qry); From 949c69b556dcf56d5bac446c60a4d0dda34c7144 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Thu, 21 Mar 2019 14:02:17 +0100 Subject: [PATCH 5/8] Bugfix Auskommentierte Zeilen wieder einkommentiert --- rdf/student.rdf.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rdf/student.rdf.php b/rdf/student.rdf.php index 795e98ff3..f717bc87e 100644 --- a/rdf/student.rdf.php +++ b/rdf/student.rdf.php @@ -340,10 +340,10 @@ function draw_prestudent($row) ausstellungsstaat.']]> aufnahmeschluessel.']]> facheinschlberuf?'true':'false').']]> - + reihungstestangetreten?'true':'false').']]> punkte.']]> bismelden?'true':'false').']]> dual?'true':'false').']]> From cd5344cf6d78291e7991a920bb919881741d103b Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 21 Mar 2019 14:12:13 +0100 Subject: [PATCH 6/8] Anonymized reasons of absence in MA-Zeitsperre/Urlaube overview Due to data protection regulation the reasons of employees absence are now displayed as a general 'absent' ('Abwesend'). --- cis/private/profile/zeitsperre.php | 2 ++ cis/private/profile/zeitsperre_days.php | 2 ++ locale/de-AT/zeitsperre.php | 1 + locale/en-US/zeitsperre.php | 1 + 4 files changed, 6 insertions(+) diff --git a/cis/private/profile/zeitsperre.php b/cis/private/profile/zeitsperre.php index 00b131129..439d3298c 100644 --- a/cis/private/profile/zeitsperre.php +++ b/cis/private/profile/zeitsperre.php @@ -221,6 +221,7 @@ if(isset($_REQUEST['format']) && $_REQUEST['format']=='xls') { $wt=date('N',$ts); $grund=$zs->getTyp($ts); + $grund = (!empty($grund)) ? $p->t('zeitsperre/abwesend') : ''; // anonymize reason $erbk=html_entity_decode($zs->getErreichbarkeit($ts)); $vertretung=$zs->getVertretung($ts); $zelleninhalt = ($grund!=''?(($grund!=''?substr($p->t('zeitsperre/grund'),0,1).': ':'').$grund. "\n"):''); @@ -342,6 +343,7 @@ else else $class=''; $grund=$zs->getTyp($ts); + $grund = (!empty($grund)) ? $p->t('zeitsperre/abwesend') : ''; // anonymize reason $erbk=$zs->getErreichbarkeit($ts); $vertretung=$zs->getVertretung($ts); echo ''.($grund!=''?''.substr($p->t('zeitsperre/grund'),0,1).': ':'').$grund; diff --git a/cis/private/profile/zeitsperre_days.php b/cis/private/profile/zeitsperre_days.php index 302d625c4..18bf91fcd 100644 --- a/cis/private/profile/zeitsperre_days.php +++ b/cis/private/profile/zeitsperre_days.php @@ -153,6 +153,7 @@ if(isset($_REQUEST['format']) && $_REQUEST['format']=='xls') { $wt=date('N',$ts); $grund=$zs->getTyp($ts); + $grund = (!empty($grund)) ? $p->t('zeitsperre/abwesend') : ''; // anonymize reason $erbk=html_entity_decode($zs->getErreichbarkeit($ts)); $vertretung=$zs->getVertretung($ts); $zelleninhalt = ($grund!=''?(($grund!=''?substr($p->t('zeitsperre/grund'),0,1).': ':'').$grund. "\n"):''); @@ -238,6 +239,7 @@ else else $class=''; $grund=$zs->getTyp($ts); + $grund = (!empty($grund)) ? $p->t('zeitsperre/abwesend') : ''; // anonymize reason $erbk=$zs->getErreichbarkeit($ts); $vertretung=$zs->getVertretung($ts); echo ''.($grund!=''?''.substr($p->t('zeitsperre/grund'),0,1).': ':'').$grund; diff --git a/locale/de-AT/zeitsperre.php b/locale/de-AT/zeitsperre.php index 4801f10ec..06476e33d 100644 --- a/locale/de-AT/zeitsperre.php +++ b/locale/de-AT/zeitsperre.php @@ -43,4 +43,5 @@ $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'; +$this->phrasen['zeitsperre/abwesend']='Abwesend'; ?> diff --git a/locale/en-US/zeitsperre.php b/locale/en-US/zeitsperre.php index d6adad2ac..43909358e 100644 --- a/locale/en-US/zeitsperre.php +++ b/locale/en-US/zeitsperre.php @@ -43,4 +43,5 @@ $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'; +$this->phrasen['zeitsperre/abwesend']='absent'; ?> From 8449e1f69ca4bf42f7564233f93adf9446041ae3 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 21 Mar 2019 16:09:30 +0100 Subject: [PATCH 7/8] - modified public/tablesort.js to accept additional tablesorter parameters - filter cell not displayed if disabled in tablesorter (public/tablesort_bootstrap.css) --- public/css/sbadmin2/tablesort_bootstrap.css | 16 ++++++++++------ public/js/tablesort/tablesort.js | 15 +++++++++++++-- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/public/css/sbadmin2/tablesort_bootstrap.css b/public/css/sbadmin2/tablesort_bootstrap.css index d10d7306e..b01beccdd 100644 --- a/public/css/sbadmin2/tablesort_bootstrap.css +++ b/public/css/sbadmin2/tablesort_bootstrap.css @@ -19,21 +19,25 @@ border-bottom: #ccc 2px solid !important; } +/* hide filtering headers if disabled */ +.tablesorter thead .disabled {display: none} + /* Remove black border at top of table footer */ .tablesorter-default tfoot > tr > th { border-top: #ccc 2px solid !important; } + /* set colors of zebra widget */ -table.tablesorter tbody tr.even td, table.tablesorter tbody tr.even:hover, table.tablesorter tbody tr.even td:hover{ +table.tablesorter tbody tr.even td, table.tablesorter tbody tr.even:hover, table.tablesorter tbody tr.even td:hover { background-color: #ffff; } -table.tablesorter tbody tr.odd td, table.tablesorter tbody tr.odd:hover, table.tablesorter tbody tr.odd td:hover{ +table.tablesorter tbody tr.odd td, table.tablesorter tbody tr.odd:hover, table.tablesorter tbody tr.odd td:hover { background-color: #f5f5f5; } /* colors for hover over table rows and clicked rows*/ -table.tablesort-hover tr:hover, .tablesort-active{ +table.tablesort-hover tr:hover, .tablesort-active { background-color: #dfdfdf !important; } @@ -44,8 +48,8 @@ table.tablesort-hover tr:hover, .tablesort-active{ /* Make filter row more condensed */ .tablesorter-default input.tablesorter-filter, .tablesorter-default select.tablesorter-filter { - margin: 0px auto; - padding: 0px; + margin: 0 auto; + padding: 0; } /* Add cursor pointer for pager icons */ @@ -59,6 +63,6 @@ table.tablesort-hover tr:hover, .tablesort-active{ } /* bring datepicker to front */ -#ui-datepicker-div{ +#ui-datepicker-div { z-index: 9999 !important; } diff --git a/public/js/tablesort/tablesort.js b/public/js/tablesort/tablesort.js index 597d9e4a1..1876ad8a5 100644 --- a/public/js/tablesort/tablesort.js +++ b/public/js/tablesort/tablesort.js @@ -6,15 +6,26 @@ var Tablesort = { * @param widgets optional widgets like zebra or filter * @param minrows optional minimal amount of rows for filter row to be shown (only relevant for filter widget) */ - addTablesorter: function (tableid, sortList, widgets, minrows) + addTablesorter: function (tableid, sortList, widgets, minrows, additionalParams) { - $("#" + tableid).tablesorter( + var tablesorterobj = { theme: "default", dateFormat: "ddmmyyyy", sortList: sortList, widgets: widgets + }; + + if (typeof additionalParams === 'object') + { + for (var key in additionalParams) + { + tablesorterobj[key] = additionalParams[key]; } + } + + $("#" + tableid).tablesorter( + tablesorterobj ); if ($("#" + tableid + " tr.tablesorter-filter-row").length) From abe64c1bfee3086954146f7c95be627ee297035a Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 21 Mar 2019 16:13:05 +0100 Subject: [PATCH 8/8] education/Lehreinheit_model: - added info if Lehreinheit directly assigned (direktinskription) in getLesForLv method - added getStudenten method for getting all students of a lehreinheit --- .../models/education/Lehreinheit_model.php | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/application/models/education/Lehreinheit_model.php b/application/models/education/Lehreinheit_model.php index 8358806f2..737d482f8 100644 --- a/application/models/education/Lehreinheit_model.php +++ b/application/models/education/Lehreinheit_model.php @@ -47,7 +47,12 @@ class Lehreinheit_model extends DB_Model // add lehreinheitgruppen, each lehreinheitid // having (maybe multiple) lehreinheitgruppen $letoadd->lehreinheitgruppen = array(); + + $this->LehreinheitgruppeModel->addSelect('lehre.tbl_lehreinheitgruppe.*, tbl_gruppe.bezeichnung, tbl_gruppe.direktinskription'); + $this->LehreinheitgruppeModel->addJoin('public.tbl_gruppe', 'gruppe_kurzbz', 'LEFT'); + $lehreinheitgruppen = $this->LehreinheitgruppeModel->loadWhere(array('lehreinheit_id' => $le->lehreinheit_id)); + if (hasData($lehreinheitgruppen)) { foreach ($lehreinheitgruppen->retval as $lehreinheitgruppe) @@ -55,7 +60,9 @@ class Lehreinheit_model extends DB_Model $letoadd->lehreinheitgruppen[] = array( 'semester' => $lehreinheitgruppe->semester, 'verband' => $lehreinheitgruppe->verband, - 'gruppe' => $lehreinheitgruppe->gruppe + 'gruppe' => $lehreinheitgruppe->gruppe, + 'gruppe_kurzbz' => $lehreinheitgruppe->gruppe_kurzbz, + 'direktinskription' => $lehreinheitgruppe->direktinskription ); } } @@ -78,4 +85,22 @@ class Lehreinheit_model extends DB_Model return $lehreinheiten; } + + /** + * Gets students of a Lehreinheit + * @param int $lehreinheit_id + * @return array + */ + public function getStudenten($lehreinheit_id) + { + $query = 'SELECT uid, vorname, nachname ' + . 'FROM campus.vw_student_lehrveranstaltung ' + . 'JOIN campus.vw_student ' + . 'USING (uid) ' + . 'WHERE lehreinheit_id = ?' + . ' ORDER BY nachname'; + + + return $this->execQuery($query, array($lehreinheit_id)); + } }