diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php
index 4ddb38203..514ee3496 100644
--- a/system/dbupdate_3.4.php
+++ b/system/dbupdate_3.4.php
@@ -92,6 +92,7 @@ require_once('dbupdate_3.4/68744_StV_settings.php');
require_once('dbupdate_3.4/62889_reihungstest_ueberwachung_mit_constructor.php');
require_once('dbupdate_3.4/71399_dashboard_update_widget_paths.php');
require_once('dbupdate_3.4/71645_studvw_messagetab_ladezeit.php');
+require_once('dbupdate_3.4/71405_ferienzeiten.php');
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '
Pruefe Tabellen und Attribute!
';
@@ -249,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("bezeichnung","studiengang_kz","vondatum","bisdatum"),
+ "lehre.tbl_ferien" => array("ferien_id","bezeichnung","studiengang_kz","vondatum","bisdatum"),
"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
new file mode 100644
index 000000000..98d057e9e
--- /dev/null
+++ b/system/dbupdate_3.4/71405_ferienzeiten.php
@@ -0,0 +1,121 @@
+db_query("SELECT ferien_id FROM lehre.tbl_ferien LIMIT 1"))
+{
+ $qry = 'ALTER TABLE lehre.tbl_ferien ADD COLUMN ferien_id integer;';
+
+ if(!$db->db_query($qry))
+ echo ' lehre.tbl_ferien '.$db->db_last_error().'
';
+ else
+ echo '
lehre.tbl_ferien: Neue Spalte ferien_id hinzugefügt';
+}
+
+//Column ferien_id mit Werten befüllen
+if($result = @$db->db_query("SELECT ferien_id FROM lehre.tbl_ferien where ferien_id is not null LIMIT 1"))
+{
+ if ($db->db_num_rows($result) == 0)
+ {
+ $qry = 'UPDATE lehre.tbl_ferien et SET ferien_id =
+ (SELECT rownumber FROM (SELECT ROW_NUMBER() OVER (ORDER BY bezeichnung, studiengang_kz)
+ AS rownumber, t.* FROM lehre.tbl_ferien t ORDER BY bezeichnung, studiengang_kz) rn
+ WHERE rn.bezeichnung = et.bezeichnung
+ AND rn.studiengang_kz = et.studiengang_kz);
+ ';
+
+ if(!$db->db_query($qry))
+ echo ' lehre.tbl_ferien '.$db->db_last_error().'
';
+ else
+ echo '
lehre.tbl_ferien: Spalte bis.tbl_ferien_id mit Werten aufgefüllt';
+ }
+}
+
+//Create Sequence lehre.tbl_ferien and grant Rights
+if ($result = @$db->db_query("SELECT * FROM pg_class WHERE relname = 'tbl_ferien_ferien_id_seq'"))
+{
+ if ($db->db_num_rows($result) == 0)
+ {
+ if ($count = @$db->db_query("SELECT * FROM lehre.tbl_ferien"))
+ {
+ $count = $db->db_num_rows($count) + 1;
+ $qry = 'CREATE SEQUENCE lehre.tbl_ferien_ferien_id_seq START ';
+ $qry .= $count;
+ if(!$db->db_query($qry))
+ {
+ echo ' lehre.tbl_ferien '.$db->db_last_error().'
';
+ }
+ else
+ {
+ echo '
lehre.tbl_ferien: Sequence lehre.tbl_ferien_ferien_id_seq mit Startwert ' . $count . ' erstellt';
+ $qry2 = "GRANT SELECT, UPDATE ON lehre.tbl_ferien_ferien_id_seq TO vilesci;
+ GRANT SELECT, UPDATE ON lehre.tbl_ferien_ferien_id_seq TO web;";
+ if(!$db->db_query($qry2))
+ {
+ echo 'lehre.tbl_ferien_ferien_id_seq Berechtigungen: '.$db->db_last_error().'
';
+ }
+ else
+ {
+ echo '
lehre.tbl_ferien: Rechte auf lehre.tbl_ferien_ferien_id_seq fuer web user und vilesci gesetzt ';
+ }
+ }
+
+ }
+ }
+}
+
+//lehre.tbl_ferien auf NOT NULL setzen
+if ($result = @$db->db_query("SELECT is_nullable FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tbl_ferien' AND column_name = 'ferien_id' and is_nullable = 'NO'"))
+{
+ if($db->db_num_rows($result)==0)
+ {
+ $qry = 'ALTER TABLE lehre.tbl_ferien ALTER COLUMN ferien_id SET NOT NULL';
+
+ if(!$db->db_query($qry))
+ echo ' lehre.tbl_ferien '.$db->db_last_error().'
';
+ else
+ echo '
lehre.tbl_ferien: Spalte bis.tbl_ferien_id auf NOT NULL gesetzt';
+ }
+}
+
+//lehre.tbl_ferien DEFAULT einstellen
+if ($result = @$db->db_query("SELECT column_default FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tbl_ferien' AND column_name = 'ferien_id' and column_default is null"))
+{
+ if($db->db_num_rows($result)==1)
+ {
+ $qry = "ALTER TABLE lehre.tbl_ferien ALTER COLUMN ferien_id SET DEFAULT nextval('lehre.tbl_ferien_ferien_id_seq'::regclass);";
+
+ if(!$db->db_query($qry))
+ echo ' lehre.tbl_ferien '.$db->db_last_error().'
';
+ else
+ echo '
lehre.tbl_ferien: Defaultwert bei Spalte bis.tbl_ferien_id gesetzt';
+ }
+}
+
+//DELETE Constraint PRIMARY KEY pk_tbl_ferien (bezeichnung, studiengang_kz) entfernen
+if ($result = @$db->db_query("SELECT conname FROM pg_constraint WHERE conname = 'pk_tbl_ferien'"))
+{
+ if($db->db_num_rows($result)==1)
+ {
+ $qry = "ALTER TABLE lehre.tbl_ferien DROP CONSTRAINT pk_tbl_ferien;";
+
+ if (!$db->db_query($qry))
+ echo 'lehre.tbl_ferien: '.$db->db_last_error().'
';
+ else
+ echo '
lehre.tbl_ferien: Primary Key pk_tbl_ferien (bezeichnung, studiengang_kz) entfernt ';
+ }
+}
+
+// ADD PRIMARY KEY tbl_ferien_pk to lehre.tbl_ferien
+if ($result = @$db->db_query("SELECT conname FROM pg_constraint WHERE conname = 'tbl_ferien_pk'"))
+{
+ if ($db->db_num_rows($result) == 0)
+ {
+ $qry = "ALTER TABLE lehre.tbl_ferien ADD CONSTRAINT tbl_ferien_pk PRIMARY KEY(ferien_id);";
+
+ if (!$db->db_query($qry))
+ echo 'slehre.tbl_ferien: '.$db->db_last_error().'
';
+ else
+ echo '
lehre.tbl_ferien: Primary Key tbl_ferien_pk (ferien_id) hinzugefügt';
+ }
+}