diff --git a/application/controllers/api/frontend/v1/LvPlan.php b/application/controllers/api/frontend/v1/LvPlan.php index 14ee8fa12..f9d2cc3cf 100644 --- a/application/controllers/api/frontend/v1/LvPlan.php +++ b/application/controllers/api/frontend/v1/LvPlan.php @@ -114,7 +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 14cd95a8a..20613c471 100644 --- a/application/libraries/StundenplanLib.php +++ b/application/libraries/StundenplanLib.php @@ -112,6 +112,7 @@ class StundenplanLib return success([]); $stundenplan_data = $this->_ci->StundenplanModel->stundenplanGruppierung($stundenplan_query); + $this->_ci->addMeta('bhsql', $this->_ci->db->last_query()); if (isError($stundenplan_data)) return $stundenplan_data; $stundenplan_data = getData($stundenplan_data) ?? []; diff --git a/application/models/ressource/Stundenplan_model.php b/application/models/ressource/Stundenplan_model.php index 375b1c79f..0f51e4b71 100644 --- a/application/models/ressource/Stundenplan_model.php +++ b/application/models/ressource/Stundenplan_model.php @@ -561,7 +561,6 @@ 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); @@ -605,18 +604,23 @@ class Stundenplan_model extends DB_Model { foreach($semester_date_range as $sem_date => $sem_date_range) { - if(!array_key_exists($sem_date,$studentlehrverbaende) || count($studentlehrverbaende[$sem_date]) == 0) + if(!array_key_exists($sem,$studentlehrverbaende) || count($studentlehrverbaende[$sem]) == 0) { continue; } - foreach($studentlehrverbaende[$sem_date] as $key=>$lehrverband) + $studlvbds = array_filter( + $studentlehrverbaende[$sem], + function($value) use ($sem_date) { + return $value->studiensemester_kurzbz === $sem_date; + } + ); + foreach($studlvbds as $key=>$lehrverband) { - $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).")"; + $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 - $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).")"; + $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).")"; // Eintraege fuer das ganze Semester - $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) + $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)"; $query .="OR";