From 75d2cabdbe0eef90ae8c7f21bf6ae98091018655 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Thu, 20 Aug 2026 15:10:26 +0200 Subject: [PATCH] bugfix lv-plan --- application/controllers/api/frontend/v1/LvPlan.php | 1 + application/libraries/StundenplanLib.php | 5 +++-- application/models/ressource/Stundenplan_model.php | 8 +++++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/application/controllers/api/frontend/v1/LvPlan.php b/application/controllers/api/frontend/v1/LvPlan.php index 36054003c..14ee8fa12 100644 --- a/application/controllers/api/frontend/v1/LvPlan.php +++ b/application/controllers/api/frontend/v1/LvPlan.php @@ -114,6 +114,7 @@ class LvPlan extends FHCAPI_Controller // fetching lvplan events $result = $this->stundenplanlib->getEventsUser($start_date, $end_date, $uid); + $this->addMeta('bhsql', $this->db->last_query()); $lvplanEvents = $this->getDataOrTerminateWithError($result); // fetching moodle events diff --git a/application/libraries/StundenplanLib.php b/application/libraries/StundenplanLib.php index 8d40c7abd..14cd95a8a 100644 --- a/application/libraries/StundenplanLib.php +++ b/application/libraries/StundenplanLib.php @@ -94,13 +94,13 @@ class StundenplanLib if (isError($benutzer_gruppen)) return $benutzer_gruppen; $benutzer_gruppen = getData($benutzer_gruppen); - + $this->_ci->addMeta('bhgruppen', $benutzer_gruppen); // getting the student_lehrverbaende of the student in the different studiensemester $student_lehrverband = $this->fetchStudentlehrverbandFromStudiensemester($student_uid, $semester_range); if (isError($student_lehrverband)) return $student_lehrverband; $student_lehrverband = getData($student_lehrverband); - + $this->_ci->addMeta('bhstudlvbd', $student_lehrverband); $stundenplan_query = $this->_ci->StundenplanModel->getStundenplanQuery( $start, $end, @@ -632,6 +632,7 @@ class StundenplanLib $result->semester = $item->semester; $result->verband = $item->verband; $result->gruppe = $item->gruppe; + $result->studiensemester_kurzbz = $item->studiensemester_kurzbz; return $result; }, $lehrverband_query_result); diff --git a/application/models/ressource/Stundenplan_model.php b/application/models/ressource/Stundenplan_model.php index 1eddd2e2f..375b1c79f 100644 --- a/application/models/ressource/Stundenplan_model.php +++ b/application/models/ressource/Stundenplan_model.php @@ -561,6 +561,7 @@ class Stundenplan_model extends DB_Model $query = "select sp.* from lehre.vw_".$db_stpl_table." sp + left join lehre.tbl_lehreinheit le on le.lehreinheit_id = sp.lehreinheit_id WHERE sp.datum >= ".$this->escape($start_date)." AND sp.datum <= ".$this->escape($end_date); @@ -610,11 +611,12 @@ class Stundenplan_model extends DB_Model } foreach($studentlehrverbaende[$sem_date] 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).")"; + $studsemclause = "(le.studiensemester_kurzbz IS NULL OR le.studiensemester_kurzbz = " . $this->escape($lehrverband->studiensemester_kurzbz) . ")"; + $query .= "(((" . $studsemclause . " AND 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 - $query .= "OR (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 is null OR sp.gruppe='') AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)." AND ".$this->escape($sem_date_range->ende).")"; + $query .= "OR (" . $studsemclause . " AND 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 is null OR sp.gruppe='') AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)." AND ".$this->escape($sem_date_range->ende).")"; // Eintraege fuer das ganze Semester - $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 (" . $studsemclause . " AND 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)"; $query .="OR";