diff --git a/application/helpers/hlp_language_helper.php b/application/helpers/hlp_language_helper.php index 1678a4102..f5f164573 100644 --- a/application/helpers/hlp_language_helper.php +++ b/application/helpers/hlp_language_helper.php @@ -35,6 +35,12 @@ function getUserLanguage($language = null) { $language = $_SESSION[LANG_SESSION_CURRENT_LANGUAGE]; // then use it } + // Else if the language is present in the cookie and it is valid + elseif (isset($_COOKIE[LANG_SESSION_CURRENT_LANGUAGE]) && !isEmptyString($_COOKIE[LANG_SESSION_CURRENT_LANGUAGE])) + { + $language = $_COOKIE[LANG_SESSION_CURRENT_LANGUAGE]; + } + // Otherwise checks if the user is authenticated to retrieve the users's language // NOTE: this helper could be called when the user is NOT logged in the system // therefore is checked if the user is logged diff --git a/application/models/crm/Prestudent_model.php b/application/models/crm/Prestudent_model.php index 97b662f05..2e014800c 100644 --- a/application/models/crm/Prestudent_model.php +++ b/application/models/crm/Prestudent_model.php @@ -259,7 +259,9 @@ class Prestudent_model extends DB_Model //get Bewerbungsfrist $this->load->model('crm/bewerbungstermine_model', 'BewerbungstermineModel'); $this->BewerbungstermineModel->addSelect('ende, nachfrist_ende'); - $this->BewerbungstermineModel->addOrder('ende', 'DESC'); + $this->BewerbungstermineModel->addOrder('updateamum', 'DESC'); + $this->BewerbungstermineModel->addOrder('insertamum', 'DESC'); + $this->BewerbungstermineModel->addOrder('ende'); $this->BewerbungstermineModel->addLimit(1); $fristparams = array( diff --git a/content/statistik/projektarbeitexport.xls.php b/content/statistik/projektarbeitexport.xls.php index 213cb4b94..3b8e6b31e 100644 --- a/content/statistik/projektarbeitexport.xls.php +++ b/content/statistik/projektarbeitexport.xls.php @@ -103,7 +103,7 @@ if ($semester != '') $zeile=1; if ($result = $db->db_query($qry)) { - while ($row = $db->db_fetch_array($result)) + while ($row = $db->db_fetch_array($result, null, PGSQL_BOTH)) { $zeile++; $i = 0; @@ -150,7 +150,7 @@ if ($result = $db->db_query($qry)) } $zeile++; - while ($row_betreuer = $db->db_fetch_array($result_betreuer)) + while ($row_betreuer = $db->db_fetch_array($result_betreuer, null, PGSQL_BOTH)) { $i = 1; diff --git a/include/pgsql.class.php b/include/pgsql.class.php index 7e0333b9f..2daf2283a 100644 --- a/include/pgsql.class.php +++ b/include/pgsql.class.php @@ -172,12 +172,12 @@ class basis_db extends db return pg_result_seek($result, $offset); } - public function db_fetch_array($result=null) + public function db_fetch_array($result=null, $row=null, $result_type=PGSQL_NUM) { if(is_null($result)) - return pg_fetch_array($this->db_result); + return pg_fetch_array($this->db_result, $row, $result_type); else - return pg_fetch_array($result); + return pg_fetch_array($result, $row, $result_type); } public function db_num_fields($result=null) diff --git a/vilesci/bis/personalmeldung.php b/vilesci/bis/personalmeldung.php index 2c315c4bc..5cc7fcf8b 100644 --- a/vilesci/bis/personalmeldung.php +++ b/vilesci/bis/personalmeldung.php @@ -206,8 +206,7 @@ foreach ($mitarbeiter_arr as $mitarbeiter) $is_hauptberuflich = $bisverwendung_arr[count($bisverwendung_arr) - 1]->hauptberuflich; // wenn Hauptberuf / Nebenberuf im gleichen Jahr - laengere Dauer melden (Ueberwiegenheitprinzip) - if (in_array(true, array_column($bisverwendung_arr, 'hauptberuflich')) && // hauptberuflich UND - in_array(false, array_column($bisverwendung_arr, 'hauptberuflich'))) // nebenberuflich + if (has_hauptberufchange($bisverwendung_arr)) // nebenberuflich { $is_hauptberuflich = _getUeberwiegendeTaetigkeit_HauptNebenberuf($bisverwendung_arr); } @@ -235,12 +234,9 @@ foreach ($mitarbeiter_arr as $mitarbeiter) // ----------------------------------------------------------------------------------------------------------------- foreach ($bisverwendung_arr as $bisverwendung) { - if (empty($verwendung_arr) || // wenn erster Durchlauf ODER - (!(in_array($bisverwendung->ba1code, array_column($verwendung_arr, 'ba1code')) && // im verwendung_arr Beschaeftigungsart1 UND - in_array($bisverwendung->ba2code, array_column($verwendung_arr, 'ba2code')) && // Beschaeftigungsart2 UND - in_array($bisverwendung->verwendung_code, array_column($verwendung_arr, 'verwendung_code'))))) // Verwendung_code noch NICHT vorhanden + // Pruefen ob bereits eine Verwendung mit selben Ba1code, Ba2code und Verwendung vorhanden ist + if (empty($verwendung_arr) || !verwendung_exists($bisverwendung, $verwendung_arr)) { - // Temporaeren array mit Verwendungen mit gleichem Beschaeftigungsverhaeltnis und gleichem Verwendungscode erstellen $verwendung_tmp_arr = array_filter($bisverwendung_arr, function ($obj) use ($bisverwendung) { return @@ -403,16 +399,22 @@ function _add_relativesBA_und_anteiligeJVZAE($uid, $bisverwendung_arr) global $ss_kurzbz; global $ws_kurzbz; + $has_lehrtaetigkeit = false; + // Lehrtaetigkeit ermitteln $lema = new lehreinheitmitarbeiter(); $lema->getLehreinheiten_SWS_BISMeldung($uid, $ss_kurzbz); $lehre_ss_sws = $lema->result[0]; // Anzahl SS - Semesterwochenstunden + if (!is_null($lehre_ss_sws) && $lehre_ss_sws > 0) + $has_lehrtaetigkeit = true; + $lema = new lehreinheitmitarbeiter(); $lema->getLehreinheiten_SWS_BISMeldung($uid, $ws_kurzbz); $lehre_ws_sws = $lema->result[0]; // Anzahl WS - Semesterwochenstunden - $has_lehrtaetigkeit = !is_null($lehre_ss_sws) || !is_null($lehre_ws_sws); + if (!is_null($lehre_ws_sws) && $lehre_ws_sws > 0) + $has_lehrtaetigkeit = true; foreach ($bisverwendung_arr as $index => $bisverwendung) { @@ -772,7 +774,7 @@ function _getFunktionscontainer_Funktionscode123456($bisfunktion_arr) // Funktionsobjekt generieren if (!is_null($funktion_code) && // Funktionscode vorhanden UND (empty($funktion_arr) || // (Erster Durchlauf ODER - !in_array($funktion_code, array_column($funktion_arr, 'funktionscode')))) // Funktionsobjekt mit diesem Funktionscode nicht vorhanden) + !funktionscode_exists($funktion_code, $funktion_arr))) // Funktionsobjekt mit diesem Funktionscode nicht vorhanden) { $funktion_obj = new StdClass(); $funktion_obj->funktionscode = $funktion_code; @@ -825,11 +827,17 @@ function _addFunktionscontainer_Funktionscode7($uid, $funktion_arr) if (!empty($entwicklungsteam_arr)) { // Hoechste besondere Qualifikation - $besondere_qualifikation_code_arr = array_values(array_column($entwicklungsteam_arr, 'besqualcode')); + $besondere_qualifikation_code_arr = array(); + foreach($entwicklungsteam_arr as $row_entw) + $besondere_qualifikation_code_arr[] = $row_entw->besqualcode; + $besondere_qualifikation_code = max($besondere_qualifikation_code_arr); // Studiengaenge, wo Person Teil des Entwicklungsteams gewesen ist - $studiengang_kz_arr = array_values(array_column($entwicklungsteam_arr, 'studiengang_kz')); + $studiengang_kz_arr = array(); + foreach($entwicklungsteam_arr as $row_entw) + $studiengang_kz_arr[] = $row_entw->studiengang_kz; + sort($studiengang_kz_arr); // sortieren foreach($studiengang_kz_arr as &$studiengang_kz) // fuehrende Nullen fuer STG { @@ -876,8 +884,7 @@ function _getLehrecontainer($sws_proStg_arr) $is_wintersemester = substr($sws_proStg->studiensemester_kurzbz, 0, 2) == 'WS'; // Lehreobjekt generieren - if (empty($lehre_arr) || // Erster Durchlauf ODER - !in_array($sws_proStg->studiengang_kz, array_column($lehre_arr, 'StgKz'))) // Neu + if (empty($lehre_arr) || !lehre_stg_exists($sws_proStg->studiengang_kz, $lehre_arr)) { $lehre_obj = new StdClass(); @@ -1292,3 +1299,76 @@ function outputPlausibilitaetschecks($person_arr) } } } + +/** + * Prueft ob in Verwendung_arr bereits eine Kombination mit selben ba1code, ba2code und verwendungcode + * vorhanden ist + * @param $bisverwendung Verwendungsobjekt + * @param $verwendung_arr Array mit verwendungsobjekten + */ +function verwendung_exists($bisverwendung, $verwendung_arr) +{ + foreach ($verwendung_arr as $row_verwendung) + { + if ($row_verwendung->ba1code == $bisverwendung->ba1code + && $row_verwendung->ba2code == $bisverwendung->ba2code + && $row_verwendung->verwendung_code == $bisverwendung->verwendung_code) + { + return true; + } + } + return false; +} + +/** + * Prueft ob ein Studiengang bereits im Lehre Container vorhanden ist + * @param $studiengang_kz Studiengangskennzahl + * @param $lehre_arr Array mit Lehre Objekten + * @return true wenn der Studiengang bereits existiert + */ +function lehre_stg_exists($studiengang_kz, $lehre_arr) +{ + foreach($lehre_arr as $row) + { + if($row->StgKz == $studiengang_kz) + return true; + } + return false; +} + +/** + * Prueft ob sich das Hauptberuflich innerhalb der Verwendungen aendert + * @param $bisverwendung_arr Array mit Verwendungen + * @return boolean true wenn sich hauptberuflich unterscheidet. + */ +function has_hauptberufchange($bisverwendung_arr) +{ + $hauptberuflich_arr = array(); + + foreach($bisverwendung_arr as $row) + { + $hauptberuflich_arr[] = $row->hauptberuflich; + } + + if(count(array_unique($hauptberuflich_arr))>1) + return true; + else + return false; +} + +/** + * Prueft ob der Funktionscode in den Funktionen bereits vorkommt + * @param $funktion_code Funktionscode + * @param $funktion_arr Array mit Funktionsobjekten + * @return true wenn funktionscode vorkommt. + */ +function funktionscode_exists($funktion_code, $funktion_arr) +{ + foreach($funktion_arr as $row) + { + if($row->funktionscode == $funktion_code) + return true; + } + + return false; +} diff --git a/vilesci/stammdaten/auswertung_fhtw.php b/vilesci/stammdaten/auswertung_fhtw.php index 4150bc18b..752467913 100644 --- a/vilesci/stammdaten/auswertung_fhtw.php +++ b/vilesci/stammdaten/auswertung_fhtw.php @@ -1504,6 +1504,15 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit'])) $gebiete_arr = array(); while ($row = $db->db_fetch_object($result)) { + // Hack für BEW-BB, wenn auch BEW-DL-Ergebnisse vorliegen + if ($row->stg_kurzbz == 'BEW' && $row->orgform_kurzbz == 'BB') + { + if ($row->gebiet_id == 2 || $row->gebiet_id == 44 || $row->gebiet_id == 95 || $row->gebiet_id == 10) + { + continue; + } + } + if (!isset($ergebnis[$row->prestudent_id])) { $ergebnis[$row->prestudent_id] = new stdClass(); @@ -1578,6 +1587,11 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit'])) { $gebiete_arr[$row->prestudent_id][] = $row->gebiet_id; + // Gewichtung bei BEW BB bei Schlussfolgerungen manuell korrigieren, da es zur falschen Berechnung kommt, wenn es auch BEW-DL Ergebnisse gibt + if ($row->stg_kurzbz == 'BEW' && $row->orgform_kurzbz == 'BB' && $row->gebiet_id == 4) + { + $row->gewicht = 2; + } // Gesamtpunkte if (isset($ergebnis[$row->prestudent_id]->gesamt)) {