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 '

Pruefe Tabellen und Attribute!

';