Compare commits

...
Author SHA1 Message Date
Manuela Thamer 1a5abba4f1 bugfix: use new version of query getStundenplanQuery 2026-08-26 15:09:35 +02:00
2 changed files with 29 additions and 26 deletions
@@ -60,8 +60,8 @@ class LvTermine extends FHCAPI_Controller
$semester_range, $semester_range,
$benutzer_gruppen, $benutzer_gruppen,
$student_lehrverband, $student_lehrverband,
true, $dbStundenplanTable,
$dbStundenplanTable true
); );
if(!$stundenplan_query) if(!$stundenplan_query)
@@ -532,12 +532,12 @@ class Stundenplan_model extends DB_Model
/** /**
* NO STANDALONE FUNCTION - Generates a SQL query string to fetch 'stundenplan' events for a specific student within the current semester. * NO STANDALONE FUNCTION - Generates a SQL query string to fetch 'stundenplan' events for a specific student within the current semester.
* *
* @param isLvList if condition needed for Tab LV Termine is given * @param showLvsStundenplan if Lvs of stundenplan should be shown
* @param db_stpl_table enables switch to db 'stundenplandev' * @param db_stpl_table enables switch to db 'stundenplandev'
* *
* @return mixed * @return mixed
*/ */
public function getStundenplanQuery($start_date, $end_date, $semester, $gruppen, $studentlehrverbaende, $isLvList=false, $db_stpl_table='stundenplan'){ public function getStundenplanQuery($start_date, $end_date, $semester, $gruppen, $studentlehrverbaende, $db_stpl_table='stundenplan', $showLvsStundenplan=false){
// helper function to check if either $gruppen or $studentlehrverbaende are empty for each semester // helper function to check if either $gruppen or $studentlehrverbaende are empty for each semester
$emptyCheck = function($toBeCheckedArray) use ($semester){ $emptyCheck = function($toBeCheckedArray) use ($semester){
@@ -559,7 +559,7 @@ class Stundenplan_model extends DB_Model
} }
$query = $query =
"select sp.* "select sp.*
from lehre.vw_".$db_stpl_table." sp from lehre.vw_".$db_stpl_table." sp
WHERE WHERE
sp.datum >= ".$this->escape($start_date)." sp.datum >= ".$this->escape($start_date)."
@@ -594,27 +594,15 @@ class Stundenplan_model extends DB_Model
$query = substr($query, 0, -2); $query = substr($query, 0, -2);
} }
//Condition for showLVList FHC4
if(!$isLvList)
$stringGroupLv = "AND gruppe_kurzbz is null";
else
$stringGroupLv ="";
foreach($semester as $sem=>$semester_date_range) foreach($semester as $sem=>$semester_date_range)
{ {
foreach($semester_date_range as $sem_date => $sem_date_range) foreach($semester_date_range as $sem_date => $sem_date_range)
{ {
if(!array_key_exists($sem,$studentlehrverbaende) || count($studentlehrverbaende[$sem]) == 0) if(!array_key_exists($sem_date,$studentlehrverbaende) || count($studentlehrverbaende[$sem_date]) == 0)
{ {
continue; continue;
} }
$studlvbds = array_filter( foreach($studentlehrverbaende[$sem_date] as $key=>$lehrverband)
$studentlehrverbaende[$sem],
function($value) use ($sem_date) {
return $value->studiensemester_kurzbz === $sem_date;
}
);
foreach($studlvbds as $key=>$lehrverband)
{ {
$query .= "(((sp.studiengang_kz = ".$this->escape($lehrverband->studiengang_kz)." AND sp.semester = ".$this->escape($lehrverband->semester)." AND sp.verband = ".$this->escape($lehrverband->verband)." AND sp.gruppe = ".$this->escape($lehrverband->gruppe)." AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)." AND ".$this->escape($sem_date_range->ende).")"; $query .= "(((sp.studiengang_kz = ".$this->escape($lehrverband->studiengang_kz)." AND sp.semester = ".$this->escape($lehrverband->semester)." AND sp.verband = ".$this->escape($lehrverband->verband)." AND sp.gruppe = ".$this->escape($lehrverband->gruppe)." AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)." AND ".$this->escape($sem_date_range->ende).")";
// Eintraege fuer den ganzen Verband // Eintraege fuer den ganzen Verband
@@ -623,7 +611,22 @@ class Stundenplan_model extends DB_Model
$query .= "OR (sp.studiengang_kz = ".$this->escape($lehrverband->studiengang_kz)." AND sp.semester = ".$this->escape($lehrverband->semester)." AND (sp.verband is null OR sp.verband='') AND sp.datum BETWEEN ".$this->escape($sem_date_range->start) $query .= "OR (sp.studiengang_kz = ".$this->escape($lehrverband->studiengang_kz)." AND sp.semester = ".$this->escape($lehrverband->semester)." AND (sp.verband is null OR sp.verband='') AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)
." AND ".$this->escape($sem_date_range->ende).")) AND gruppe_kurzbz is null)"; ." AND ".$this->escape($sem_date_range->ende).")) AND gruppe_kurzbz is null)";
$query .="OR"; // Eintraege vom Stundenplan
if($showLvsStundenplan)
{
$query .= "
OR EXISTS (
SELECT 1
FROM lehre.tbl_stundenplan tsp
WHERE tsp.lehreinheit_id = sp.lehreinheit_id
AND tsp.studiengang_kz = " . $this->escape($lehrverband->studiengang_kz) . "
AND (tsp.semester = " . $this->escape($lehrverband->semester) . " OR tsp.semester IS NULL)
AND (tsp.verband = " . $this->escape($lehrverband->verband) . " OR tsp.verband IS NULL OR tsp.verband = '0' OR tsp.verband = '')
AND (tsp.gruppe = " . $this->escape($lehrverband->gruppe) . " OR tsp.gruppe IS NULL OR tsp.gruppe = '0' OR tsp.gruppe = '')
AND tsp.gruppe_kurzbz IS NULL)";
}
$query .= "OR";
} }
} }
} }