From 103b93a2b858a4de326591fa7d3df588d195c686 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Tue, 20 Dec 2022 22:22:36 +0100 Subject: [PATCH 1/6] getStundenplandata method: student lehreinheiten are taken from Studienplan, not view vw_studentlehrverband --- include/lehrstunde.class.php | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/include/lehrstunde.class.php b/include/lehrstunde.class.php index e2bba04e6..ab839957b 100644 --- a/include/lehrstunde.class.php +++ b/include/lehrstunde.class.php @@ -1119,13 +1119,26 @@ 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)." + AND ( + EXISTS + ( + SELECT 1 FROM public.tbl_studentlehrverband stlv + WHERE student_uid=".$this->db_add_param($student_uid)." + AND studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)." + AND studiengang_kz = stpl.studiengang_kz + AND (semester = stpl.semester OR stpl.semester IS NULL) + AND (verband = stpl.verband OR stpl.verband IS NULL OR stpl.verband ='0' OR stpl.verband = '') + AND (gruppe = stpl.gruppe OR stpl.gruppe IS NULL OR stpl.gruppe ='0' OR stpl.gruppe = '') + AND stpl.gruppe_kurzbz IS NULL + ) + OR EXISTS + ( + SELECT 1 FROM public.tbl_benutzergruppe + WHERE uid=".$this->db_add_param($student_uid)." + AND gruppe_kurzbz = stpl.gruppe_kurzbz + ) + ) "; } else return false; From 19ebe3cfa8f3dd1a953e49db44d2fbb8eb525120 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Wed, 21 Dec 2022 17:43:42 +0100 Subject: [PATCH 2/6] lehrstunde getstudienplan method: added studiensemester to "special groups" test for students --- include/lehrstunde.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/include/lehrstunde.class.php b/include/lehrstunde.class.php index ab839957b..e79533ae7 100644 --- a/include/lehrstunde.class.php +++ b/include/lehrstunde.class.php @@ -1137,6 +1137,7 @@ class lehrstunde extends basis_db SELECT 1 FROM public.tbl_benutzergruppe WHERE uid=".$this->db_add_param($student_uid)." AND gruppe_kurzbz = stpl.gruppe_kurzbz + AND (studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)." OR studiensemester_kurzbz IS NULL) ) ) "; } From 514205c17134c4f5909f4f1d314c28f633701429 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Fri, 23 Dec 2022 02:44:22 +0100 Subject: [PATCH 3/6] lehrstunde get Stundenplan: changed how data for students is retrieved, so that correct gruppen, lektoren etc can be displayed --- include/lehrstunde.class.php | 57 ++++++++++++++++++++++++++++-------- 1 file changed, 45 insertions(+), 12 deletions(-) diff --git a/include/lehrstunde.class.php b/include/lehrstunde.class.php index e79533ae7..7c14a6837 100644 --- a/include/lehrstunde.class.php +++ b/include/lehrstunde.class.php @@ -570,6 +570,8 @@ class lehrstunde extends basis_db $sql_query_stdplan.=' WHERE'.$sql_query; } + var_dump($sql_query_stdplan); + //Datenbankabfrage if (!$this->db_query($sql_query_stdplan)) { @@ -1119,26 +1121,57 @@ class lehrstunde extends basis_db } elseif($student_uid!='') { - $qry.=" tbl_lehreinheit.studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)." + $qry.=" tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." AND ( + lehreinheit_id IN ( + SELECT tbl_lehreinheit.lehreinheit_id + FROM lehre.tbl_lehreinheitgruppe, + tbl_benutzergruppe, + lehre.tbl_lehreinheit + WHERE tbl_lehreinheitgruppe.gruppe_kurzbz::text = tbl_benutzergruppe.gruppe_kurzbz::text + 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 + WHERE + ( + ( + tbl_lehreinheit.lehreinheit_id = tbl_lehreinheitgruppe.lehreinheit_id + AND tbl_lehreinheit.studiensemester_kurzbz = tbl_studentlehrverband.studiensemester_kurzbz + 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 + ) + ) + ) + AND student_uid=".$this->db_add_param($student_uid)." AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." + ) + OR EXISTS ( - SELECT 1 FROM public.tbl_studentlehrverband stlv - WHERE student_uid=".$this->db_add_param($student_uid)." - AND studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)." - AND studiengang_kz = stpl.studiengang_kz + SELECT 1 FROM public.tbl_studentlehrverband lvb + JOIN lehre.tbl_lehreinheit le ON lvb.studiensemester_kurzbz = le.studiensemester_kurzbz AND le.lehreinheit_id = tbl_lehreinheit.lehreinheit_id + WHERE + studiengang_kz = stpl.studiengang_kz AND (semester = stpl.semester OR stpl.semester IS NULL) AND (verband = stpl.verband OR stpl.verband IS NULL OR stpl.verband ='0' OR stpl.verband = '') AND (gruppe = stpl.gruppe OR stpl.gruppe IS NULL OR stpl.gruppe ='0' OR stpl.gruppe = '') + AND lvb.student_uid=".$this->db_add_param($student_uid)." AND lvb.studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)." AND stpl.gruppe_kurzbz IS NULL ) - OR EXISTS - ( - SELECT 1 FROM public.tbl_benutzergruppe - WHERE uid=".$this->db_add_param($student_uid)." - AND gruppe_kurzbz = stpl.gruppe_kurzbz - AND (studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)." OR studiensemester_kurzbz IS NULL) - ) ) "; } else From b8e973c3135361d31dcf8af8f03df3df4d5d3607 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Fri, 23 Dec 2022 02:45:48 +0100 Subject: [PATCH 4/6] lehrstunde get Stundenplan data: removed var_dump --- include/lehrstunde.class.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/lehrstunde.class.php b/include/lehrstunde.class.php index 7c14a6837..8d661ff2a 100644 --- a/include/lehrstunde.class.php +++ b/include/lehrstunde.class.php @@ -570,8 +570,6 @@ class lehrstunde extends basis_db $sql_query_stdplan.=' WHERE'.$sql_query; } - var_dump($sql_query_stdplan); - //Datenbankabfrage if (!$this->db_query($sql_query_stdplan)) { From 6d05df876bdc3df35bf89df099b15c72c73be10d Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Fri, 23 Dec 2022 20:18:19 +0100 Subject: [PATCH 5/6] lehrstunde.class.php: added with clause to getStundenplanData for speedup, removed brackets, added comments --- include/lehrstunde.class.php | 44 ++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/include/lehrstunde.class.php b/include/lehrstunde.class.php index 8d661ff2a..e87cdd45a 100644 --- a/include/lehrstunde.class.php +++ b/include/lehrstunde.class.php @@ -1120,6 +1120,7 @@ class lehrstunde extends basis_db elseif($student_uid!='') { $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 @@ -1138,36 +1139,41 @@ class lehrstunde extends basis_db lehre.tbl_lehreinheit WHERE ( - ( - tbl_lehreinheit.lehreinheit_id = tbl_lehreinheitgruppe.lehreinheit_id - AND tbl_lehreinheit.studiensemester_kurzbz = tbl_studentlehrverband.studiensemester_kurzbz - 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 - ) + tbl_lehreinheit.lehreinheit_id = tbl_lehreinheitgruppe.lehreinheit_id + AND tbl_lehreinheit.studiensemester_kurzbz = tbl_studentlehrverband.studiensemester_kurzbz + 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 ) ) - AND student_uid=".$this->db_add_param($student_uid)." AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." + AND student_uid=".$this->db_add_param($student_uid)." + AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." ) OR + -- if student is directly assigned in studienplan EXISTS ( - SELECT 1 FROM public.tbl_studentlehrverband lvb - JOIN lehre.tbl_lehreinheit le ON lvb.studiensemester_kurzbz = le.studiensemester_kurzbz AND le.lehreinheit_id = tbl_lehreinheit.lehreinheit_id + WITH stud_lvb AS ( + SELECT studiengang_kz, semester, verband, gruppe, studiensemester_kurzbz + FROM public.tbl_studentlehrverband + WHERE student_uid=".$this->db_add_param($student_uid)." + AND studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)." + ) + SELECT 1 FROM stud_lvb + JOIN lehre.tbl_lehreinheit le ON stud_lvb.studiensemester_kurzbz = le.studiensemester_kurzbz AND le.lehreinheit_id = tbl_lehreinheit.lehreinheit_id WHERE studiengang_kz = stpl.studiengang_kz AND (semester = stpl.semester OR stpl.semester IS NULL) AND (verband = stpl.verband OR stpl.verband IS NULL OR stpl.verband ='0' OR stpl.verband = '') AND (gruppe = stpl.gruppe OR stpl.gruppe IS NULL OR stpl.gruppe ='0' OR stpl.gruppe = '') - AND lvb.student_uid=".$this->db_add_param($student_uid)." AND lvb.studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)." AND stpl.gruppe_kurzbz IS NULL ) ) "; From 9c4045256288800a6d47b04f7c91d9f44192f4cf Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 5 Jan 2023 18:25:15 +0100 Subject: [PATCH 6/6] fas lv list: improved speed of query getting the lv by relocating studienplan exists check --- include/lehrstunde.class.php | 80 ++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 41 deletions(-) diff --git a/include/lehrstunde.class.php b/include/lehrstunde.class.php index e87cdd45a..19c1f605f 100644 --- a/include/lehrstunde.class.php +++ b/include/lehrstunde.class.php @@ -1123,27 +1123,32 @@ class lehrstunde extends basis_db -- 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 - WHERE tbl_lehreinheitgruppe.gruppe_kurzbz::text = tbl_benutzergruppe.gruppe_kurzbz::text - 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 - WHERE + 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 + ( ( - tbl_lehreinheit.lehreinheit_id = tbl_lehreinheitgruppe.lehreinheit_id - AND tbl_lehreinheit.studiensemester_kurzbz = tbl_studentlehrverband.studiensemester_kurzbz - 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 @@ -1154,29 +1159,22 @@ class lehrstunde extends basis_db AND tbl_lehreinheitgruppe.gruppe_kurzbz IS NULL ) ) - AND student_uid=".$this->db_add_param($student_uid)." - AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." - ) - OR - -- if student is directly assigned in studienplan - EXISTS - ( - WITH stud_lvb AS ( - SELECT studiengang_kz, semester, verband, gruppe, studiensemester_kurzbz - FROM public.tbl_studentlehrverband - WHERE student_uid=".$this->db_add_param($student_uid)." - AND studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)." + -- 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 ) - SELECT 1 FROM stud_lvb - JOIN lehre.tbl_lehreinheit le ON stud_lvb.studiensemester_kurzbz = le.studiensemester_kurzbz AND le.lehreinheit_id = tbl_lehreinheit.lehreinheit_id - WHERE - studiengang_kz = stpl.studiengang_kz - AND (semester = stpl.semester OR stpl.semester IS NULL) - AND (verband = stpl.verband OR stpl.verband IS NULL OR stpl.verband ='0' OR stpl.verband = '') - AND (gruppe = stpl.gruppe OR stpl.gruppe IS NULL OR stpl.gruppe ='0' OR stpl.gruppe = '') - AND stpl.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;