diff --git a/include/ferien.class.php b/include/ferien.class.php
index 3246502f7..d95ee8f15 100644
--- a/include/ferien.class.php
+++ b/include/ferien.class.php
@@ -24,6 +24,7 @@
* @create 07-12-2006
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
+require_once(dirname(__FILE__).'/organisationseinheit.class.php');
class ferien extends basis_db
{
@@ -62,8 +63,55 @@ class ferien extends basis_db
$this->errormsg = 'Studiengang_kz ist ungültig';
return false;
}
+
+ // get oe from studiengang
+ $sql_query="
+ SELECT
+ oe_kurzbz
+ FROM
+ public.tbl_studiengang
+ WHERE
+ studiengang_kz=".$this->db_add_param($stg_kz, FHC_INTEGER)."
+ ORDER BY
+ studiengang_kz";
- $sql_query="SELECT * FROM lehre.tbl_ferien WHERE studiengang_kz=0 OR studiengang_kz=".$this->db_add_param($stg_kz, FHC_INTEGER)." ORDER BY vondatum;";
+ if (!$this->db_query($sql_query))
+ {
+ $this->errormsg = $this->db_last_error();
+ return false;
+ }
+
+ $oe_kurzbz = '';
+ while ($row = $this->db_fetch_object())
+ {
+ $oe_kurzbz = $row->oe_kurzbz;
+ }
+
+ // get all parents oes
+ $organisationseinheit = new organisationseinheit();
+ $parents = $organisationseinheit->getParents($oe_kurzbz);
+
+ if (!$parents)
+ {
+ $this->errormsg = $parents->errormsg;
+ return false;
+ }
+
+ $sql_query="
+ SELECT
+ *
+ FROM
+ lehre.tbl_ferien
+ WHERE
+ (CASE
+ WHEN oe_kurzbz IS NOT NULL
+ THEN oe_kurzbz IN (".$this->implode4SQL($parents).")
+ ELSE
+ studiengang_kz=0
+ OR studiengang_kz=".$this->db_add_param($stg_kz, FHC_INTEGER)."
+ END)
+ ORDER BY
+ vondatum";
if (!$this->db_query($sql_query))
{
diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php
index 514ee3496..145cf5596 100644
--- a/system/dbupdate_3.4.php
+++ b/system/dbupdate_3.4.php
@@ -250,7 +250,7 @@ $tabellen=array(
"lehre.tbl_anrechnung_begruendung" => array("begruendung_id","bezeichnung"),
"lehre.tbl_anrechnungszeitraum" => array("anrechnungszeitraum_id","studiensemester_kurzbz","anrechnungstart","anrechnungende", "insertamum", "insertvon"),
"lehre.tbl_betreuerart" => array("betreuerart_kurzbz","beschreibung","aktiv"),
- "lehre.tbl_ferien" => array("ferien_id","bezeichnung","studiengang_kz","vondatum","bisdatum"),
+ "lehre.tbl_ferien" => array("ferien_id","bezeichnung","studiengang_kz","vondatum","bisdatum","oe_kurzbz","studienplan_id","ferientyp_kurzbz","insertamum","insertvon","updateamum","updatevon"),
"lehre.tbl_lehreinheit" => array("lehreinheit_id","lehrveranstaltung_id","studiensemester_kurzbz","lehrfach_id","lehrform_kurzbz","stundenblockung","wochenrythmus","start_kw","raumtyp","raumtypalternativ","sprache","lehre","anmerkung","unr","lvnr","updateamum","updatevon","insertamum","insertvon","ext_id","lehrfach_id_old","gewicht"),
"lehre.tbl_lehreinheitgruppe" => array("lehreinheitgruppe_id","lehreinheit_id","studiengang_kz","semester","verband","gruppe","gruppe_kurzbz","updateamum","updatevon","insertamum","insertvon","ext_id"),
"lehre.tbl_lehreinheitmitarbeiter" => array("lehreinheit_id","mitarbeiter_uid","lehrfunktion_kurzbz","semesterstunden","planstunden","stundensatz","faktor","anmerkung","bismelden","updateamum","updatevon","insertamum","insertvon","ext_id","standort_id","vertrag_id"),
diff --git a/system/dbupdate_3.4/71405_ferienzeiten.php b/system/dbupdate_3.4/71405_ferienzeiten.php
index dfd3e4ab7..0528a7838 100644
--- a/system/dbupdate_3.4/71405_ferienzeiten.php
+++ b/system/dbupdate_3.4/71405_ferienzeiten.php
@@ -136,7 +136,10 @@ if(!$result = @$db->db_query("SELECT oe_kurzbz FROM lehre.tbl_ferien LIMIT 1"))
ADD COLUMN IF NOT EXISTS insertamum timestamp DEFAULT NOW(),
ADD COLUMN IF NOT EXISTS insertvon VARCHAR(32),
ADD COLUMN IF NOT EXISTS updateamum timestamp,
- ADD COLUMN IF NOT EXISTS updatevon VARCHAR(32)";
+ ADD COLUMN IF NOT EXISTS updatevon VARCHAR(32);
+ UPDATE lehre.tbl_ferien
+ SET oe_kurzbz = (SELECT oe_kurzbz FROM public.tbl_studiengang WHERE studiengang_kz = tbl_ferien.studiengang_kz)
+ WHERE oe_kurzbz IS NULL AND studiengang_kz IS NOT NULL;";
if(!$db->db_query($qry))
echo 'lehre.tbl_ferien: '.$db->db_last_error().'
';