diff --git a/include/lehrstunde.class.php b/include/lehrstunde.class.php index e2bba04e6..19c1f605f 100644 --- a/include/lehrstunde.class.php +++ b/include/lehrstunde.class.php @@ -1119,13 +1119,62 @@ class lehrstunde extends basis_db } elseif($student_uid!='') { - $qry.=" lehreinheit_id in ( - SELECT - lehreinheit_id - FROM - campus.vw_student_lehrveranstaltung - WHERE - uid=".$this->db_add_param($student_uid)." AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")"; + $qry.=" tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." + -- if student is assigned to lehreinheit through lehreinheitgruppe. + AND ( + lehreinheit_id IN ( + SELECT tbl_lehreinheit.lehreinheit_id + FROM lehre.tbl_lehreinheitgruppe, + tbl_benutzergruppe, + lehre.tbl_lehreinheit, + lehre.tbl_lehrveranstaltung + WHERE tbl_lehreinheitgruppe.gruppe_kurzbz::text = tbl_benutzergruppe.gruppe_kurzbz::text + AND tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrveranstaltung_id + AND tbl_lehreinheit.lehreinheit_id = tbl_lehreinheitgruppe.lehreinheit_id + AND tbl_lehreinheit.studiensemester_kurzbz::text = tbl_benutzergruppe.studiensemester_kurzbz::text + AND uid=".$this->db_add_param($student_uid)." + AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." + UNION + SELECT tbl_lehreinheit.lehreinheit_id + FROM lehre.tbl_lehreinheitgruppe, + tbl_studentlehrverband, + lehre.tbl_lehreinheit, + lehre.tbl_lehrveranstaltung + WHERE tbl_lehreinheit.lehreinheit_id = tbl_lehreinheitgruppe.lehreinheit_id + AND tbl_lehreinheit.studiensemester_kurzbz = tbl_studentlehrverband.studiensemester_kurzbz + AND tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrveranstaltung_id + AND tbl_studentlehrverband.studiengang_kz = tbl_lehreinheitgruppe.studiengang_kz + AND tbl_studentlehrverband.semester = tbl_lehreinheitgruppe.semester + AND + ( + ( + ( + btrim(tbl_studentlehrverband.verband::text) = btrim(tbl_lehreinheitgruppe.verband::text) + OR (tbl_lehreinheitgruppe.verband IS NULL OR btrim(tbl_lehreinheitgruppe.verband::text) = '') + AND tbl_lehreinheitgruppe.gruppe_kurzbz IS NULL + ) + AND ( + btrim(tbl_studentlehrverband.gruppe::text) = btrim(tbl_lehreinheitgruppe.gruppe::text) + OR (tbl_lehreinheitgruppe.gruppe IS NULL OR btrim(tbl_lehreinheitgruppe.gruppe::text) = '') + AND tbl_lehreinheitgruppe.gruppe_kurzbz IS NULL + ) + ) + -- add also lehreinheiten directly from Stundenplan + OR EXISTS ( + SELECT 1 FROM lehre.tbl_stundenplan + WHERE + lehreinheit_id = tbl_lehreinheit.lehreinheit_id + AND studiengang_kz = tbl_studentlehrverband.studiengang_kz + AND (semester = tbl_studentlehrverband.semester OR semester IS NULL) + AND (verband = tbl_studentlehrverband.verband OR verband IS NULL OR verband ='0' OR verband = '') + AND (gruppe = tbl_studentlehrverband.gruppe OR gruppe IS NULL OR gruppe ='0' OR gruppe = '') + AND gruppe_kurzbz IS NULL + ) + ) + AND student_uid=".$this->db_add_param($student_uid)." + AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." + ) + )"; } else return false;