mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-21 08:52:21 +00:00
Merge branch 'master' of https://github.com/FH-Complete/FHC-Core
# Conflicts: # include/lehreinheitmitarbeiter.class.php
This commit is contained in:
+17
-5
@@ -25,6 +25,7 @@
|
||||
require_once('../config/system.config.inc.php');
|
||||
require_once('../include/basis_db.class.php');
|
||||
require_once('../version.php');
|
||||
require_once('../include/benutzerberechtigung.class.php');
|
||||
|
||||
// Datenbank Verbindung
|
||||
$db = new basis_db();
|
||||
@@ -36,15 +37,26 @@ echo '<html>
|
||||
</head>
|
||||
<body>';
|
||||
|
||||
$uid = get_uid();
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($uid);
|
||||
|
||||
if(!$rechte->isBerechtigt('admin'))
|
||||
{
|
||||
exit('Sie haben keine Berechtigung');
|
||||
}
|
||||
|
||||
echo '<H1>Systemcheck!</H1>';
|
||||
echo '<H2>DB-Updates!</H2>';
|
||||
|
||||
|
||||
|
||||
echo '<div>';
|
||||
$dbupdStr = 'dbupdate_'.$fhcomplete_version.'.php';
|
||||
echo $dbupdStr . ' wird aufgerufen...';
|
||||
$dbupdStr = 'dbupdate_'.$fhcomplete_version.'.php';
|
||||
echo $dbupdStr . ' wird aufgerufen...';
|
||||
echo '</div>';
|
||||
echo '<div>';
|
||||
require_once($dbupdStr);
|
||||
require_once($dbupdStr);
|
||||
echo '</div>';
|
||||
|
||||
// ******** Berechtigungen Prüfen ************/
|
||||
@@ -136,8 +148,8 @@ $berechtigungen = array(
|
||||
array('soap/benutzer','Berechtigung für Bentutzerabfrage Addon Kontoimport'),
|
||||
array('soap/buchungen','Berechtigung für Buchungsabfrage Addon Kontoimport'),
|
||||
array('student/bankdaten','Bankdaten des Studenten'),
|
||||
array('student/anrechnung','Anrechnungen des Studenten'),
|
||||
array('student/anwesenheit','Anwesenheiten im FAS'),
|
||||
array('student/anrechnung','Anrechnungen des Studenten'),
|
||||
array('student/anwesenheit','Anwesenheiten im FAS'),
|
||||
array('student/dokumente','Wenn SUID dann dürfen Dokumente auch wieder entfernt werden'),
|
||||
array('student/noten','Notenverwaltung'),
|
||||
array('student/stammdaten','Stammdaten der Studenten'),
|
||||
|
||||
+48
-48
@@ -20,8 +20,8 @@
|
||||
* Beschreibung:
|
||||
* Dieses Skript prueft die Datenbank auf aktualitaet, dabei werden fehlende Attribute angelegt.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
|
||||
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
|
||||
|
||||
@@ -3534,8 +3534,8 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
|
||||
// Attribut Aktiv für tbl_vorlagestudiengang und alle bisherigen Vorlagen auf aktiv setzen
|
||||
if(!$result = @$db->db_query("SELECT aktiv FROM public.tbl_vorlagestudiengang"))
|
||||
{
|
||||
$qry = "ALTER TABLE public.tbl_vorlagestudiengang ADD COLUMN aktiv boolean NOT NULL default true;
|
||||
|
||||
$qry = "ALTER TABLE public.tbl_vorlagestudiengang ADD COLUMN aktiv boolean NOT NULL default true;
|
||||
|
||||
UPDATE public.tbl_vorlagestudiengang SET aktiv=true;
|
||||
";
|
||||
|
||||
@@ -3613,117 +3613,117 @@ if($result = @$db->db_query("SELECT * FROM information_schema.tables WHERE table
|
||||
$qry = "
|
||||
CREATE OR REPLACE VIEW system.vw_berechtigung_nichtrekursiv AS
|
||||
SELECT
|
||||
uid, berechtigung_kurzbz,
|
||||
uid, berechtigung_kurzbz,
|
||||
-- art zusammenfassung und nur die nehmen die gleich sind
|
||||
CASE WHEN length(art)>length(art1) THEN art1 ELSE art END as art,
|
||||
CASE WHEN length(art)>length(art1) THEN art1 ELSE art END as art,
|
||||
oe_kurzbz, kostenstelle_id
|
||||
FROM
|
||||
(
|
||||
-- Normal
|
||||
SELECT
|
||||
SELECT
|
||||
benutzerberechtigung_id, tbl_benutzerrolle.uid, tbl_benutzerrolle.funktion_kurzbz,
|
||||
tbl_benutzerrolle.rolle_kurzbz, tbl_benutzerrolle.berechtigung_kurzbz, tbl_benutzerrolle.art, tbl_benutzerrolle.art art1,
|
||||
tbl_benutzerrolle.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start,
|
||||
tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon,
|
||||
tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon,tbl_benutzerrolle.kostenstelle_id,tbl_benutzerrolle.anmerkung
|
||||
FROM
|
||||
system.tbl_benutzerrolle JOIN system.tbl_berechtigung USING(berechtigung_kurzbz)
|
||||
FROM
|
||||
system.tbl_benutzerrolle JOIN system.tbl_berechtigung USING(berechtigung_kurzbz)
|
||||
|
||||
-- Rollen
|
||||
UNION
|
||||
SELECT
|
||||
SELECT
|
||||
benutzerberechtigung_id, tbl_benutzerrolle.uid, tbl_benutzerrolle.funktion_kurzbz,
|
||||
tbl_benutzerrolle.rolle_kurzbz, tbl_berechtigung.berechtigung_kurzbz, tbl_benutzerrolle.art, tbl_rolleberechtigung.art art1,
|
||||
tbl_benutzerrolle.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start,
|
||||
tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon,
|
||||
tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon,tbl_benutzerrolle.kostenstelle_id,tbl_benutzerrolle.anmerkung
|
||||
FROM
|
||||
system.tbl_benutzerrolle JOIN system.tbl_rolle USING(rolle_kurzbz)
|
||||
JOIN system.tbl_rolleberechtigung USING(rolle_kurzbz)
|
||||
FROM
|
||||
system.tbl_benutzerrolle JOIN system.tbl_rolle USING(rolle_kurzbz)
|
||||
JOIN system.tbl_rolleberechtigung USING(rolle_kurzbz)
|
||||
JOIN system.tbl_berechtigung ON(tbl_rolleberechtigung.berechtigung_kurzbz=tbl_berechtigung.berechtigung_kurzbz)
|
||||
|
||||
-- Funktionen
|
||||
UNION
|
||||
SELECT
|
||||
SELECT
|
||||
benutzerberechtigung_id, tbl_benutzerfunktion.uid, tbl_benutzerrolle.funktion_kurzbz,
|
||||
tbl_benutzerrolle.rolle_kurzbz, tbl_benutzerrolle.berechtigung_kurzbz, tbl_benutzerrolle.art, tbl_benutzerrolle.art art1,
|
||||
tbl_benutzerfunktion.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start,
|
||||
tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon,
|
||||
tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon,tbl_benutzerrolle.kostenstelle_id,tbl_benutzerrolle.anmerkung
|
||||
FROM
|
||||
FROM
|
||||
system.tbl_benutzerrolle JOIN public.tbl_benutzerfunktion USING(funktion_kurzbz)
|
||||
WHERE
|
||||
WHERE
|
||||
(tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now())
|
||||
AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())
|
||||
|
||||
-- Funktion Mitarbeiter
|
||||
UNION
|
||||
SELECT
|
||||
SELECT
|
||||
benutzerberechtigung_id, vw_mitarbeiter.uid, tbl_benutzerrolle.funktion_kurzbz,
|
||||
tbl_benutzerrolle.rolle_kurzbz, tbl_benutzerrolle.berechtigung_kurzbz, tbl_benutzerrolle.art, tbl_benutzerrolle.art art1,
|
||||
tbl_benutzerrolle.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start,
|
||||
tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon,
|
||||
tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon,tbl_benutzerrolle.kostenstelle_id,tbl_benutzerrolle.anmerkung
|
||||
FROM
|
||||
FROM
|
||||
system.tbl_benutzerrolle, campus.vw_mitarbeiter
|
||||
WHERE
|
||||
WHERE
|
||||
tbl_benutzerrolle.funktion_kurzbz='Mitarbeiter' and vw_mitarbeiter.aktiv
|
||||
|
||||
|
||||
|
||||
-- Funktion Student
|
||||
UNION
|
||||
SELECT
|
||||
SELECT
|
||||
benutzerberechtigung_id, vw_student.uid, tbl_benutzerrolle.funktion_kurzbz,
|
||||
tbl_benutzerrolle.rolle_kurzbz, tbl_benutzerrolle.berechtigung_kurzbz, tbl_benutzerrolle.art, tbl_benutzerrolle.art art1,
|
||||
tbl_benutzerrolle.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start,
|
||||
tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon,
|
||||
tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon,tbl_benutzerrolle.kostenstelle_id,tbl_benutzerrolle.anmerkung
|
||||
FROM
|
||||
FROM
|
||||
system.tbl_benutzerrolle, campus.vw_student
|
||||
WHERE
|
||||
WHERE
|
||||
tbl_benutzerrolle.funktion_kurzbz='Student' and vw_student.aktiv
|
||||
) as a
|
||||
WHERE
|
||||
) as a
|
||||
WHERE
|
||||
-- Datumsgrenzen beruecksichtigen
|
||||
(a.start<=now() OR a.start is null)
|
||||
(a.start<=now() OR a.start is null)
|
||||
AND (a.ende>=now() OR a.ende is null)
|
||||
|
||||
-- Neagtiv Rechte entfernen
|
||||
AND not negativ
|
||||
AND NOT EXISTS(SELECT
|
||||
AND NOT EXISTS(SELECT
|
||||
1
|
||||
FROM
|
||||
FROM
|
||||
system.tbl_benutzerrolle JOIN system.tbl_berechtigung USING(berechtigung_kurzbz) WHERE uid=a.uid AND berechtigung_kurzbz=a.berechtigung_kurzbz AND negativ);
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE OR REPLACE VIEW system.vw_berechtigung AS
|
||||
WITH RECURSIVE oes(oe_kurzbz, pfad) as
|
||||
WITH RECURSIVE oes(oe_kurzbz, pfad) as
|
||||
(
|
||||
SELECT
|
||||
oe_kurzbz, '/' || oe_kurzbz::text as pfad FROM public.tbl_organisationseinheit
|
||||
WHERE
|
||||
oe_parent_kurzbz is null AND aktiv = true
|
||||
SELECT
|
||||
oe_kurzbz, '/' || oe_kurzbz::text as pfad FROM public.tbl_organisationseinheit
|
||||
WHERE
|
||||
oe_parent_kurzbz is null AND aktiv = true
|
||||
UNION ALL
|
||||
SELECT
|
||||
o.oe_kurzbz, COALESCE(oes.pfad,'') || '/' || COALESCE(o.oe_kurzbz,'') as pfad
|
||||
FROM
|
||||
public.tbl_organisationseinheit o, oes
|
||||
WHERE
|
||||
SELECT
|
||||
o.oe_kurzbz, COALESCE(oes.pfad,'') || '/' || COALESCE(o.oe_kurzbz,'') as pfad
|
||||
FROM
|
||||
public.tbl_organisationseinheit o, oes
|
||||
WHERE
|
||||
o.oe_parent_kurzbz=oes.oe_kurzbz and aktiv = true
|
||||
)
|
||||
SELECT
|
||||
SELECT
|
||||
uid, berechtigung_kurzbz, art, oes.oe_kurzbz, kostenstelle_id
|
||||
FROM
|
||||
system.vw_berechtigung_nichtrekursiv, oes
|
||||
WHERE
|
||||
FROM
|
||||
system.vw_berechtigung_nichtrekursiv, oes
|
||||
WHERE
|
||||
(oes.pfad || '/' like '%/' || vw_berechtigung_nichtrekursiv.oe_kurzbz || '/%'
|
||||
OR (vw_berechtigung_nichtrekursiv.oe_kurzbz is null AND kostenstelle_id is null))
|
||||
UNION
|
||||
SELECT
|
||||
SELECT
|
||||
uid, berechtigung_kurzbz, art, null::varchar(32), kostenstelle_id
|
||||
FROM
|
||||
system.vw_berechtigung_nichtrekursiv
|
||||
FROM
|
||||
system.vw_berechtigung_nichtrekursiv
|
||||
WHERE
|
||||
kostenstelle_id is not null;
|
||||
|
||||
@@ -3740,7 +3740,7 @@ if($result = @$db->db_query("SELECT * FROM information_schema.tables WHERE table
|
||||
}
|
||||
}
|
||||
|
||||
// Eigene Berechtigung ob Unoconv-Dokumente aus dem FAS als Nicht-PDF exportiert werden dürfen
|
||||
// Eigene Berechtigung ob Unoconv-Dokumente aus dem FAS als Nicht-PDF exportiert werden dürfen
|
||||
if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz='system/change_outputformat' LIMIT 1"))
|
||||
{
|
||||
if($db->db_num_rows($result)==0)
|
||||
@@ -4098,5 +4098,5 @@ if (!$result=@$db->db_query($sql_query))
|
||||
if($error==false)
|
||||
echo '<br>Gegenpruefung fehlerfrei';
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
||||
+48
-48
@@ -20,8 +20,8 @@
|
||||
* Beschreibung:
|
||||
* Dieses Skript prueft die Datenbank auf aktualitaet, dabei werden fehlende Attribute angelegt.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
|
||||
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
|
||||
|
||||
@@ -3534,8 +3534,8 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
|
||||
// Attribut Aktiv für tbl_vorlagestudiengang und alle bisherigen Vorlagen auf aktiv setzen
|
||||
if(!$result = @$db->db_query("SELECT aktiv FROM public.tbl_vorlagestudiengang"))
|
||||
{
|
||||
$qry = "ALTER TABLE public.tbl_vorlagestudiengang ADD COLUMN aktiv boolean NOT NULL default true;
|
||||
|
||||
$qry = "ALTER TABLE public.tbl_vorlagestudiengang ADD COLUMN aktiv boolean NOT NULL default true;
|
||||
|
||||
UPDATE public.tbl_vorlagestudiengang SET aktiv=true;
|
||||
";
|
||||
|
||||
@@ -3613,117 +3613,117 @@ if($result = @$db->db_query("SELECT * FROM information_schema.tables WHERE table
|
||||
$qry = "
|
||||
CREATE OR REPLACE VIEW system.vw_berechtigung_nichtrekursiv AS
|
||||
SELECT
|
||||
uid, berechtigung_kurzbz,
|
||||
uid, berechtigung_kurzbz,
|
||||
-- art zusammenfassung und nur die nehmen die gleich sind
|
||||
CASE WHEN length(art)>length(art1) THEN art1 ELSE art END as art,
|
||||
CASE WHEN length(art)>length(art1) THEN art1 ELSE art END as art,
|
||||
oe_kurzbz, kostenstelle_id
|
||||
FROM
|
||||
(
|
||||
-- Normal
|
||||
SELECT
|
||||
SELECT
|
||||
benutzerberechtigung_id, tbl_benutzerrolle.uid, tbl_benutzerrolle.funktion_kurzbz,
|
||||
tbl_benutzerrolle.rolle_kurzbz, tbl_benutzerrolle.berechtigung_kurzbz, tbl_benutzerrolle.art, tbl_benutzerrolle.art art1,
|
||||
tbl_benutzerrolle.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start,
|
||||
tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon,
|
||||
tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon,tbl_benutzerrolle.kostenstelle_id,tbl_benutzerrolle.anmerkung
|
||||
FROM
|
||||
system.tbl_benutzerrolle JOIN system.tbl_berechtigung USING(berechtigung_kurzbz)
|
||||
FROM
|
||||
system.tbl_benutzerrolle JOIN system.tbl_berechtigung USING(berechtigung_kurzbz)
|
||||
|
||||
-- Rollen
|
||||
UNION
|
||||
SELECT
|
||||
SELECT
|
||||
benutzerberechtigung_id, tbl_benutzerrolle.uid, tbl_benutzerrolle.funktion_kurzbz,
|
||||
tbl_benutzerrolle.rolle_kurzbz, tbl_berechtigung.berechtigung_kurzbz, tbl_benutzerrolle.art, tbl_rolleberechtigung.art art1,
|
||||
tbl_benutzerrolle.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start,
|
||||
tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon,
|
||||
tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon,tbl_benutzerrolle.kostenstelle_id,tbl_benutzerrolle.anmerkung
|
||||
FROM
|
||||
system.tbl_benutzerrolle JOIN system.tbl_rolle USING(rolle_kurzbz)
|
||||
JOIN system.tbl_rolleberechtigung USING(rolle_kurzbz)
|
||||
FROM
|
||||
system.tbl_benutzerrolle JOIN system.tbl_rolle USING(rolle_kurzbz)
|
||||
JOIN system.tbl_rolleberechtigung USING(rolle_kurzbz)
|
||||
JOIN system.tbl_berechtigung ON(tbl_rolleberechtigung.berechtigung_kurzbz=tbl_berechtigung.berechtigung_kurzbz)
|
||||
|
||||
-- Funktionen
|
||||
UNION
|
||||
SELECT
|
||||
SELECT
|
||||
benutzerberechtigung_id, tbl_benutzerfunktion.uid, tbl_benutzerrolle.funktion_kurzbz,
|
||||
tbl_benutzerrolle.rolle_kurzbz, tbl_benutzerrolle.berechtigung_kurzbz, tbl_benutzerrolle.art, tbl_benutzerrolle.art art1,
|
||||
tbl_benutzerfunktion.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start,
|
||||
tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon,
|
||||
tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon,tbl_benutzerrolle.kostenstelle_id,tbl_benutzerrolle.anmerkung
|
||||
FROM
|
||||
FROM
|
||||
system.tbl_benutzerrolle JOIN public.tbl_benutzerfunktion USING(funktion_kurzbz)
|
||||
WHERE
|
||||
WHERE
|
||||
(tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now())
|
||||
AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())
|
||||
|
||||
-- Funktion Mitarbeiter
|
||||
UNION
|
||||
SELECT
|
||||
SELECT
|
||||
benutzerberechtigung_id, vw_mitarbeiter.uid, tbl_benutzerrolle.funktion_kurzbz,
|
||||
tbl_benutzerrolle.rolle_kurzbz, tbl_benutzerrolle.berechtigung_kurzbz, tbl_benutzerrolle.art, tbl_benutzerrolle.art art1,
|
||||
tbl_benutzerrolle.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start,
|
||||
tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon,
|
||||
tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon,tbl_benutzerrolle.kostenstelle_id,tbl_benutzerrolle.anmerkung
|
||||
FROM
|
||||
FROM
|
||||
system.tbl_benutzerrolle, campus.vw_mitarbeiter
|
||||
WHERE
|
||||
WHERE
|
||||
tbl_benutzerrolle.funktion_kurzbz='Mitarbeiter' and vw_mitarbeiter.aktiv
|
||||
|
||||
|
||||
|
||||
-- Funktion Student
|
||||
UNION
|
||||
SELECT
|
||||
SELECT
|
||||
benutzerberechtigung_id, vw_student.uid, tbl_benutzerrolle.funktion_kurzbz,
|
||||
tbl_benutzerrolle.rolle_kurzbz, tbl_benutzerrolle.berechtigung_kurzbz, tbl_benutzerrolle.art, tbl_benutzerrolle.art art1,
|
||||
tbl_benutzerrolle.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start,
|
||||
tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon,
|
||||
tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon,tbl_benutzerrolle.kostenstelle_id,tbl_benutzerrolle.anmerkung
|
||||
FROM
|
||||
FROM
|
||||
system.tbl_benutzerrolle, campus.vw_student
|
||||
WHERE
|
||||
WHERE
|
||||
tbl_benutzerrolle.funktion_kurzbz='Student' and vw_student.aktiv
|
||||
) as a
|
||||
WHERE
|
||||
) as a
|
||||
WHERE
|
||||
-- Datumsgrenzen beruecksichtigen
|
||||
(a.start<=now() OR a.start is null)
|
||||
(a.start<=now() OR a.start is null)
|
||||
AND (a.ende>=now() OR a.ende is null)
|
||||
|
||||
-- Neagtiv Rechte entfernen
|
||||
AND not negativ
|
||||
AND NOT EXISTS(SELECT
|
||||
AND NOT EXISTS(SELECT
|
||||
1
|
||||
FROM
|
||||
FROM
|
||||
system.tbl_benutzerrolle JOIN system.tbl_berechtigung USING(berechtigung_kurzbz) WHERE uid=a.uid AND berechtigung_kurzbz=a.berechtigung_kurzbz AND negativ);
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE OR REPLACE VIEW system.vw_berechtigung AS
|
||||
WITH RECURSIVE oes(oe_kurzbz, pfad) as
|
||||
WITH RECURSIVE oes(oe_kurzbz, pfad) as
|
||||
(
|
||||
SELECT
|
||||
oe_kurzbz, '/' || oe_kurzbz::text as pfad FROM public.tbl_organisationseinheit
|
||||
WHERE
|
||||
oe_parent_kurzbz is null AND aktiv = true
|
||||
SELECT
|
||||
oe_kurzbz, '/' || oe_kurzbz::text as pfad FROM public.tbl_organisationseinheit
|
||||
WHERE
|
||||
oe_parent_kurzbz is null AND aktiv = true
|
||||
UNION ALL
|
||||
SELECT
|
||||
o.oe_kurzbz, COALESCE(oes.pfad,'') || '/' || COALESCE(o.oe_kurzbz,'') as pfad
|
||||
FROM
|
||||
public.tbl_organisationseinheit o, oes
|
||||
WHERE
|
||||
SELECT
|
||||
o.oe_kurzbz, COALESCE(oes.pfad,'') || '/' || COALESCE(o.oe_kurzbz,'') as pfad
|
||||
FROM
|
||||
public.tbl_organisationseinheit o, oes
|
||||
WHERE
|
||||
o.oe_parent_kurzbz=oes.oe_kurzbz and aktiv = true
|
||||
)
|
||||
SELECT
|
||||
SELECT
|
||||
uid, berechtigung_kurzbz, art, oes.oe_kurzbz, kostenstelle_id
|
||||
FROM
|
||||
system.vw_berechtigung_nichtrekursiv, oes
|
||||
WHERE
|
||||
FROM
|
||||
system.vw_berechtigung_nichtrekursiv, oes
|
||||
WHERE
|
||||
(oes.pfad || '/' like '%/' || vw_berechtigung_nichtrekursiv.oe_kurzbz || '/%'
|
||||
OR (vw_berechtigung_nichtrekursiv.oe_kurzbz is null AND kostenstelle_id is null))
|
||||
UNION
|
||||
SELECT
|
||||
SELECT
|
||||
uid, berechtigung_kurzbz, art, null::varchar(32), kostenstelle_id
|
||||
FROM
|
||||
system.vw_berechtigung_nichtrekursiv
|
||||
FROM
|
||||
system.vw_berechtigung_nichtrekursiv
|
||||
WHERE
|
||||
kostenstelle_id is not null;
|
||||
|
||||
@@ -3740,7 +3740,7 @@ if($result = @$db->db_query("SELECT * FROM information_schema.tables WHERE table
|
||||
}
|
||||
}
|
||||
|
||||
// Eigene Berechtigung ob Unoconv-Dokumente aus dem FAS als Nicht-PDF exportiert werden dürfen
|
||||
// Eigene Berechtigung ob Unoconv-Dokumente aus dem FAS als Nicht-PDF exportiert werden dürfen
|
||||
if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz='system/change_outputformat' LIMIT 1"))
|
||||
{
|
||||
if($db->db_num_rows($result)==0)
|
||||
@@ -4099,5 +4099,5 @@ if (!$result=@$db->db_query($sql_query))
|
||||
if($error==false)
|
||||
echo '<br>Gegenpruefung fehlerfrei';
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
||||
+570
-12
@@ -21,6 +21,18 @@
|
||||
* Dieses Skript prueft die Datenbank auf aktualitaet, dabei werden fehlende Attribute angelegt.
|
||||
*/
|
||||
|
||||
//Spalte studiensemester_kurzbz für Reihungstest
|
||||
if(!$result = @$db->db_query("SELECT studiensemester_kurzbz FROM public.tbl_reihungstest LIMIT 1"))
|
||||
{
|
||||
$qry = "ALTER TABLE public.tbl_reihungstest ADD COLUMN studiensemester_kurzbz varchar(16);
|
||||
ALTER TABLE public.tbl_reihungstest ADD CONSTRAINT fk_reihungsteset_studiensemester FOREIGN KEY (studiensemester_kurzbz) REFERENCES public.tbl_studiensemester (studiensemester_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE;";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>public.tbl_reihungstest: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo 'public.tbl_reihungstest: Spalte studiensemester_kurzbz hinzugefuegt';
|
||||
}
|
||||
|
||||
// Neue Spalte beschreibung_mehrsprachig bei tbl_dokument
|
||||
if(!@$db->db_query("SELECT dokumentbeschreibung_mehrsprachig FROM public.tbl_dokument LIMIT 1"))
|
||||
{
|
||||
@@ -96,22 +108,567 @@ if(!@$db->db_query("SELECT bewerbung_abgeschicktamum FROM public.tbl_prestudents
|
||||
if (!$result = @$db->db_query("SELECT benotung FROM lehre.tbl_lehrveranstaltung LIMIT 1;"))
|
||||
{
|
||||
$qry = "ALTER TABLE lehre.tbl_lehrveranstaltung ADD COLUMN benotung boolean NOT NULL DEFAULT FALSE;";
|
||||
|
||||
|
||||
if (!$db->db_query($qry))
|
||||
echo '<strong>lehre.tbl_lehrveranstaltung: ' . $db->db_last_error() . '</strong><br>';
|
||||
else
|
||||
echo ' lehre.tbl_lehrveranstaltung: Spalte benotung hinzugefügt.<br>';
|
||||
echo ' lehre.tbl_lehrveranstaltung: Spalte benotung hinzugefügt.<br>';
|
||||
}
|
||||
|
||||
//Spalte lvinfo in lehre.tbl_lehrveranstaltung
|
||||
if (!$result = @$db->db_query("SELECT lvinfo FROM lehre.tbl_lehrveranstaltung LIMIT 1;"))
|
||||
{
|
||||
$qry = "ALTER TABLE lehre.tbl_lehrveranstaltung ADD COLUMN lvinfo boolean NOT NULL DEFAULT FALSE;";
|
||||
|
||||
|
||||
if (!$db->db_query($qry))
|
||||
echo '<strong>lehre.tbl_lehrveranstaltung: ' . $db->db_last_error() . '</strong><br>';
|
||||
else
|
||||
echo ' lehre.tbl_lehrveranstaltung: Spalte lvinfo hinzugefügt.<br>';
|
||||
echo ' lehre.tbl_lehrveranstaltung: Spalte lvinfo hinzugefügt.<br>';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// tbl_bisorgform hinzufuegen
|
||||
if(!$result = @$db->db_query("SELECT 1 FROM bis.tbl_bisorgform LIMIT 1;"))
|
||||
{
|
||||
$qry = "
|
||||
|
||||
CREATE TABLE bis.tbl_bisorgform
|
||||
(
|
||||
bisorgform_kurzbz varchar(3) NOT NULL,
|
||||
code smallint,
|
||||
bezeichnung varchar(64)
|
||||
);
|
||||
|
||||
COMMENT ON TABLE bis.tbl_bisorgform IS 'Offizielle OrgFormen fuer die BIS-Meldung';
|
||||
|
||||
ALTER TABLE bis.tbl_bisorgform ADD CONSTRAINT pk_bisorgform_kurzbz PRIMARY KEY (bisorgform_kurzbz);
|
||||
|
||||
GRANT SELECT ON bis.tbl_bisorgform TO vilesci;
|
||||
GRANT SELECT ON bis.tbl_bisorgform TO web;
|
||||
";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>Dokumentenupload fuer Notizen: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo ' Tabelle bis.tbl_orgform hinzugefuegt!<br>';
|
||||
}
|
||||
|
||||
//Spalte bisorgform_kurzbz für tbl_orgform
|
||||
if(!$result = @$db->db_query("SELECT bisorgform_kurzbz FROM bis.tbl_orgform LIMIT 1"))
|
||||
{
|
||||
$qry = "ALTER TABLE bis.tbl_orgform ADD COLUMN bisorgform_kurzbz varchar(3);
|
||||
ALTER TABLE bis.tbl_orgform ADD CONSTRAINT fk_orgform_bisorgform FOREIGN KEY (bisorgform_kurzbz) REFERENCES bis.tbl_bisorgform (bisorgform_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE;";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>bis.tbl_orgform: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo 'bis.tbl_orgform: Spalte bisorgform_kurzbz hinzugefuegt';
|
||||
}
|
||||
|
||||
//Spalte curriculum in lehre.tbl_studienordnung_lehrveranstaltung
|
||||
if (!$result = @$db->db_query("SELECT curriculum FROM lehre.tbl_studienplan_lehrveranstaltung LIMIT 1;"))
|
||||
{
|
||||
$qry = "ALTER TABLE lehre.tbl_studienplan_lehrveranstaltung ADD COLUMN curriculum BOOLEAN DEFAULT TRUE;";
|
||||
|
||||
if (!$db->db_query($qry))
|
||||
echo '<strong>lehre.tbl_studienplan_lehrveranstaltung: ' . $db->db_last_error() . '</strong><br>';
|
||||
else
|
||||
echo ' lehre.tbl_studienplan_lehrveranstaltung: Spalte curriculum hinzugefügt.<br>';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//sozialversicherungsnummer auf char(16) erhöhen
|
||||
/**********************************************************ANFANG SVNR ÄNDERUNG**************************************************************************/
|
||||
if($result = @$db->db_query("SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='public' AND TABLE_NAME='tbl_person' AND COLUMN_NAME = 'svnr' AND DATA_TYPE='character varying' AND character_maximum_length='16';"))
|
||||
{
|
||||
if($db->db_num_rows($result)==0)
|
||||
{
|
||||
//********************************GENERIC********************************
|
||||
$views=array();
|
||||
$success = true;
|
||||
|
||||
//********************************GET ALL NEEDED VIEWS********************************
|
||||
|
||||
$qry="
|
||||
SELECT column_name as spalte, table_name as tabelle, table_schema as schema
|
||||
FROM information_schema.columns
|
||||
WHERE
|
||||
column_name in('svnr')
|
||||
AND data_type='character'
|
||||
AND character_maximum_length='10'
|
||||
ORDER BY table_name DESC, column_name";
|
||||
|
||||
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
$db->db_query('BEGIN');
|
||||
while($row = $db->db_fetch_object($result))
|
||||
{
|
||||
$comment = "";
|
||||
|
||||
//Alle Views die Spalten enthalten die geaendert werden loeschen
|
||||
if(substr($row->tabelle,0,3)=='vw_')
|
||||
{
|
||||
$qry_view = "SELECT * FROM pg_views WHERE viewname='$row->tabelle' AND schemaname='$row->schema'";
|
||||
if($result_view = $db->db_query($qry_view))
|
||||
{
|
||||
if($row_view = $db->db_fetch_object($result_view))
|
||||
{
|
||||
if($row_view->schemaname != "public")
|
||||
$key = $row_view->schemaname.".".$row_view->viewname;
|
||||
else
|
||||
$key = $row_view->viewname;
|
||||
|
||||
if(!isset($views[$key]))
|
||||
{
|
||||
$privileges = array();
|
||||
|
||||
//get all privileges of this view
|
||||
$qry_view_priv = "SELECT *
|
||||
FROM information_schema.role_table_grants
|
||||
WHERE table_schema='".$row_view->schemaname."'
|
||||
AND table_name='".$row_view->viewname."';";
|
||||
|
||||
if($result_view_priv = $db->db_query($qry_view_priv))
|
||||
{
|
||||
while($row_view_priv = $db->db_fetch_object($result_view_priv))
|
||||
{
|
||||
$privileges[] = array(
|
||||
"grantee" => $row_view_priv->grantee,
|
||||
"privilege_type" => $row_view_priv->privilege_type,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//get the comment of the view
|
||||
$qry_view_comment = "SELECT nspname, cl.relname, obj_description(cl.oid)
|
||||
FROM pg_class cl, pg_catalog.pg_namespace ns
|
||||
WHERE ns.oid=cl.relnamespace
|
||||
AND cl.relname='".$row_view->viewname."'
|
||||
AND nspname='".$row_view->schemaname."';";
|
||||
|
||||
if($result_view_comment = $db->db_query($qry_view_comment))
|
||||
{
|
||||
if($row_view_comment = $db->db_fetch_object($result_view_comment))
|
||||
{
|
||||
$comment = $row_view_comment->obj_description;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//save the view informations for later
|
||||
$views[$key]['definition']=$row_view->definition;
|
||||
$views[$key]['schema']=$row_view->schemaname;
|
||||
$views[$key]['viewname']=$row_view->viewname;
|
||||
$views[$key]['dropped']=false;
|
||||
$views[$key]['privileges']=$privileges;
|
||||
$views[$key]['comment']=$comment;
|
||||
|
||||
|
||||
//resolve dependencys
|
||||
echo "resolving deps for " . $key."<br>";
|
||||
$qry_RECURSIVE_DEPS =
|
||||
"WITH RECURSIVE dep_recursive AS (
|
||||
|
||||
SELECT
|
||||
0 AS \"level\",
|
||||
'".$key."' AS \"dep_name\",
|
||||
'' AS \"dep_table\",
|
||||
'' AS \"dep_type\",
|
||||
'' AS \"ref_name\",
|
||||
'' AS \"ref_type\"
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
level + 1 AS \"level\",
|
||||
depedencies.dep_name,
|
||||
depedencies.dep_table,
|
||||
depedencies.dep_type,
|
||||
depedencies.ref_name,
|
||||
depedencies.ref_type
|
||||
FROM (
|
||||
WITH classType AS (
|
||||
SELECT
|
||||
oid,
|
||||
CASE relkind
|
||||
WHEN 'm' THEN 'MATERIALIZED VIEW'::text
|
||||
WHEN 'r' THEN 'TABLE'::text
|
||||
WHEN 'i' THEN 'INDEX'::text
|
||||
WHEN 'S' THEN 'SEQUENCE'::text
|
||||
WHEN 'v' THEN 'VIEW'::text
|
||||
WHEN 'c' THEN 'TYPE'::text
|
||||
WHEN 't' THEN 'TABLE'::text
|
||||
END AS \"type\"
|
||||
FROM pg_class
|
||||
)
|
||||
|
||||
SELECT DISTINCT
|
||||
CASE classid
|
||||
WHEN 'pg_class'::regclass THEN objid::regclass::text
|
||||
WHEN 'pg_type'::regclass THEN objid::regtype::text
|
||||
WHEN 'pg_proc'::regclass THEN objid::regprocedure::text
|
||||
WHEN 'pg_constraint'::regclass THEN (SELECT conname FROM pg_constraint WHERE OID = objid)
|
||||
WHEN 'pg_attrdef'::regclass THEN 'default'
|
||||
WHEN 'pg_rewrite'::regclass THEN (SELECT ev_class::regclass::text FROM pg_rewrite WHERE OID = objid)
|
||||
WHEN 'pg_trigger'::regclass THEN (SELECT tgname FROM pg_trigger WHERE OID = objid)
|
||||
ELSE objid::text
|
||||
END AS \"dep_name\",
|
||||
CASE classid
|
||||
WHEN 'pg_constraint'::regclass THEN (SELECT conrelid::regclass::text FROM pg_constraint WHERE OID = objid)
|
||||
WHEN 'pg_attrdef'::regclass THEN (SELECT adrelid::regclass::text FROM pg_attrdef WHERE OID = objid)
|
||||
WHEN 'pg_trigger'::regclass THEN (SELECT tgrelid::regclass::text FROM pg_trigger WHERE OID = objid)
|
||||
ELSE ''
|
||||
END AS \"dep_table\",
|
||||
CASE classid
|
||||
WHEN 'pg_class'::regclass THEN (SELECT TYPE FROM classType WHERE OID = objid)
|
||||
WHEN 'pg_type'::regclass THEN 'TYPE'
|
||||
WHEN 'pg_proc'::regclass THEN 'FUNCTION'
|
||||
WHEN 'pg_constraint'::regclass THEN 'TABLE CONSTRAINT'
|
||||
WHEN 'pg_attrdef'::regclass THEN 'TABLE DEFAULT'
|
||||
WHEN 'pg_rewrite'::regclass THEN (SELECT TYPE FROM classType WHERE OID = (SELECT ev_class FROM pg_rewrite WHERE OID = objid))
|
||||
WHEN 'pg_trigger'::regclass THEN 'TRIGGER'
|
||||
ELSE objid::text
|
||||
END AS \"dep_type\",
|
||||
CASE refclassid
|
||||
WHEN 'pg_class'::regclass THEN refobjid::regclass::text
|
||||
WHEN 'pg_type'::regclass THEN refobjid::regtype::text
|
||||
WHEN 'pg_proc'::regclass THEN refobjid::regprocedure::text
|
||||
ELSE refobjid::text
|
||||
END AS \"ref_name\",
|
||||
CASE refclassid
|
||||
WHEN 'pg_class'::regclass THEN (SELECT TYPE FROM classType WHERE OID = refobjid)
|
||||
WHEN 'pg_type'::regclass THEN 'TYPE'
|
||||
WHEN 'pg_proc'::regclass THEN 'FUNCTION'
|
||||
ELSE refobjid::text
|
||||
END AS \"ref_type\",
|
||||
CASE deptype
|
||||
WHEN 'n' THEN 'normal'
|
||||
WHEN 'a' THEN 'automatic'
|
||||
WHEN 'i' THEN 'internal'
|
||||
WHEN 'e' THEN 'extension'
|
||||
WHEN 'p' THEN 'pinned'
|
||||
END AS \"dependency type\"
|
||||
FROM pg_catalog.pg_depend
|
||||
WHERE deptype = 'n'
|
||||
AND refclassid NOT IN (2615, 2612)
|
||||
|
||||
) depedencies
|
||||
JOIN dep_recursive ON (dep_recursive.dep_name = depedencies.ref_name)
|
||||
WHERE depedencies.ref_name NOT IN(depedencies.dep_name, depedencies.dep_table)
|
||||
|
||||
)
|
||||
|
||||
SELECT
|
||||
MAX(level) AS \"level\",
|
||||
dep_name,
|
||||
MIN(dep_table) AS \"dep_table\",
|
||||
MIN(dep_type) AS \"dep_type\",
|
||||
string_agg(ref_name, ', ') AS \"ref_names\",
|
||||
string_agg(ref_type, ', ') AS \"ref_types\"
|
||||
FROM dep_recursive
|
||||
WHERE level > 0
|
||||
AND dep_type='VIEW'
|
||||
GROUP BY dep_name
|
||||
ORDER BY level desc, dep_name;";
|
||||
|
||||
if($res_RECURSIVE_DEPS = $db->db_query($qry_RECURSIVE_DEPS))
|
||||
{
|
||||
while($rrd = $db->db_fetch_object($res_RECURSIVE_DEPS))
|
||||
{
|
||||
$comment_deps = "";
|
||||
|
||||
echo "<span style='margin-left:20px;'>added " .$rrd->dep_name."</span><br>";
|
||||
if(strpos($rrd->dep_name,".") !== false)
|
||||
$qry_view_deps = "SELECT * FROM pg_views WHERE (schemaname || '.' || viewname)='$rrd->dep_name'";
|
||||
else
|
||||
$qry_view_deps = "SELECT * FROM pg_views WHERE viewname='$rrd->dep_name' AND schemaname='public'";
|
||||
|
||||
if($result_view_deps = $db->db_query($qry_view_deps))
|
||||
{
|
||||
if($row_view_deps = $db->db_fetch_object($result_view_deps))
|
||||
{
|
||||
$key_deps = $row_view_deps->schemaname.".".$row_view_deps->viewname;
|
||||
if(!isset($views[$key_deps]))
|
||||
{
|
||||
$privileges = array();
|
||||
|
||||
//get all privileges of this view
|
||||
$qry_view_priv = "SELECT *
|
||||
FROM information_schema.role_table_grants
|
||||
WHERE table_schema='".$row_view_deps->schemaname."'
|
||||
AND table_name='".$row_view_deps->viewname."';";
|
||||
|
||||
if($result_view_priv = $db->db_query($qry_view_priv))
|
||||
{
|
||||
while($row_view_priv = $db->db_fetch_object($result_view_priv))
|
||||
{
|
||||
$privileges[] = array(
|
||||
"grantee" => $row_view_priv->grantee,
|
||||
"privilege_type" => $row_view_priv->privilege_type,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//get the comment of the view
|
||||
$qry_view_comment = "SELECT nspname, cl.relname, obj_description(cl.oid)
|
||||
FROM pg_class cl, pg_catalog.pg_namespace ns
|
||||
WHERE ns.oid=cl.relnamespace
|
||||
AND cl.relname='".$row_view_deps->viewname."'
|
||||
AND nspname='".$row_view_deps->schemaname."';";
|
||||
|
||||
if($result_view_comment = $db->db_query($qry_view_comment))
|
||||
{
|
||||
if($row_view_comment = $db->db_fetch_object($result_view_comment))
|
||||
{
|
||||
$comment_deps = $row_view_comment->obj_description;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
$views[$key_deps]['definition']=$row_view_deps->definition;
|
||||
$views[$key_deps]['schema']=$row_view_deps->schemaname;
|
||||
$views[$key_deps]['viewname']=$row_view_deps->viewname;
|
||||
$views[$key_deps]['dropped']=false;
|
||||
$views[$key_deps]['privileges']=$privileges;
|
||||
$views[$key_deps]['comment']=$comment_deps;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<span style='margin-left:40px;'>view " . $rrd->dep_name . " not found!<br>";
|
||||
var_dump($qry_view_deps);
|
||||
echo "</span><br>";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//********************************DROP ALL VIEWS RECURSIVELY********************************
|
||||
echo "<br><br>LÖSCHEN:<br>";
|
||||
if(!drop_all_views_recursively($db, $views)){$success = false;}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//********************************CHANGE DATATYPE********************************
|
||||
$qry_alter = "
|
||||
ALTER TABLE public.tbl_person ALTER COLUMN svnr TYPE varchar(16);";
|
||||
|
||||
if(!$db->db_query($qry_alter))
|
||||
echo '<strong>public.tbl_person: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo 'public.tbl_person: svnr auf varchar(16) erhöht<br>';
|
||||
|
||||
//********************************CREATE ALL VIEWS AGAIN********************************
|
||||
echo "<br><br>NEU ANLEGEN:<br>";
|
||||
if(!create_all_views_recursively($db, $views)){$success = false;}
|
||||
|
||||
if($success)
|
||||
$db->db_query('COMMIT');
|
||||
else
|
||||
$db->db_query('ROLLBACK');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//RECURSIVE DROP FUNCTIONS
|
||||
function recursiveDrop($db, &$allviews, $lastcount)
|
||||
{
|
||||
|
||||
$nc = 0;
|
||||
foreach($allviews as $vk => $v)
|
||||
{
|
||||
if(!$allviews[$vk]["dropped"])
|
||||
{
|
||||
$db->db_query('SAVEPOINT drop_'.$v['schema'].'_'.$v['viewname'].';');
|
||||
|
||||
$qry_drp_view = "DROP VIEW ".$vk.";";
|
||||
if(@$db->db_query($qry_drp_view))
|
||||
{
|
||||
echo $vk ." DROPPED<br>";
|
||||
$allviews[$vk]["dropped"] = true;
|
||||
continue;
|
||||
}
|
||||
$nc ++; //count the not dropped
|
||||
$db->db_query('ROLLBACK TO drop_'.$v['schema'].'_'.$v['viewname'].';');
|
||||
}
|
||||
}
|
||||
|
||||
if($lastcount == 0)
|
||||
return true;
|
||||
|
||||
|
||||
if($nc == $lastcount)
|
||||
{
|
||||
echo "<br><br>ENDLESS!<br>";
|
||||
printAllUndroppedViews($allviews);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
$lastcount = $nc;
|
||||
return recursiveDrop($db, $allviews, $lastcount);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function drop_all_views_recursively($db, &$allviews)
|
||||
{
|
||||
return recursiveDrop($db, $allviews, count($allviews));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function printAllUndroppedViews($allviews)
|
||||
{
|
||||
foreach($allviews as $vk => $v)
|
||||
{
|
||||
if(!$v["dropped"])
|
||||
{
|
||||
echo $vk.'<br>';
|
||||
//var_dump($v);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//RECURSIVE CREATE FUNCTIONS
|
||||
function recursiveCreate($db, &$allviews, $lastcount)
|
||||
{
|
||||
$nc = 0;
|
||||
foreach($allviews as $vk => $v)
|
||||
{
|
||||
if($allviews[$vk]["dropped"])
|
||||
{
|
||||
$db->db_query('SAVEPOINT create_'.$v['schema'].'_'.$v['viewname'].';');
|
||||
|
||||
$qry_drp_view = "CREATE VIEW ".$vk." AS ".$v["definition"].";";
|
||||
if($v["comment"] != "")
|
||||
{
|
||||
$qry_drp_view .= "COMMENT ON VIEW $vk IS '".$v["comment"]."';";
|
||||
}
|
||||
|
||||
if(@$db->db_query($qry_drp_view))
|
||||
{
|
||||
echo $vk ." CREATED<br>";
|
||||
|
||||
foreach($v["privileges"] as $p)
|
||||
{
|
||||
$qry_add_privileges = "GRANT ".$p["privilege_type"]." ON ".$vk." TO ".$p["grantee"].";";
|
||||
if(!$db->db_query($qry_add_privileges))
|
||||
echo "<div style='color:red;'> ACHTUNG: Konnte ".$p["grantee"]." keine ".$p["privilege_type"]." rechte an $vk gewähren!</div>";
|
||||
}
|
||||
|
||||
$allviews[$vk]["dropped"] = false;
|
||||
continue;
|
||||
}
|
||||
$nc ++; //count the not created
|
||||
$db->db_query('ROLLBACK TO create_'.$v['schema'].'_'.$v['viewname'].';');
|
||||
}
|
||||
}
|
||||
|
||||
if($lastcount == 0)
|
||||
return true;
|
||||
|
||||
|
||||
|
||||
if($nc == $lastcount)
|
||||
{
|
||||
echo "<br><br>ENDLESS!<br>";
|
||||
printAllDroppedViews($allviews);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$lastcount = $nc;
|
||||
return recursiveCreate($db, $allviews, $lastcount);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function create_all_views_recursively($db, &$allviews)
|
||||
{
|
||||
return recursiveCreate($db, $allviews, count($allviews));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function printAllDroppedViews($allviews)
|
||||
{
|
||||
foreach($allviews as $vk => $v)
|
||||
{
|
||||
if($v["dropped"])
|
||||
{
|
||||
echo $vk.'<br>';
|
||||
//var_dump($v);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/***********************************************************ENDE SVNR ÄNDERUNG***********************************************************/
|
||||
|
||||
|
||||
//SVNR check auf char_length(16) || char_length(10) einfuegen
|
||||
|
||||
if($result = @$db->db_query("SELECT * FROM information_schema.table_constraints WHERE constraint_schema='public' AND table_name='tbl_person' AND constraint_name='chk_person_svnr' LIMIT 1;"))
|
||||
{
|
||||
if($db->db_num_rows($result)==0)
|
||||
{
|
||||
$qry = "ALTER TABLE public.tbl_person ADD CONSTRAINT chk_person_svnr CHECK ((char_length(svnr) = 10) OR (char_length(svnr) = 16) OR svnr IS NULL);";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
{
|
||||
echo '<strong>public.tbl_person: '.$db->db_last_error().'</strong><br>';
|
||||
$qry = "SELECT * FROM public.tbl_person WHERE char_length(svnr) != 10 AND char_length(svnr) != 16 AND svnr IS NOT NULL;";
|
||||
$res = $db->db_query($qry);
|
||||
while($r = $db->db_fetch_object($res))
|
||||
echo $r->person_id . ": " . $r->vorname . " " . $r->nachname . ": '" . $r->svnr."'<br>";
|
||||
}
|
||||
else
|
||||
echo 'public.tbl_person: Spalte svnr: Check auf char_length(10) oder char_length(16) hinzugefuegt';
|
||||
}
|
||||
}
|
||||
|
||||
//uhrzeit zu tbl_abschlusspruefung hinzufuegen
|
||||
if(!$result = @$db->db_query("SELECT uhrzeit from lehre.tbl_abschlusspruefung LIMIT 1;"))
|
||||
{
|
||||
$qry="ALTER TABLE lehre.tbl_abschlusspruefung ADD COLUMN uhrzeit time;";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>lehre.tbl_abschlusspruefung: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo 'lehre.tbl_abschlusspruefung: spalte uhrzeit hinzugefügt';
|
||||
}
|
||||
|
||||
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
|
||||
@@ -120,6 +677,7 @@ echo '<H2>Pruefe Tabellen und Attribute!</H2>';
|
||||
echo '<br><br><br>';
|
||||
|
||||
$tabellen=array(
|
||||
"bis.tbl_bisorgform" => array("bisorgform_kurzbz","code","bezeichnung"),
|
||||
"bis.tbl_archiv" => array("archiv_id","studiensemester_kurzbz","meldung","html","studiengang_kz","insertamum","insertvon","typ"),
|
||||
"bis.tbl_ausbildung" => array("ausbildungcode","ausbildungbez","ausbildungbeschreibung"),
|
||||
"bis.tbl_berufstaetigkeit" => array("berufstaetigkeit_code","berufstaetigkeit_bez","berufstaetigkeit_kurzbz"),
|
||||
@@ -137,7 +695,7 @@ $tabellen=array(
|
||||
"bis.tbl_lgartcode" => array("lgartcode","kurzbz","bezeichnung","beantragung","lgart_biscode"),
|
||||
"bis.tbl_mobilitaetsprogramm" => array("mobilitaetsprogramm_code","kurzbz","beschreibung","sichtbar","sichtbar_outgoing"),
|
||||
"bis.tbl_nation" => array("nation_code","entwicklungsstand","eu","ewr","kontinent","kurztext","langtext","engltext","sperre"),
|
||||
"bis.tbl_orgform" => array("orgform_kurzbz","code","bezeichnung","rolle"),
|
||||
"bis.tbl_orgform" => array("orgform_kurzbz","code","bezeichnung","rolle","bisorgform_kurzbz"),
|
||||
"bis.tbl_verwendung" => array("verwendung_code","verwendungbez"),
|
||||
"bis.tbl_zgv" => array("zgv_code","zgv_bez","zgv_kurzbz","bezeichnung"),
|
||||
"bis.tbl_zgvmaster" => array("zgvmas_code","zgvmas_bez","zgvmas_kurzbz","bezeichnung"),
|
||||
@@ -212,10 +770,10 @@ $tabellen=array(
|
||||
"kommune.tbl_wettbewerbteam" => array("team_kurzbz","wettbewerb_kurzbz","rang","punkte"),
|
||||
"kommune.tbl_wettbewerbtyp" => array("wbtyp_kurzbz","bezeichnung","farbe"),
|
||||
"lehre.tbl_abschlussbeurteilung" => array("abschlussbeurteilung_kurzbz","bezeichnung","bezeichnung_english"),
|
||||
"lehre.tbl_abschlusspruefung" => array("abschlusspruefung_id","student_uid","vorsitz","pruefer1","pruefer2","pruefer3","abschlussbeurteilung_kurzbz","akadgrad_id","pruefungstyp_kurzbz","datum","sponsion","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","note"),
|
||||
"lehre.tbl_abschlusspruefung" => array("abschlusspruefung_id","student_uid","vorsitz","pruefer1","pruefer2","pruefer3","abschlussbeurteilung_kurzbz","akadgrad_id","pruefungstyp_kurzbz","datum","uhrzeit","sponsion","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","note"),
|
||||
"lehre.tbl_akadgrad" => array("akadgrad_id","akadgrad_kurzbz","studiengang_kz","titel","geschlecht"),
|
||||
"lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id"),
|
||||
"lehre.tbl_anrechnung_begruendung" => array("begruendung_id","bezeichnung"),
|
||||
"lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id"),
|
||||
"lehre.tbl_anrechnung_begruendung" => array("begruendung_id","bezeichnung"),
|
||||
"lehre.tbl_betreuerart" => array("betreuerart_kurzbz","beschreibung"),
|
||||
"lehre.tbl_ferien" => array("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"),
|
||||
@@ -226,7 +784,7 @@ $tabellen=array(
|
||||
"lehre.tbl_lehrfunktion" => array("lehrfunktion_kurzbz","beschreibung","standardfaktor","sort"),
|
||||
"lehre.tbl_lehrmittel" => array("lehrmittel_kurzbz","beschreibung","ort_kurzbz"),
|
||||
"lehre.tbl_lehrtyp" => array("lehrtyp_kurzbz","bezeichnung"),
|
||||
"lehre.tbl_lehrveranstaltung" => array("lehrveranstaltung_id","kurzbz","bezeichnung","lehrform_kurzbz","studiengang_kz","semester","sprache","ects","semesterstunden","anmerkung","lehre","lehreverzeichnis","aktiv","planfaktor","planlektoren","planpersonalkosten","plankostenprolektor","koordinator","sort","zeugnis","projektarbeit","updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung_english","orgform_kurzbz","incoming","lehrtyp_kurzbz","oe_kurzbz","raumtyp_kurzbz","anzahlsemester","semesterwochen","lvnr","farbe","semester_alternativ","old_lehrfach_id","sws","lvs","alvs","lvps","las"),
|
||||
"lehre.tbl_lehrveranstaltung" => array("lehrveranstaltung_id","kurzbz","bezeichnung","lehrform_kurzbz","studiengang_kz","semester","sprache","ects","semesterstunden","anmerkung","lehre","lehreverzeichnis","aktiv","planfaktor","planlektoren","planpersonalkosten","plankostenprolektor","koordinator","sort","zeugnis","projektarbeit","updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung_english","orgform_kurzbz","incoming","lehrtyp_kurzbz","oe_kurzbz","raumtyp_kurzbz","anzahlsemester","semesterwochen","lvnr","farbe","semester_alternativ","old_lehrfach_id","sws","lvs","alvs","lvps","las","benotung","lvinfo"),
|
||||
"lehre.tbl_lehrveranstaltung_kompatibel" => array("lehrveranstaltung_id","lehrveranstaltung_id_kompatibel"),
|
||||
"lehre.tbl_lvangebot" => array("lvangebot_id","lehrveranstaltung_id","studiensemester_kurzbz","gruppe_kurzbz","incomingplaetze","gesamtplaetze","anmeldefenster_start","anmeldefenster_ende","insertamum","insertvon","updateamum","updatevon"),
|
||||
"lehre.tbl_lvregel" => array("lvregel_id","lvregeltyp_kurzbz","operator","parameter","lvregel_id_parent","lehrveranstaltung_id","studienplan_lehrveranstaltung_id","insertamum","insertvon","updateamum","updatevon"),
|
||||
@@ -245,7 +803,7 @@ $tabellen=array(
|
||||
"lehre.tbl_studienordnung" => array("studienordnung_id","studiengang_kz","version","gueltigvon","gueltigbis","bezeichnung","ects","studiengangbezeichnung","studiengangbezeichnung_englisch","studiengangkurzbzlang","akadgrad_id","insertamum","insertvon","updateamum","updatevon","ext_id"),
|
||||
"lehre.tbl_studienordnung_semester" => array("studienordnung_semester_id","studienordnung_id","studiensemester_kurzbz","semester"),
|
||||
"lehre.tbl_studienplan" => array("studienplan_id","studienordnung_id","orgform_kurzbz","version","regelstudiendauer","sprache","aktiv","bezeichnung","insertamum","insertvon","updateamum","updatevon","semesterwochen","testtool_sprachwahl","ext_id"),
|
||||
"lehre.tbl_studienplan_lehrveranstaltung" => array("studienplan_lehrveranstaltung_id","studienplan_id","lehrveranstaltung_id","semester","studienplan_lehrveranstaltung_id_parent","pflicht","koordinator","insertamum","insertvon","updateamum","updatevon","sort","ext_id"),
|
||||
"lehre.tbl_studienplan_lehrveranstaltung" => array("studienplan_lehrveranstaltung_id","studienplan_id","lehrveranstaltung_id","semester","studienplan_lehrveranstaltung_id_parent","pflicht","koordinator","insertamum","insertvon","updateamum","updatevon","sort","ext_id", "curriculum"),
|
||||
"lehre.tbl_studienplatz" => array("studienplatz_id","studiengang_kz","studiensemester_kurzbz","orgform_kurzbz","ausbildungssemester","gpz","npz","insertamum","insertvon","updateamum","updatevon","ext_id"),
|
||||
"lehre.tbl_stunde" => array("stunde","beginn","ende"),
|
||||
"lehre.tbl_stundenplan" => array("stundenplan_id","unr","mitarbeiter_uid","datum","stunde","ort_kurzbz","gruppe_kurzbz","titel","anmerkung","lehreinheit_id","studiengang_kz","semester","verband","gruppe","fix","updateamum","updatevon","insertamum","insertvon"),
|
||||
@@ -296,7 +854,7 @@ $tabellen=array(
|
||||
"public.tbl_notiz" => array("notiz_id","titel","text","verfasser_uid","bearbeiter_uid","start","ende","erledigt","insertamum","insertvon","updateamum","updatevon","ext_id"),
|
||||
"public.tbl_notizzuordnung" => array("notizzuordnung_id","notiz_id","projekt_kurzbz","projektphase_id","projekttask_id","uid","person_id","prestudent_id","bestellung_id","lehreinheit_id","ext_id","anrechnung_id"),
|
||||
"public.tbl_notiz_dokument" => array("notiz_id","dms_id"),
|
||||
"public.tbl_ort" => array("ort_kurzbz","bezeichnung","planbezeichnung","max_person","lehre","reservieren","aktiv","lageplan","dislozierung","kosten","ausstattung","updateamum","updatevon","insertamum","insertvon","ext_id","stockwerk","standort_id","telefonklappe","content_id","m2","gebteil","oe_kurzbz"),
|
||||
"public.tbl_ort" => array("ort_kurzbz","bezeichnung","planbezeichnung","max_person","lehre","reservieren","aktiv","lageplan","dislozierung","kosten","ausstattung","updateamum","updatevon","insertamum","insertvon","ext_id","stockwerk","standort_id","telefonklappe","content_id","m2","gebteil","oe_kurzbz"),
|
||||
"public.tbl_ortraumtyp" => array("ort_kurzbz","hierarchie","raumtyp_kurzbz"),
|
||||
"public.tbl_organisationseinheit" => array("oe_kurzbz", "oe_parent_kurzbz", "bezeichnung","organisationseinheittyp_kurzbz", "aktiv","mailverteiler","freigabegrenze","kurzzeichen","lehre","standort","warn_semesterstunden_frei","warn_semesterstunden_fix","standort_id"),
|
||||
"public.tbl_organisationseinheittyp" => array("organisationseinheittyp_kurzbz", "bezeichnung", "beschreibung"),
|
||||
@@ -399,7 +957,7 @@ foreach ($tabellen AS $attribute)
|
||||
|
||||
echo '<H2>Gegenpruefung!</H2>';
|
||||
$error=false;
|
||||
$sql_query="SELECT schemaname,tablename FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema' AND schemaname != 'sync' AND schemaname != 'addon';";
|
||||
$sql_query="SELECT schemaname,tablename FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema' AND schemaname != 'sync' AND schemaname != 'addon' AND schemaname != 'reports';";
|
||||
if (!$result=@$db->db_query($sql_query))
|
||||
echo '<BR><strong>'.$db->db_last_error().' </strong><BR>';
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user