From b5510f023efff1480db07a49816e231fd460e81e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 2 Dec 2020 12:18:02 +0100 Subject: [PATCH] Fixed Corner Case where wrong actual Studysemester ist retrieved if Start and End Dates are overlapping --- .../organisation/Studiensemester_model.php | 4 +-- include/studiensemester.class.php | 34 +++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/application/models/organisation/Studiensemester_model.php b/application/models/organisation/Studiensemester_model.php index 41baf2489..07783cf0d 100644 --- a/application/models/organisation/Studiensemester_model.php +++ b/application/models/organisation/Studiensemester_model.php @@ -132,7 +132,7 @@ class Studiensemester_model extends DB_Model $query .= ' WHERE SUBSTRING(studiensemester_kurzbz FROM 1 FOR 2) = \'' . $ss . '\''; } - $query .= ' ORDER BY delta LIMIT 1'; + $query .= ' ORDER BY delta, start LIMIT 1'; return $this->execQuery($query); } @@ -188,7 +188,7 @@ class Studiensemester_model extends DB_Model { $query = "SELECT studiensemester_kurzbz, start, ende FROM public.vw_studiensemester WHERE studiensemester_kurzbz <> ? - ORDER BY delta LIMIT 1"; + ORDER BY delta, start LIMIT 1"; return $this->execQuery($query, array($studiensemester_kurzbz)); } diff --git a/include/studiensemester.class.php b/include/studiensemester.class.php index 98b94a33d..370cda661 100644 --- a/include/studiensemester.class.php +++ b/include/studiensemester.class.php @@ -287,7 +287,7 @@ class studiensemester extends basis_db $qry.= " WHERE substring(studiensemester_kurzbz from 1 for 2)='$ss' "; } - $qry.=' ORDER BY delta LIMIT 1'; + $qry.=' ORDER BY delta, start LIMIT 1'; if(!$this->db_query($qry)) { @@ -573,7 +573,7 @@ class studiensemester extends basis_db { $qry = "SELECT studiensemester_kurzbz, start, ende FROM public.vw_studiensemester WHERE studiensemester_kurzbz<>".$this->db_add_param($studiensemester_kurzbz)." - ORDER BY delta LIMIT 1"; + ORDER BY delta, start LIMIT 1"; if($this->db_query($qry)) { @@ -907,13 +907,13 @@ class studiensemester extends basis_db ORDER BY ende ASC"; if ($plus != '') $qry .= " LIMIT ".$this->db_add_param($plus, FHC_INTEGER); - + $qry .= ") UNION (SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE start <= now() ORDER BY start DESC "; if ($minus != '') $qry .= " LIMIT ".$this->db_add_param($minus, FHC_INTEGER); - + $qry .= ")) ORDER BY ".$order; if($this->db_query($qry)) @@ -967,7 +967,7 @@ class studiensemester extends basis_db FROM tbl_studiensemester ) a WHERE a.studiensemester_kurzbz!=".$this->db_add_param($studiensemester_kurzbz)." - ORDER BY delta LIMIT 1"; + ORDER BY delta, start LIMIT 1"; if($this->db_query($qry)) { @@ -1029,7 +1029,7 @@ class studiensemester extends basis_db return false; } } - + /** * Gibt das Wintersemester eines Studienjahres zurück (zb WS2017) * @@ -1040,10 +1040,10 @@ class studiensemester extends basis_db { $qry = " SELECT studiensemester_kurzbz - FROM tbl_studiensemester + FROM tbl_studiensemester WHERE studienjahr_kurzbz LIKE " . $this->db_add_param($studienjahr_kurzbz) . " AND studiensemester_kurzbz LIKE 'WS%';"; - + if ($result = $this->db_query($qry)) { if ($row = $this->db_fetch_object()) @@ -1063,7 +1063,7 @@ class studiensemester extends basis_db return false; } } - + /** * Gibt das Sommersemester eines Studienjahres zurück (zb SS2018) * @@ -1074,10 +1074,10 @@ class studiensemester extends basis_db { $qry = " SELECT studiensemester_kurzbz - FROM tbl_studiensemester + FROM tbl_studiensemester WHERE studienjahr_kurzbz LIKE " . $this->db_add_param($studienjahr_kurzbz) . " AND studiensemester_kurzbz LIKE 'SS%';"; - + if ($result = $this->db_query($qry)) { if ($row = $this->db_fetch_object()) @@ -1097,7 +1097,7 @@ class studiensemester extends basis_db return false; } } - + /** * Gibt die Studiensemester zwischen $studiensemesterStart und $studiensemesterEnde zurück * Wenn $inklusive true ist (default), werden auch $studiensemesterStart und $studiensemesterEnde selbst zurückgegeben @@ -1116,7 +1116,7 @@ class studiensemester extends basis_db } if ($inklusive = true) $equalSign = '='; - else + else $equalSign = ''; $qry = " SELECT * @@ -1132,13 +1132,13 @@ class studiensemester extends basis_db WHERE studiensemester_kurzbz = " . $this->db_add_param($studiensemesterEnde) . " ) ORDER BY start DESC;"; - + if($this->db_query($qry)) { while($row = $this->db_fetch_object()) { $stsem_obj = new studiensemester(); - + $stsem_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; $stsem_obj->start = $row->start; $stsem_obj->ende = $row->ende; @@ -1146,7 +1146,7 @@ class studiensemester extends basis_db $stsem_obj->studienjahr_kurzbz = $row->studienjahr_kurzbz; $stsem_obj->beschreibung = $row->beschreibung; $stsem_obj->onlinebewerbung = $row->onlinebewerbung; - + $this->studiensemester[] = $stsem_obj; } return true; @@ -1158,4 +1158,4 @@ class studiensemester extends basis_db } } } -?> \ No newline at end of file +?>