diff --git a/include/studiengang.class.php b/include/studiengang.class.php index 3a6861443..d39fb723a 100644 --- a/include/studiengang.class.php +++ b/include/studiengang.class.php @@ -244,31 +244,31 @@ class studiengang extends basis_db } /** - * Gibt alle aktiven Studiengaenge und Lehrgaenge (mit Typ) zurueck, bei denen das Attribut onlinebewerbung true ist. + * Gibt alle aktiven Studiengaenge und Lehrgaenge (mit Typ) zurueck, bei denen das Attribut onlinebewerbung true ist. * - * @param string $order Spalten, nach denen Sortiert werden soll.
Default: tbl_studiengang.typ, tbl_lgartcode.bezeichnung ASC, tbl_studiengang.bezeichnung. + * @param string $order Spalten, nach denen Sortiert werden soll.
Default: tbl_studiengang.typ, tbl_lgartcode.bezeichnung ASC, tbl_studiengang.bezeichnung. * @return boolean */ public function getAllForOnlinebewerbung($order = 'tbl_studiengang.typ, tbl_lgartcode.bezeichnung ASC, tbl_studiengang.bezeichnung') { - $qry = "SELECT - tbl_studiengang.studiengang_kz, - tbl_studiengang.typ, + $qry = "SELECT + tbl_studiengang.studiengang_kz, + tbl_studiengang.typ, tbl_studiengangstyp.bezeichnung AS typ_bezeichnung, tbl_studiengang.lgartcode, tbl_studiengang.bezeichnung AS studiengangbezeichnung, tbl_studiengang.english AS studiengangbezeichnung_englisch, - tbl_organisationseinheit.organisationseinheittyp_kurzbz, + tbl_organisationseinheit.organisationseinheittyp_kurzbz, tbl_organisationseinheit.standort, tbl_lgartcode.bezeichnung AS lehrgangsart - FROM public.tbl_studiengang - LEFT JOIN bis.tbl_lgartcode USING (lgartcode) + FROM public.tbl_studiengang + LEFT JOIN bis.tbl_lgartcode USING (lgartcode) LEFT JOIN public.tbl_organisationseinheit USING (oe_kurzbz) JOIN public.tbl_organisationseinheittyp USING (organisationseinheittyp_kurzbz) JOIN public.tbl_studiengangstyp USING (typ) - WHERE tbl_studiengang.onlinebewerbung IS TRUE + WHERE tbl_studiengang.onlinebewerbung IS TRUE AND tbl_studiengang.aktiv IS TRUE"; - + $qry .= " ORDER BY ".$order; if(!$result = $this->db_query($qry)) @@ -276,12 +276,12 @@ class studiengang extends basis_db $this->errormsg = 'Datensatz konnte nicht geladen werden'; return false; } - + while($row = $this->db_fetch_object($result)) { $this->result[] = $row; } - + return true; } @@ -1045,4 +1045,32 @@ class studiengang extends basis_db } return true; } + + /** + * Prueft ob ein Studiengang in einem Studiensemester mehrere Studienplaene mit unterschiedlichen Orgformen hat + * @param $studiengang_kz integer Kennzahl des Studiengangs. + * @param $studiensemester_kurzbz varchar Studiensemester (optional). + * @return true wenn mehrere Orgformen vorhanden sind, false wenn nicht. + */ + public function isMischform($studiengang_kz, $studiensemester_kurzbz = null) + { + $qry = "SELECT distinct orgform_kurzbz + FROM + lehre.tbl_studienplan + JOIN lehre.tbl_studienordnung USING(studienordnung_id) + JOIN lehre.tbl_studienplan_semester USING(studienplan_id) + WHERE + studiengang_kz=".$this->db_add_param($studiengang_kz); + + if(!is_null($studiensemester_kurzbz)) + $qry .= " AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + if($result = $this->db_query($qry)) + { + if($this->db_num_rows($result)>1) + return true; + else + return false; + } + } } diff --git a/vilesci/bis/studentenmeldung.php b/vilesci/bis/studentenmeldung.php index 236e8392b..84dbf2b1e 100644 --- a/vilesci/bis/studentenmeldung.php +++ b/vilesci/bis/studentenmeldung.php @@ -300,7 +300,9 @@ if($result = $db->db_query($qry)) //Bewerberblock bei Ausserordentlichen nicht anzeigen if($stg_kz!=('9'.$erhalter)) { - if($orgform_code==3) + $stg_obj = new studiengang(); + + if($orgform_code==3 || $stg_obj->isMischform($stg_kz,$ssem) || $stg_obj->isMischform($stg_kz,$psem)) { $orgcodes = array_unique($orgform_code_array); //Mischform @@ -1005,7 +1007,7 @@ function GenerateXMLStudentBlock($row) $datei.=" ".$row->ersatzkennzeichen.""; } - + $datei.=" ".$row->staatsbuergerschaft." ".$plz."