diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php
index fa1a15940..4a6de8033 100644
--- a/system/dbupdate_3.3.php
+++ b/system/dbupdate_3.3.php
@@ -767,7 +767,7 @@ if(!$result = @$db->db_query("SELECT studiengang_kz FROM testtool.vw_auswertung_
tbl_person.gebdatum,
tbl_person.geschlecht,
tbl_pruefling.semester,
- upper(tbl_studiengang.typ::character varying(1)::text || tbl_studiengang.kurzbz::text) AS stg_kurzbz,
+ upper(tbl_studiengang.typ::CHARACTER VARYING(1)::TEXT || tbl_studiengang.kurzbz::TEXT) AS stg_kurzbz,
tbl_studiengang.bezeichnung AS stg_bez,
tbl_pruefling.registriert,
tbl_pruefling.idnachweis,
@@ -2363,7 +2363,7 @@ if($result = $db->db_query("SELECT view_definition FROM information_schema.views
tbl_studiensemester.start,
tbl_studiensemester.ende,
tbl_studiensemester.studienjahr_kurzbz,
- substr(tbl_studiensemester.studiensemester_kurzbz::text, 3) || lower(substr(tbl_studiensemester.studiensemester_kurzbz::text, 1, 1)) AS studiensemester,
+ substr(tbl_studiensemester.studiensemester_kurzbz::TEXT, 3) || lower(substr(tbl_studiensemester.studiensemester_kurzbz::TEXT, 1, 1)) AS studiensemester,
CASE
WHEN tbl_studiengang.typ = 'b'::bpchar AND tbl_prestudent.zgv_code IS NOT NULL OR tbl_studiengang.typ = 'm'::bpchar AND tbl_prestudent.zgvmas_code IS NOT NULL OR tbl_studiengang.typ = 'd'::bpchar AND tbl_prestudent.zgvdoktor_code IS NOT NULL THEN true
ELSE false
@@ -2372,13 +2372,13 @@ if($result = $db->db_query("SELECT view_definition FROM information_schema.views
WHEN tbl_prestudentstatus.prestudent_id IS NULL THEN false
ELSE true
END AS student,
- date_part('week'::text, prestudentstatus.datum) AS kw
+ date_part('week'::TEXT, prestudentstatus.datum) AS kw
FROM public.tbl_person
JOIN public.tbl_prestudent USING (person_id)
JOIN public.tbl_prestudentstatus prestudentstatus USING (prestudent_id)
JOIN public.tbl_studiengang USING (studiengang_kz)
JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
- LEFT JOIN public.tbl_prestudentstatus ON tbl_prestudentstatus.prestudent_id = prestudentstatus.prestudent_id AND tbl_prestudentstatus.studiensemester_kurzbz::text = prestudentstatus.studiensemester_kurzbz::text AND tbl_prestudentstatus.status_kurzbz::text = 'Student'::text;
+ LEFT JOIN public.tbl_prestudentstatus ON tbl_prestudentstatus.prestudent_id = prestudentstatus.prestudent_id AND tbl_prestudentstatus.studiensemester_kurzbz::TEXT = prestudentstatus.studiensemester_kurzbz::TEXT AND tbl_prestudentstatus.status_kurzbz::TEXT = 'Student'::TEXT;
GRANT SELECT ON public.vw_prestudentstatus TO vilesci;
GRANT SELECT ON public.vw_prestudentstatus TO web;
@@ -2608,14 +2608,14 @@ if(!$result = @$db->db_query("SELECT updateaktivam FROM campus.vw_mitarbeiter LI
tbl_benutzer.aktivierungscode,
( SELECT tbl_kontakt.kontakt
FROM tbl_kontakt
- WHERE tbl_kontakt.person_id = tbl_person.person_id AND tbl_kontakt.kontakttyp::text = 'email'::text
+ WHERE tbl_kontakt.person_id = tbl_person.person_id AND tbl_kontakt.kontakttyp::TEXT = 'email'::TEXT
ORDER BY tbl_kontakt.zustellung DESC
LIMIT 1) AS email_privat,
tbl_benutzer.updateaktivam,
tbl_benutzer.updateaktivvon,
greatest(tbl_person.updateamum, tbl_benutzer.updateamum, tbl_mitarbeiter.updateamum) as lastupdate
FROM public.tbl_mitarbeiter
- JOIN public.tbl_benutzer ON tbl_mitarbeiter.mitarbeiter_uid::text = tbl_benutzer.uid::text
+ JOIN public.tbl_benutzer ON tbl_mitarbeiter.mitarbeiter_uid::TEXT = tbl_benutzer.uid::TEXT
JOIN public.tbl_person USING (person_id);
";
@@ -2891,12 +2891,12 @@ if(!$result = @$db->db_query('SELECT "Zugangscode" FROM public.vw_msg_vars_perso
kt.kontakt AS "Telefon",
( SELECT tbl_studiensemester.bezeichnung
FROM tbl_studiensemester
- WHERE "substring"(tbl_studiensemester.studiensemester_kurzbz::text, 1, 2) = \'WS\'::text AND (tbl_studiensemester.start >= now() AND tbl_studiensemester.ende >= now() OR tbl_studiensemester.start <= now() AND tbl_studiensemester.ende >= now())
+ WHERE "substring"(tbl_studiensemester.studiensemester_kurzbz::TEXT, 1, 2) = \'WS\'::TEXT AND (tbl_studiensemester.start >= now() AND tbl_studiensemester.ende >= now() OR tbl_studiensemester.start <= now() AND tbl_studiensemester.ende >= now())
ORDER BY tbl_studiensemester.start
LIMIT 1) AS "WS naechstes",
( SELECT tbl_studiensemester.bezeichnung
FROM tbl_studiensemester
- WHERE "substring"(tbl_studiensemester.studiensemester_kurzbz::text, 1, 2) = \'WS\'::text AND (tbl_studiensemester.start >= now() AND tbl_studiensemester.ende >= now() OR tbl_studiensemester.start <= now() AND tbl_studiensemester.ende >= now())
+ WHERE "substring"(tbl_studiensemester.studiensemester_kurzbz::TEXT, 1, 2) = \'WS\'::TEXT AND (tbl_studiensemester.start >= now() AND tbl_studiensemester.ende >= now() OR tbl_studiensemester.start <= now() AND tbl_studiensemester.ende >= now())
ORDER BY tbl_studiensemester.start
OFFSET 1
LIMIT 1) AS "WS uebernaechstes",
@@ -4021,7 +4021,7 @@ if(!$result = @$db->db_query("SELECT offsetpunkte FROM testtool.vw_auswertung_ab
tbl_person.gebdatum,
tbl_person.geschlecht,
tbl_pruefling.semester,
- upper(tbl_studiengang.typ::character varying(1)::text || tbl_studiengang.kurzbz::text) AS stg_kurzbz,
+ upper(tbl_studiengang.typ::CHARACTER VARYING(1)::TEXT || tbl_studiengang.kurzbz::TEXT) AS stg_kurzbz,
tbl_studiengang.bezeichnung AS stg_bez,
tbl_pruefling.registriert,
tbl_pruefling.idnachweis,
@@ -4075,7 +4075,7 @@ if(!$result = @$db->db_query("SELECT offsetpunkte FROM testtool.vw_auswertung LI
tbl_person.gebdatum,
tbl_person.geschlecht,
tbl_pruefling.semester,
- upper(tbl_studiengang.typ::character varying(1)::text || tbl_studiengang.kurzbz::text) AS stg_kurzbz,
+ upper(tbl_studiengang.typ::CHARACTER VARYING(1)::TEXT || tbl_studiengang.kurzbz::TEXT) AS stg_kurzbz,
tbl_studiengang.bezeichnung AS stg_bez,
tbl_pruefling.registriert,
tbl_pruefling.idnachweis,
@@ -6154,6 +6154,202 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
}
}
+// Change Studiengang DE and Studiengang EN
+if ($result = @$db->db_query("SELECT definition FROM pg_views WHERE schemaname = 'public' AND viewname = 'vw_msg_vars';"))
+{
+ // Get the view description
+ if ($row = $db->db_fetch_object($result))
+ {
+ // If the view is still declared in the old way
+ if (strpos($row->definition, 's.bezeichnung AS "Studiengang DE"') !== false
+ || strpos($row->definition, 's.english AS "Studiengang EN"') !== false)
+ {
+ $qry = '
+-- The view must be dropped because the data type of columns Studiengang DE and Studiengang EN has been changed from CHARACTER VARYING to TEXT
+DROP VIEW public.vw_msg_vars;
+-- Create the view
+CREATE OR REPLACE VIEW public.vw_msg_vars AS (
+ SELECT DISTINCT ON (p.person_id, pr.prestudent_id) p.person_id,
+ pr.prestudent_id,
+ p.nachname AS "Nachname",
+ p.vorname AS "Vorname",
+ p.anrede AS "Anrede",
+ a.strasse AS "Strasse",
+ a.ort AS "Ort",
+ a.plz AS "PLZ",
+ a.gemeinde AS "Gemeinde",
+ a.langtext AS "Nation",
+ ke.kontakt AS "Email",
+ kt.kontakt AS "Telefon",
+ COALESCE(so.studiengangbezeichnung::TEXT, s.bezeichnung::TEXT) AS "Studiengang DE",
+ COALESCE(so.studiengangbezeichnung_englisch::TEXT, s.english::TEXT) AS "Studiengang EN",
+ st.bezeichnung AS "Typ",
+ last_prestudent_status.orgform_kurzbz AS "Orgform",
+ p.zugangscode AS "Zugangscode",
+ bk.iban AS "IBAN Studiengang",
+ bk.bic AS "BIC Studiengang",
+ s.studiengang_kz AS "Studiengangskennzahl",
+ first_prestudent_status.ausbildungssemester AS "Einstiegssemester",
+ first_prestudent_status.studiensemester AS "Einstiegsstudiensemester",
+ ass.vorname AS "Vorname Studiengangsassistenz",
+ ass.nachname AS "Nachname Studiengangsassistenz",
+ ass.telefonklappe AS "Durchwahl Studiengangsassistenz",
+ ass.alias AS "Alias Studiengangsassistenz",
+ last_prestudent_status.orgform_bezeichnung_de AS "Orgform DE",
+ last_prestudent_status.orgform_bezeichnung_en AS "Orgform EN",
+ (
+ SELECT COUNT(*) AS count
+ FROM (
+ SELECT
+ pss.prestudent_id,
+ pss.person_id,
+ pss.priorisierung,
+ (
+ SELECT tbl_prestudentstatus_1.status_kurzbz
+ FROM tbl_prestudentstatus tbl_prestudentstatus_1
+ WHERE tbl_prestudentstatus_1.prestudent_id = pss.prestudent_id
+ ORDER BY tbl_prestudentstatus_1.datum DESC, tbl_prestudentstatus_1.insertamum DESC
+ LIMIT 1
+ ) AS laststatus
+ FROM tbl_prestudent pss
+ JOIN tbl_prestudentstatus USING (prestudent_id)
+ WHERE pss.person_id = (
+ (
+ SELECT tbl_prestudent.person_id
+ FROM tbl_prestudent
+ WHERE tbl_prestudent.prestudent_id = pr.prestudent_id
+ )
+ )
+ AND tbl_prestudentstatus.studiensemester_kurzbz::TEXT = (
+ (
+ (
+ SELECT tbl_prestudentstatus_1.studiensemester_kurzbz
+ FROM tbl_prestudentstatus tbl_prestudentstatus_1
+ WHERE tbl_prestudentstatus_1.prestudent_id = pr.prestudent_id
+ AND tbl_prestudentstatus_1.status_kurzbz::TEXT = \'Interessent\'::TEXT
+ LIMIT 1
+ )
+ )::TEXT
+ )
+ AND tbl_prestudentstatus.status_kurzbz::TEXT = \'Interessent\'::TEXT
+ ) prest
+ WHERE (prest.laststatus::TEXT <> ALL (ARRAY[\'Abbrecher\'::CHARACTER VARYING::TEXT, \'Abgewiesener\'::CHARACTER VARYING::TEXT, \'Absolvent\'::CHARACTER VARYING::TEXT]))
+ AND prest.priorisierung <= pr.priorisierung
+ ) AS "Relative Prio"
+ FROM tbl_person p
+ LEFT JOIN (
+ SELECT tbl_kontakt.person_id,
+ tbl_kontakt.kontakt
+ FROM tbl_kontakt
+ WHERE tbl_kontakt.zustellung = TRUE
+ AND tbl_kontakt.kontakttyp::TEXT = \'email\'::TEXT
+ ORDER BY tbl_kontakt.kontakt_id DESC
+ ) ke USING (person_id)
+ LEFT JOIN (
+ SELECT tbl_kontakt.person_id,
+ tbl_kontakt.kontakt
+ FROM tbl_kontakt
+ WHERE tbl_kontakt.zustellung = TRUE
+ AND (tbl_kontakt.kontakttyp::TEXT = ANY (ARRAY[\'telefon\'::CHARACTER VARYING::TEXT, \'mobil\'::CHARACTER VARYING::TEXT]))
+ ORDER BY tbl_kontakt.kontakt_id DESC
+ ) kt USING (person_id)
+ LEFT JOIN (
+ SELECT tbl_adresse.person_id,
+ tbl_adresse.strasse,
+ tbl_adresse.ort,
+ tbl_adresse.plz,
+ tbl_adresse.gemeinde,
+ tbl_nation.langtext
+ FROM tbl_adresse
+ LEFT JOIN bis.tbl_nation ON (tbl_nation.nation_code::TEXT = tbl_adresse.nation::TEXT)
+ WHERE tbl_adresse.heimatadresse = true
+ ORDER BY tbl_adresse.adresse_id DESC
+ ) a USING (person_id)
+ LEFT JOIN tbl_prestudent pr USING (person_id)
+ JOIN tbl_studiengang s USING (studiengang_kz)
+ JOIN tbl_studiengangstyp st USING (typ)
+ LEFT JOIN lehre.tbl_studienordnung so USING(studiengang_kz)
+ LEFT JOIN (
+ SELECT DISTINCT ON (ps.prestudent_id) ps.prestudent_id,
+ tbl_studienplan.orgform_kurzbz,
+ tbl_orgform.bezeichnung_mehrsprachig[
+ (
+ (
+ SELECT tbl_sprache.index
+ FROM tbl_sprache
+ WHERE tbl_sprache.content = TRUE
+ AND tbl_sprache.sprache::TEXT = \'German\'::TEXT
+ LIMIT 1
+ )
+ )
+ ] AS orgform_bezeichnung_de,
+ tbl_orgform.bezeichnung_mehrsprachig[
+ (
+ (
+ SELECT tbl_sprache.index
+ FROM tbl_sprache
+ WHERE tbl_sprache.content = TRUE
+ AND tbl_sprache.sprache::TEXT = \'English\'::TEXT
+ LIMIT 1
+ )
+ )
+ ] AS orgform_bezeichnung_en
+ FROM tbl_prestudent ps
+ JOIN tbl_prestudentstatus ON (ps.prestudent_id = tbl_prestudentstatus.prestudent_id)
+ JOIN lehre.tbl_studienplan USING (studienplan_id)
+ LEFT JOIN bis.tbl_orgform ON (tbl_studienplan.orgform_kurzbz::TEXT = tbl_orgform.orgform_kurzbz::TEXT)
+ ORDER BY ps.prestudent_id DESC, tbl_prestudentstatus.datum DESC, tbl_prestudentstatus.insertamum DESC, tbl_prestudentstatus.ext_id DESC
+ ) last_prestudent_status ON (pr.prestudent_id = last_prestudent_status.prestudent_id)
+ LEFT JOIN (
+ SELECT DISTINCT ON (ps.prestudent_id) ps.prestudent_id,
+ tbl_prestudentstatus.ausbildungssemester,
+ tbl_prestudentstatus.studiensemester_kurzbz,
+ tbl_studiensemester.bezeichnung AS studiensemester,
+ tbl_studienordnung.studiengang_kz
+ FROM tbl_prestudent ps
+ JOIN tbl_prestudentstatus ON (ps.prestudent_id = tbl_prestudentstatus.prestudent_id)
+ JOIN tbl_studiensemester USING (studiensemester_kurzbz)
+ JOIN lehre.tbl_studienplan USING (studienplan_id)
+ JOIN lehre.tbl_studienordnung USING (studienordnung_id)
+ WHERE tbl_prestudentstatus.status_kurzbz::TEXT = \'Interessent\'::TEXT
+ ORDER BY ps.prestudent_id, tbl_prestudentstatus.datum, tbl_prestudentstatus.insertamum, tbl_prestudentstatus.ext_id
+ ) first_prestudent_status ON (pr.prestudent_id = first_prestudent_status.prestudent_id)
+ LEFT JOIN (
+ SELECT DISTINCT ON (tbl_benutzerfunktion.oe_kurzbz) tbl_person.vorname,
+ tbl_person.nachname,
+ tbl_benutzerfunktion.oe_kurzbz,
+ tbl_mitarbeiter.telefonklappe,
+ tbl_benutzer.alias
+ FROM tbl_benutzerfunktion
+ JOIN tbl_benutzer USING (uid)
+ JOIN tbl_person USING (person_id)
+ JOIN tbl_mitarbeiter ON (tbl_benutzer.uid::TEXT = tbl_mitarbeiter.mitarbeiter_uid::TEXT)
+ WHERE tbl_benutzerfunktion.funktion_kurzbz::TEXT = \'ass\'::TEXT
+ AND NOW() >= COALESCE(tbl_benutzerfunktion.datum_von::TIMESTAMP with time zone, NOW())
+ AND NOW() <= COALESCE(tbl_benutzerfunktion.datum_bis::TIMESTAMP with time zone, NOW())
+ ORDER BY tbl_benutzerfunktion.oe_kurzbz, tbl_benutzerfunktion.insertamum DESC NULLS LAST, tbl_benutzerfunktion.datum_von DESC NULLS LAST
+ ) ass ON (s.oe_kurzbz::TEXT = ass.oe_kurzbz::TEXT)
+ LEFT JOIN (
+ SELECT DISTINCT ON (tbl_bankverbindung.oe_kurzbz, tbl_bankverbindung.orgform_kurzbz) tbl_bankverbindung.oe_kurzbz,
+ tbl_bankverbindung.orgform_kurzbz,
+ tbl_bankverbindung.iban,
+ tbl_bankverbindung.bic
+ FROM tbl_bankverbindung
+ WHERE tbl_bankverbindung.oe_kurzbz IS NOT NULL
+ ORDER BY tbl_bankverbindung.oe_kurzbz, tbl_bankverbindung.orgform_kurzbz, tbl_bankverbindung.insertamum DESC, tbl_bankverbindung.iban
+ ) bk ON (s.oe_kurzbz::TEXT = bk.oe_kurzbz::TEXT AND (last_prestudent_status.orgform_kurzbz::TEXT = bk.orgform_kurzbz::TEXT OR bk.orgform_kurzbz IS NULL))
+ WHERE p.aktiv = true
+ ORDER BY p.person_id, pr.prestudent_id
+);';
+
+ if(!$db->db_query($qry))
+ echo 'public.vw_msg_vars: '.$db->db_last_error().'
';
+ else
+ echo '
public.vw_msg_vars changed Studiengang DE and Studiengang EN';
+ }
+ }
+}
+
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '