';
+$this->phrasen['zeitaufzeichnung/homeofficeNichtErlaubt']='Homeoffice für den Tag %s nicht erlaubt';
diff --git a/locale/en-US/zeitaufzeichnung.php b/locale/en-US/zeitaufzeichnung.php
index a67a35e4b..9e0b84ec1 100644
--- a/locale/en-US/zeitaufzeichnung.php
+++ b/locale/en-US/zeitaufzeichnung.php
@@ -7,6 +7,7 @@ $this->phrasen['zeitaufzeichnung/projekt']='Project';
$this->phrasen['zeitaufzeichnung/projektphase']='Projectphase';
$this->phrasen['zeitaufzeichnung/keineAuswahl']='no selection';
$this->phrasen['zeitaufzeichnung/aktivitaet']='Activity';
+$this->phrasen['zeitaufzeichnung/homeoffice']='Homeoffice';
$this->phrasen['zeitaufzeichnung/id']='ID';
$this->phrasen['zeitaufzeichnung/user']='User';
$this->phrasen['zeitaufzeichnung/start']='Start';
@@ -63,3 +64,4 @@ $this->phrasen['zeitaufzeichnung/projektphase']='WP';
$this->phrasen['zeitaufzeichnung/pauseEinfuegen']='insert break automatically';
$this->phrasen['zeitaufzeichnung/zeitraumZuKurz']='Timeslot too short for automatic break.';
$this->phrasen['zeitaufzeichnung/supportAnfragen']='Contact for support zeiterfassung@technikum-wien.at';
+$this->phrasen['zeitaufzeichnung/homeofficeNichtErlaubt']='Homeoffice for day %s not allowed';
From d3158b8ce09cca85b940b11aabebf94bf679e5d0 Mon Sep 17 00:00:00 2001
From: ma0068
Date: Thu, 2 Sep 2021 11:31:58 +0200
Subject: [PATCH 23/48] merge dbupdate_3.3.php
---
system/dbupdate_3.3.php | 155 +++++++++++++++++++++++++++++++++-------
1 file changed, 130 insertions(+), 25 deletions(-)
diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php
index 0e0d4c9cb..02c6850be 100644
--- a/system/dbupdate_3.3.php
+++ b/system/dbupdate_3.3.php
@@ -212,21 +212,21 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.vw_msg_vars_user LIMIT 1"))
JOIN public.tbl_mitarbeiter ma ON ma.mitarbeiter_uid = b.uid
WHERE ma.personalnummer > 0
);';
-
+
if(!$db->db_query($qry))
echo 'public.vw_msg_vars_user: '.$db->db_last_error().' ';
else
echo ' public.vw_msg_vars_user view created';
-
+
$qry = 'GRANT SELECT ON TABLE public.vw_msg_vars_user TO web;';
-
+
if(!$db->db_query($qry))
echo 'public.vw_msg_vars_user: '.$db->db_last_error().' ';
else
echo ' Granted privileges to web on public.vw_msg_vars_user';
-
+
$qry = 'GRANT SELECT ON TABLE public.vw_msg_vars_user TO vilesci;';
-
+
if(!$db->db_query($qry))
echo 'public.vw_msg_vars_user: '.$db->db_last_error().' ';
else
@@ -4465,6 +4465,88 @@ if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE
}
}
+// ADD COLUMN azgrelevant in bis.tbl_bisverwendung
+if(!$result = @$db->db_query("SELECT azgrelevant FROM bis.tbl_bisverwendung LIMIT 1"))
+{
+ $qry = "
+ ALTER TABLE bis.tbl_bisverwendung ADD COLUMN azgrelevant boolean;
+ UPDATE bis.tbl_bisverwendung SET azgrelevant = zeitaufzeichnungspflichtig;
+ UPDATE bis.tbl_bisverwendung SET zeitaufzeichnungspflichtig = true WHERE ba1code=103 AND beschausmasscode!=5;
+ ";
+
+ if(!$db->db_query($qry))
+ echo 'bis.tbl_bisverwendung: '.$db->db_last_error().' ';
+ else
+ echo ' bis.tbl_bisverwendung Spalte azgrelevant hinzugefügt.';
+}
+
+// Add new funktion type kstzuordnung for cost center assignment in public.tbl_funktion
+if ($result = @$db->db_query("SELECT 1 FROM public.tbl_funktion WHERE funktion_kurzbz = 'kstzuordnung';"))
+{
+ if ($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO public.tbl_funktion(funktion_kurzbz, beschreibung, aktiv, fachbereich, semester) VALUES('kstzuordnung','Standardkostenstelle Zuordnung',true,false,false);";
+
+ if (!$db->db_query($qry))
+ echo 'public.tbl_funktion '.$db->db_last_error().' ';
+ else
+ echo ' public.tbl_funktion: Added funktion kstzuordnung ';
+ }
+}
+
+// Add column zugangstoken to tbl_projektbetreuer
+if(!$result = @$db->db_query("SELECT zugangstoken FROM lehre.tbl_projektbetreuer LIMIT 1"))
+{
+ $qry = "ALTER TABLE lehre.tbl_projektbetreuer ADD COLUMN zugangstoken VARCHAR(32);
+ COMMENT ON COLUMN lehre.tbl_projektbetreuer.zugangstoken IS 'Zugangstoken zur Projektarbeitsbewertung fuer externe Betreuer';
+ ALTER TABLE lehre.tbl_projektbetreuer ADD CONSTRAINT uk_tbl_projektbetreuer_zugangstoken UNIQUE (zugangstoken);";
+
+ if(!$db->db_query($qry))
+ echo 'lehre.tbl_projektbetreuer: '.$db->db_last_error().' ';
+ else
+ echo ' lehre.tbl_projektbetreuer: Spalte zugangstoken hinzugefuegt';
+}
+
+// Add column zugangstoken_gueltigbis to tbl_projektbetreuer
+if(!$result = @$db->db_query("SELECT zugangstoken_gueltigbis FROM lehre.tbl_projektbetreuer LIMIT 1"))
+{
+ $qry = "ALTER table lehre.tbl_projektbetreuer ADD COLUMN zugangstoken_gueltigbis date;
+ COMMENT ON COLUMN lehre.tbl_projektbetreuer.zugangstoken_gueltigbis IS 'Gueligkeitsdatum fuer Zugangstoken zur Projektarbeitsbewertung fuer externe Betreuer';";
+
+ if(!$db->db_query($qry))
+ echo 'lehre.tbl_projektbetreuer: '.$db->db_last_error().' ';
+ else
+ echo ' lehre.tbl_projektbetreuer: Spalte zugangstoken_gueltigbis hinzugefuegt';
+}
+
+// App 'projektarbeitsbeurteilung' hinzufügen
+if($result = $db->db_query("SELECT 1 FROM system.tbl_app WHERE app='projektarbeitsbeurteilung'"))
+{
+ if($db->db_num_rows($result)==0)
+ {
+ $qry = "INSERT INTO system.tbl_app(app) VALUES('projektarbeitsbeurteilung');";
+
+ if(!$db->db_query($qry))
+ echo 'App: '.$db->db_last_error().' ';
+ else
+ echo ' Neue App projektarbeitsbeurteilung in system.tbl_app hinzugefügt';
+ }
+}
+
+// UPDATE Berechtigung für lehre.tbl_projektbetreuer für web user hinzufügen
+if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants WHERE table_name='tbl_projektbetreuer' AND table_schema='lehre' AND grantee='web' AND privilege_type='UPDATE'"))
+{
+ if($db->db_num_rows($result)==0)
+ {
+ $qry = "GRANT UPDATE ON lehre.tbl_projektbetreuer TO web;";
+
+ if(!$db->db_query($qry))
+ echo 'Projektbetreuer Berechtigungen: '.$db->db_last_error().' ';
+ else
+ echo ' Web User: update fuer lehre.tbl_projektbetreuer berechtigt';
+ }
+}
+
// Add column dms_id, studiensemester_kurzbz, anmerkung_student und empfehlung_anrechnung
// Change genehmigt_von and begruendung_id to be NULLABLE
if(!$result = @$db->db_query("SELECT dms_id FROM lehre.tbl_anrechnung"))
@@ -4482,8 +4564,8 @@ if(!$result = @$db->db_query("SELECT dms_id FROM lehre.tbl_anrechnung"))
ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN begruendung_id DROP NOT NULL;
ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN insertamum SET DEFAULT NOW();
";
-
-
+
+
if(!$db->db_query($qry))
echo 'lehre.tbl_anrechnung: '.$db->db_last_error().' ';
else
@@ -4558,11 +4640,11 @@ if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnungstatus LIMIT 1;"
INSERT INTO lehre.tbl_anrechnungstatus(status_kurzbz, bezeichnung_mehrsprachig) VALUES('inProgressLektor', '{\"Empfehlung angefordert\",\"recommendation requested\"}');
INSERT INTO lehre.tbl_anrechnungstatus(status_kurzbz, bezeichnung_mehrsprachig) VALUES('approved', '{\"genehmigt\",\"approved\"}');
INSERT INTO lehre.tbl_anrechnungstatus(status_kurzbz, bezeichnung_mehrsprachig) VALUES('rejected', '{\"abgelehnt\",\"rejected\"}');
-
+
GRANT SELECT ON lehre.tbl_anrechnungstatus TO web;
GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_anrechnungstatus TO vilesci;
";
-
+
if(!$db->db_query($qry))
echo 'lehre.tbl_anrechnungstatus: '.$db->db_last_error().' ';
else
@@ -4590,12 +4672,12 @@ if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'seq_anrechn
NO MINVALUE
CACHE 1;
';
-
+
if(!$db->db_query($qry))
echo 'lehre.seq_anrechnungstatus_status_kurzbz '.$db->db_last_error().' ';
else
echo ' Created sequence: lehre.seq_anrechnungstatus_status_kurzbz';
-
+
// GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_anrechnungstatus_status_kurzbz_seq to web;
$qry = 'GRANT SELECT, UPDATE ON SEQUENCE lehre.seq_anrechnungstatus_status_kurzbz TO web;';
if (!$db->db_query($qry))
@@ -4623,7 +4705,7 @@ if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnung_anrechnungstatu
ALTER TABLE lehre.tbl_anrechnung_anrechnungstatus ADD CONSTRAINT pk_anrechnung_anrechnungstatus PRIMARY KEY (anrechnungstatus_id);
ALTER TABLE lehre.tbl_anrechnung_anrechnungstatus ADD CONSTRAINT fk_anrechnung_anrechnungstatus_anrechnung FOREIGN KEY (anrechnung_id) REFERENCES lehre.tbl_anrechnung(anrechnung_id) ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE lehre.tbl_anrechnung_anrechnungstatus ADD CONSTRAINT fk_anrechnung_anrechnungstatus_anrechnungstatus FOREIGN KEY (status_kurzbz) REFERENCES lehre.tbl_anrechnungstatus (status_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE;
-
+
CREATE SEQUENCE lehre.seq_anrechnung_anrechnungstatus_anrechnungstatus_id
START WITH 1
INCREMENT BY 1
@@ -4631,14 +4713,14 @@ if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnung_anrechnungstatu
NO MINVALUE
CACHE 1;
ALTER TABLE lehre.tbl_anrechnung_anrechnungstatus ALTER COLUMN anrechnungstatus_id SET DEFAULT nextval('lehre.seq_anrechnung_anrechnungstatus_anrechnungstatus_id');
-
+
INSERT INTO lehre.tbl_anrechnung_anrechnungstatus(anrechnung_id, status_kurzbz) SELECT anrechnung_id, 'approved' as status_kurzbz FROM lehre.tbl_anrechnung WHERE genehmigt_von is not null;
-
+
GRANT SELECT ON lehre.tbl_anrechnung_anrechnungstatus TO web;
GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_anrechnung_anrechnungstatus TO vilesci;
GRANT SELECT, UPDATE ON lehre.seq_anrechnung_anrechnungstatus_anrechnungstatus_id TO vilesci;
";
-
+
if(!$db->db_query($qry))
echo 'lehre.tbl_anrechnung_anrechnungstatus: '.$db->db_last_error().' ';
else
@@ -4664,7 +4746,7 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
if($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('student/anrechnung_beantragen', 'Anrechnung beantragen');";
-
+
if(!$db->db_query($qry))
echo 'system.tbl_berechtigung '.$db->db_last_error().' ';
else
@@ -4678,7 +4760,7 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
if($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('lehre/anrechnung_genehmigen', 'Anrechnung genehmigen');";
-
+
if(!$db->db_query($qry))
echo 'system.tbl_berechtigung '.$db->db_last_error().' ';
else
@@ -4692,7 +4774,7 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
if($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('lehre/anrechnung_empfehlen', 'Anrechnung empfehlen');";
-
+
if(!$db->db_query($qry))
echo 'system.tbl_berechtigung '.$db->db_last_error().' ';
else
@@ -4700,7 +4782,32 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
}
}
-// ADD COLUMN homeoffice in campus.tbl_zeitaufzeichnung
+// Add index to system.tbl_log
+if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_tbl_pruefung_student_uid'"))
+{
+ if ($db->db_num_rows($result) == 0)
+ {
+ $qry = "CREATE INDEX idx_tbl_pruefung_student_uid ON lehre.tbl_pruefung USING btree (student_uid)";
+
+ if (! $db->db_query($qry))
+ echo 'Indizes: ' . $db->db_last_error() . ' ';
+ else
+ echo 'Index fuer lehre.pruefung.student_uid hinzugefuegt ';
+ }
+}
+
+// Add column homeoffice to bis.tbl_bisverwendung
+if (!$result = @$db->db_query("SELECT homeoffice FROM bis.tbl_bisverwendung LIMIT 1"))
+{
+ $qry = "ALTER TABLE bis.tbl_bisverwendung ADD COLUMN homeoffice boolean NOT NULL DEFAULT FALSE";
+
+ if(!$db->db_query($qry))
+ echo 'bis.tbl_bisverwendung: '.$db->db_last_error().' ';
+ else
+ echo ' bis.tbl_bisverwendung: Spalte homeoffice hinzugefuegt';
+}
+
+// ADD COLUMN homeoffice to campus.tbl_zeitaufzeichnung
if(!$result = @$db->db_query("SELECT homeoffice FROM campus.tbl_zeitaufzeichnung 1"))
{
$qry = "
@@ -4730,7 +4837,7 @@ $tabellen=array(
"bis.tbl_bisfunktion" => array("bisverwendung_id","studiengang_kz","sws","updateamum","updatevon","insertamum","insertvon","ext_id"),
"bis.tbl_bisio" => array("bisio_id","mobilitaetsprogramm_code","nation_code","von","bis","zweck_code","student_uid","updateamum","updatevon","insertamum","insertvon","ext_id","ort","universitaet","lehreinheit_id","ects_erworben","ects_angerechnet"),
"bis.tbl_bisio_zweck" => array("bisio_id","zweck_code"),
- "bis.tbl_bisverwendung" => array("bisverwendung_id","ba1code","ba2code","vertragsstunden","beschausmasscode","verwendung_code","mitarbeiter_uid","hauptberufcode","hauptberuflich","habilitation","beginn","ende","updateamum","updatevon","insertamum","insertvon","ext_id","dv_art","inkludierte_lehre","zeitaufzeichnungspflichtig"),
+ "bis.tbl_bisverwendung" => array("bisverwendung_id","ba1code","ba2code","vertragsstunden","beschausmasscode","verwendung_code","mitarbeiter_uid","hauptberufcode","hauptberuflich","habilitation","beginn","ende","updateamum","updatevon","insertamum","insertvon","ext_id","dv_art","inkludierte_lehre","zeitaufzeichnungspflichtig","azgrelevant", "homeoffice"),
"bis.tbl_bundesland" => array("bundesland_code","kurzbz","bezeichnung"),
"bis.tbl_entwicklungsteam" => array("mitarbeiter_uid","studiengang_kz","besqualcode","beginn","ende","updateamum","updatevon","insertamum","insertvon","ext_id"),
"bis.tbl_gemeinde" => array("gemeinde_id","plz","name","ortschaftskennziffer","ortschaftsname","bulacode","bulabez","kennziffer"),
@@ -4799,7 +4906,7 @@ $tabellen=array(
"campus.tbl_uebung" => array("uebung_id","gewicht","punkte","angabedatei","freigabevon","freigabebis","abgabe","beispiele","statistik","bezeichnung","positiv","defaultbemerkung","lehreinheit_id","maxstd","maxbsp","liste_id","prozent","nummer","updateamum","updatevon","insertamum","insertvon"),
"campus.tbl_veranstaltung" => array("veranstaltung_id","titel","beschreibung","veranstaltungskategorie_kurzbz","inhalt","start","ende","freigabevon","freigabeamum","updateamum","updatevon","insertamum","insertvon"),
"campus.tbl_veranstaltungskategorie" => array("veranstaltungskategorie_kurzbz","bezeichnung","bild","farbe"),
- "campus.tbl_zeitaufzeichnung" => array("zeitaufzeichnung_id","uid","aktivitaet_kurzbz","projekt_kurzbz","start","ende","beschreibung","oe_kurzbz_1","oe_kurzbz_2","insertamum","insertvon","updateamum","updatevon","ext_id","service_id","kunde_uid","projektphase_id"),
+ "campus.tbl_zeitaufzeichnung" => array("zeitaufzeichnung_id","uid","aktivitaet_kurzbz","projekt_kurzbz","start","ende","beschreibung","oe_kurzbz_1","oe_kurzbz_2","insertamum","insertvon","updateamum","updatevon","ext_id","service_id","kunde_uid","projektphase_id","homeoffice"),
"campus.tbl_zeitaufzeichnung_gd" => array("zeitaufzeichnung_gd_id","uid","studiensemester_kurzbz","selbstverwaltete_pause","insertamum","insertvon","updateamum","updatevon"),
"campus.tbl_zeitsperre" => array("zeitsperre_id","zeitsperretyp_kurzbz","mitarbeiter_uid","bezeichnung","vondatum","vonstunde","bisdatum","bisstunde","vertretung_uid","updateamum","updatevon","insertamum","insertvon","erreichbarkeit_kurzbz","freigabeamum","freigabevon"),
"campus.tbl_zeitsperretyp" => array("zeitsperretyp_kurzbz","beschreibung","farbe"),
@@ -4819,10 +4926,8 @@ $tabellen=array(
"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","protokoll","endezeit","pruefungsantritt_kurzbz","freigabedatum"),
"lehre.tbl_abschlusspruefung_antritt" => array("pruefungsantritt_kurzbz","bezeichnung","bezeichnung_english","sort"),
"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", "dms_id", "studiensemester_kurzbz", "anmerkung_student", "empfehlung_anrechnung"),
- "lehre.tbl_anrechnung_anrechnungstatus" => array("anrechnungstatus_id", "anrechnung_id","status_kurzbz","datum", "insertamum","insertvon"),
+ "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_anrechnungstatus" => array("status_kurzbz","bezeichnung_mehrsprachig"),
"lehre.tbl_betreuerart" => array("betreuerart_kurzbz","beschreibung","aktiv"),
"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"),
@@ -4843,7 +4948,7 @@ $tabellen=array(
"lehre.tbl_notenschluesselzuordnung" => array("notenschluesselzuordnung_id","notenschluessel_kurzbz","lehrveranstaltung_id","studienplan_id","oe_kurzbz","studiensemester_kurzbz"),
"lehre.tbl_note" => array("note","bezeichnung","anmerkung","farbe","positiv","notenwert","aktiv","lehre","offiziell","bezeichnung_mehrsprachig","lkt_ueberschreibbar"),
"lehre.tbl_projektarbeit" => array("projektarbeit_id","projekttyp_kurzbz","titel","lehreinheit_id","student_uid","firma_id","note","punkte","beginn","ende","faktor","freigegeben","gesperrtbis","stundensatz","gesamtstunden","themenbereich","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","titel_english","seitenanzahl","abgabedatum","kontrollschlagwoerter","schlagwoerter","schlagwoerter_en","abstract", "abstract_en", "sprache","final"),
- "lehre.tbl_projektbetreuer" => array("person_id","projektarbeit_id","betreuerart_kurzbz","note","faktor","name","punkte","stunden","stundensatz","updateamum","updatevon","insertamum","insertvon","ext_id","vertrag_id"),
+ "lehre.tbl_projektbetreuer" => array("person_id","projektarbeit_id","betreuerart_kurzbz","note","faktor","name","punkte","stunden","stundensatz","updateamum","updatevon","insertamum","insertvon","ext_id","vertrag_id", "zugangstoken", "zugangstoken_gueltigbis"),
"lehre.tbl_projekttyp" => array("projekttyp_kurzbz","bezeichnung","aktiv"),
"lehre.tbl_pruefung" => array("pruefung_id","lehreinheit_id","student_uid","mitarbeiter_uid","note","pruefungstyp_kurzbz","datum","anmerkung","insertamum","insertvon","updateamum","updatevon","ext_id","pruefungsanmeldung_id","vertrag_id", "punkte"),
"lehre.tbl_pruefungstyp" => array("pruefungstyp_kurzbz","beschreibung","abschluss","sort"),
From 30c2705b99fac4eeeb04a9567b943fa235b2506f Mon Sep 17 00:00:00 2001
From: ma0068
Date: Thu, 2 Sep 2021 11:43:43 +0200
Subject: [PATCH 24/48] fix syntax error system/dbupdate_3.3.php
---
system/dbupdate_3.3.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php
index 02c6850be..b781e22fc 100644
--- a/system/dbupdate_3.3.php
+++ b/system/dbupdate_3.3.php
@@ -4808,7 +4808,7 @@ if (!$result = @$db->db_query("SELECT homeoffice FROM bis.tbl_bisverwendung LIMI
}
// ADD COLUMN homeoffice to campus.tbl_zeitaufzeichnung
-if(!$result = @$db->db_query("SELECT homeoffice FROM campus.tbl_zeitaufzeichnung 1"))
+if(!$result = @$db->db_query("SELECT homeoffice FROM campus.tbl_zeitaufzeichnung LIMIT 1"))
{
$qry = "
ALTER TABLE campus.tbl_zeitaufzeichnung ADD COLUMN homeoffice boolean NOT NULL DEFAULT false ;
From 9c84558f5fcbfce7cd0321226c01f0f03e7bbee1 Mon Sep 17 00:00:00 2001
From: Paolo
Date: Tue, 7 Sep 2021 12:13:59 +0200
Subject: [PATCH 25/48] - Added requiredPermissions to the
application/config/udfmasterschema.json and set them as mandatory - Removed
the private method _isAllowed from application/controllers/widgets/UDF.php -
Removed required permissions from views application/views/system/fas_udf.php
and application/views/system/infocenter/zgvpruefungen.php - Widget views
application/views/widgets/checkbox, dropdown, textarea and textfield now they
print the attribute disabled - Added constant DISABLED to
application/widgets/html/HTMLWidget.php - Removed private property
_requiredPermissions from application/widgets/udf/UDFWidget.php -
application/widgets/udf/UDFWidget.php does not check permissions anymore and
does not store them anymore - Added constants PERMISSION_TYPE_READ and
PERMISSION_TYPE_WRITE to application/libraries/UDFLib.php - Removed constant
PERMISSION_TYPE from application/libraries/UDFLib.php - Removed public method
isAllowed from application/libraries/UDFLib.php - Added private methods
_readAllowed, _writeAllowed, _setRequiredPermissions and _setReadOnly to
application/libraries/UDFLib.php - UDFLib->displayUDFWidget now checks if
permissions are declared in the UDF JSON and if the user is allowed to read
and write such UDF - UDFLib->saveUDFs now checks if the user has the
permissions to write such UDF - Now the UDFs are even displayed in read only
mode
---
application/config/udfmasterschema.json | 16 +-
application/controllers/widgets/UDF.php | 15 +-
application/libraries/UDFLib.php | 267 ++++++++++++------
application/views/system/fas_udf.php | 3 +-
.../views/system/infocenter/zgvpruefungen.php | 2 +-
application/views/widgets/checkbox.php | 4 +-
application/views/widgets/dropdown.php | 2 +
application/views/widgets/textarea.php | 4 +-
application/views/widgets/textfield.php | 4 +-
application/widgets/html/HTMLWidget.php | 46 +--
application/widgets/udf/UDFWidget.php | 34 +--
11 files changed, 235 insertions(+), 162 deletions(-)
diff --git a/application/config/udfmasterschema.json b/application/config/udfmasterschema.json
index fa06dc80d..ab3faa8c9 100644
--- a/application/config/udfmasterschema.json
+++ b/application/config/udfmasterschema.json
@@ -9,6 +9,13 @@
"name": {
"type": "string"
},
+ "type": {
+ "type": "string",
+ "enum": ["checkbox", "textfield", "textarea", "date", "dropdown", "multipledropdown"]
+ },
+ "requiredPermissions": {
+ "type": "array"
+ },
"description": {
"type": "array",
},
@@ -18,10 +25,6 @@
"title": {
"type": "array",
},
- "type": {
- "type": "string",
- "enum": ["checkbox", "textfield", "textarea", "date", "dropdown", "multipledropdown"]
- },
"sort": {
"type": "integer"
},
@@ -67,5 +70,6 @@
}
}
},
- "required": ["type", "name"]
-}
\ No newline at end of file
+ "required": ["type", "name", "requiredPermissions"]
+}
+
diff --git a/application/controllers/widgets/UDF.php b/application/controllers/widgets/UDF.php
index 5b4c45776..3ba745a10 100644
--- a/application/controllers/widgets/UDF.php
+++ b/application/controllers/widgets/UDF.php
@@ -26,9 +26,6 @@ class UDF extends FHC_Controller
// Loads the UDFLib with HTTP GET/POST parameters
$this->_loadUDFLib();
-
- // Checks if the caller is allow to use this UDF widget
- $this->_isAllowed();
}
//------------------------------------------------------------------------------------------------------------------
@@ -63,17 +60,6 @@ class UDF extends FHC_Controller
//------------------------------------------------------------------------------------------------------------------
// Private methods
- /**
- * Checks if the user is allowed to use this UDFWidget
- */
- private function _isAllowed()
- {
- if (!$this->udflib->isAllowed())
- {
- $this->terminateWithJsonError('You are not allowed to access to this content');
- }
- }
-
/**
* Loads the UDFLib with the UDF_UNIQUE_ID parameter
* If the parameter UDF_UNIQUE_ID is not given then the execution of the controller is terminated and
@@ -105,3 +91,4 @@ class UDF extends FHC_Controller
}
}
}
+
diff --git a/application/libraries/UDFLib.php b/application/libraries/UDFLib.php
index f9ad7d20d..756c382dd 100644
--- a/application/libraries/UDFLib.php
+++ b/application/libraries/UDFLib.php
@@ -30,13 +30,14 @@ class UDFLib
// ...to specify permissions that are needed to use this TableWidget
const REQUIRED_PERMISSIONS_PARAMETER = 'requiredPermissions';
+ const PERMISSION_TABLE_METHOD = 'UDFWidget'; // Name for fake method to be checked by the PermissionLib
+ const PERMISSION_TYPE_READ = 'r';
+ const PERMISSION_TYPE_WRITE = 'w';
+
// ...to specify the primary key name and value
const PRIMARY_KEY_NAME = 'primaryKeyName';
const PRIMARY_KEY_VALUE = 'primaryKeyValue';
- const PERMISSION_TABLE_METHOD = 'UDFWidget'; // Name for fake method to be checked by the PermissionLib
- const PERMISSION_TYPE = 'rw';
-
// HTML components
const LABEL = 'title';
const TITLE = 'description';
@@ -76,10 +77,10 @@ class UDFLib
// Public methods
/**
- * UDFWidget
- */
- public function UDFWidget($args, $htmlArgs = array())
- {
+ * UDFWidget
+ */
+ public function UDFWidget($args, $htmlArgs = array())
+ {
if ((isset($args[self::SCHEMA_ARG_NAME]) && !isEmptyString($args[self::SCHEMA_ARG_NAME]))
&& (isset($args[self::TABLE_ARG_NAME]) && !isEmptyString($args[self::TABLE_ARG_NAME])))
{
@@ -112,16 +113,17 @@ class UDFLib
show_error(self::TABLE_ARG_NAME.' parameter is missing!');
}
}
- }
+ }
- /**
+ /**
* It renders the HTML of the UDF
*
* NOTE: When this method is called $widgetData contains different data from
* parameter $args in the constructor
*/
- public function displayUDFWidget(&$widgetData)
+ public function displayUDFWidget(&$widgetData)
{
+ $field = null;
$schema = $widgetData[self::SCHEMA_ARG_NAME]; // schema attribute
$table = $widgetData[self::TABLE_ARG_NAME]; // table attribute
@@ -155,7 +157,7 @@ class UDFLib
$found = false; // used to check if the field is found or not in the json schema
$this->_sortJsonSchemas($jsonSchemasArray); // Sort the list of UDF by sort property
-
+
// Loops through json schemas
foreach ($jsonSchemasArray as $jsonSchema)
{
@@ -169,21 +171,37 @@ class UDFLib
{
show_error(sprintf('%s.%s: Attribute "name" not present in the json schema', $schema, $table));
}
+ // If the requiredPermissions property is not present then show an error
+ if (!isset($jsonSchema->{self::REQUIRED_PERMISSIONS_PARAMETER}))
+ {
+ show_error(sprintf('%s.%s: Attribute "requiredPermissions" not present in the json schema', $schema, $table));
+ }
+
+ // Set the required permissions for this UDF
+ $this->_setRequiredPermissions($jsonSchema->{self::NAME}, $jsonSchema->{self::REQUIRED_PERMISSIONS_PARAMETER});
// If a UDF is specified and is present in the json schemas list or no UDF is specified
if ((isset($field) && $field == $jsonSchema->{self::NAME}) || !isset($field))
{
- // Set attributes using phrases
- $this->_setAttributesWithPhrases($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
+ // If the user has the permissions to read this field
+ if ($this->_readAllowed($jsonSchema->{self::REQUIRED_PERMISSIONS_PARAMETER}))
+ {
+ // Set attributes using phrases
+ $this->_setAttributesWithPhrases($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
- // Set validation attributes
- $this->_setValidationAttributes($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
+ // Set validation attributes
+ $this->_setValidationAttributes($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
- // Set name and id attributes
- $this->_setNameAndId($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
+ // Set name and id attributes
+ $this->_setNameAndId($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
- // Render the HTML for this UDF
- $this->_render($jsonSchema, $widgetData);
+ // Set if the field is in read only mode
+ $this->_setReadOnly($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
+
+ // Render the HTML for this UDF
+ $this->_render($jsonSchema, $widgetData);
+ }
+ // otherwise the UDF is not displayed
// If a UDf is specified and it was found then stop looking through this list
if (isset($field) && $field == $jsonSchema->{self::NAME})
@@ -213,7 +231,7 @@ class UDFLib
show_error(sprintf('%s.%s: Does not contain "jsons" field', $schema, $table));
}
}
- }
+ }
/**
* Manage UDFs
@@ -249,6 +267,22 @@ class UDFLib
{
$decodedUDFDefinition = $decodedUDFDefinitions[$i]; // Definition of a single UDF
+ // Checks if the requiredPermissions is available and it is a valid array or a valid string
+ if (isset($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER})
+ && (!isEmptyArray($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER})
+ || !isEmptyString($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER})))
+ {
+ // Then check if the user has the permissions to write such UDF
+ if (!$this->_writeAllowed($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER}))
+ {
+ $notValidUDFsArray[] = error('Writing not allowed for UDF: '.$decodedUDFDefinition->{self::NAME});
+ }
+ }
+ else
+ {
+ $notValidUDFsArray[] = error('Writing permissions not defined for UDF: '.$decodedUDFDefinition->{self::NAME});
+ }
+
// Loops through the UDFs values that should be stored
foreach ($udfsParameters as $key => $val)
{
@@ -468,12 +502,32 @@ class UDFLib
*/
public function saveUDFs($udfUniqueId, $udfs)
{
+ $udfToBewritten = array(); // UDFs to be written into database
+
// Read the all session for this udf widget
$session = $this->getSession();
// If session is empty then return an error
if ($session == null) return error('No UDFWidget loaded');
+ // Get the required permission from the session
+ $requiredPermissions = $session[self::REQUIRED_PERMISSIONS_PARAMETER];
+
+ // For each UDF that is trying to save
+ foreach ($udfs as $udfName => $udfValue)
+ {
+ // If the UDFs exists in the requiredPermissions array
+ if (array_key_exists($udfName, $requiredPermissions))
+ {
+ // Then check if the user has the permissions to write such UDF
+ if ($this->_writeAllowed($requiredPermissions[$udfName]))
+ {
+ // If allowed then save the UDF name and value to be stored later into the database
+ $udfToBewritten[$udfName] = $udfValue;
+ }
+ }
+ }
+
// Workaround to load CI
$this->_ci->load->model('system/UDF_model', 'UDFModel');
@@ -490,30 +544,56 @@ class UDFLib
// Returns the result of the database update operation to save UDFs
return $dbModel->update(
array($session[self::PRIMARY_KEY_NAME] => $session[self::PRIMARY_KEY_VALUE]),
- (array)$udfs
+ $udfToBewritten
);
}
- /**
- * Checks if at least one of the permissions given as parameter (requiredPermissions) belongs
- * to the authenticated user, if confirmed then is allowed to use this UDFWidget.
- * If the parameter requiredPermissions is NOT given or is not present in the session,
- * then NO one is allow to use this UDFWidget
- * Wrapper method to permissionlib->hasAtLeastOne
- */
- public function isAllowed($requiredPermissions = null)
- {
- $this->_ci->load->library('PermissionLib'); // Load permission library
-
- // Gets the required permissions from the session if they are not provided as parameter
- $rq = $requiredPermissions;
- if ($rq == null) $rq = $this->getSessionElement(self::REQUIRED_PERMISSIONS_PARAMETER);
-
- return $this->_ci->permissionlib->hasAtLeastOne($rq, self::PERMISSION_TABLE_METHOD, self::PERMISSION_TYPE);
- }
-
// -------------------------------------------------------------------------------------------------
// Private methods
+ //
+
+ /**
+ * Checks if at least one of the permissions given as parameter belongs to the authenticated user in read mode
+ * Wrapper method to permissionlib->hasAtLeastOne
+ */
+ private function _readAllowed($requiredPermissions)
+ {
+ $this->_ci->load->library('PermissionLib'); // Load permission library
+
+ return $this->_ci->permissionlib->hasAtLeastOne($requiredPermissions, self::PERMISSION_TABLE_METHOD, self::PERMISSION_TYPE_READ);
+ }
+
+ /**
+ * Checks if at least one of the permissions given as parameter belongs to the authenticated user in write mode
+ * Wrapper method to permissionlib->hasAtLeastOne
+ */
+ private function _writeAllowed($requiredPermissions)
+ {
+ $this->_ci->load->library('PermissionLib'); // Load permission library
+
+ return $this->_ci->permissionlib->hasAtLeastOne($requiredPermissions, self::PERMISSION_TABLE_METHOD, self::PERMISSION_TYPE_WRITE);
+ }
+
+ /**
+ * Set an array of required permissions for a UDF into the session
+ */
+ private function _setRequiredPermissions($udfName, $permissions)
+ {
+ // Get the session for this UDFWidget
+ $session = $this->getSession();
+
+ // If does _not_ exist yet in the session
+ if (!isset($session[self::REQUIRED_PERMISSIONS_PARAMETER]))
+ {
+ $session[self::REQUIRED_PERMISSIONS_PARAMETER] = array();
+ }
+
+ // Set the required permission in the session for this UDFWidget
+ $session[self::REQUIRED_PERMISSIONS_PARAMETER][$udfName] = $permissions;
+
+ // Write into the session
+ $this->setSession($session);
+ }
/**
* Print the block for UDFs
@@ -654,20 +734,36 @@ class UDFLib
return $returnArrayValidation;
}
- /**
- * Set the name and id attribute of the HTML element
- */
- private function _setNameAndId($jsonSchema, &$htmlParameters)
- {
+ /**
+ * Disable the HTML element if in read only mode
+ */
+ private function _setReadOnly($jsonSchema, &$htmlParameters)
+ {
+ // If write permissions _not_ exist then set the field as disabled
+ if (!$this->_writeAllowed($jsonSchema->{self::REQUIRED_PERMISSIONS_PARAMETER}))
+ {
+ $htmlParameters[HTMLWidget::DISABLED] = HTMLWidget::DISABLED; // any values is fine
+ }
+ else // otherwise restore to default
+ {
+ if (isset($htmlParameters[HTMLWidget::DISABLED])) unset($htmlParameters[HTMLWidget::DISABLED]);
+ }
+ }
+
+ /**
+ * Set the name and id attribute of the HTML element
+ */
+ private function _setNameAndId($jsonSchema, &$htmlParameters)
+ {
$htmlParameters[HTMLWidget::HTML_ID] = $jsonSchema->{self::NAME};
$htmlParameters[HTMLWidget::HTML_NAME] = $jsonSchema->{self::NAME};
- }
-
- /**
- * Sort the list of UDF by sort property
- */
- private function _sortJsonSchemas(&$jsonSchemasArray)
- {
+ }
+
+ /**
+ * Sort the list of UDF by sort property
+ */
+ private function _sortJsonSchemas(&$jsonSchemasArray)
+ {
usort($jsonSchemasArray, function ($a, $b) {
if (!isset($a->{self::SORT}))
{
@@ -684,13 +780,13 @@ class UDFLib
return ($a->{self::SORT} < $b->{self::SORT}) ? -1 : 1;
});
- }
-
- /**
- * Loads the UDF description by the given schema and table
- */
- private function _loadUDF($schema, $table)
- {
+ }
+
+ /**
+ * Loads the UDF description by the given schema and table
+ */
+ private function _loadUDF($schema, $table)
+ {
// Loads UDF model
$this->_ci->load->model('system/UDF_model', 'UDFModel');
@@ -722,13 +818,13 @@ class UDFLib
}
return $udfResults;
- }
+ }
- /**
- * Render the HTML for the UDF
- */
- private function _render($jsonSchema, &$widgetData)
- {
+ /**
+ * Render the HTML for the UDF
+ */
+ private function _render($jsonSchema, &$widgetData)
+ {
// Checkbox
if ($jsonSchema->{self::TYPE} == 'checkbox')
{
@@ -759,11 +855,11 @@ class UDFLib
{
$this->_renderDropdown($jsonSchema, $widgetData, true);
}
- }
+ }
- /**
- * Renders a dropdown element
- */
+ /**
+ * Renders a dropdown element
+ */
private function _renderDropdown($jsonSchema, &$widgetData, $multiple = false)
{
// Selected element/s
@@ -805,8 +901,8 @@ class UDFLib
}
/**
- * Renders a textarea element
- */
+ * Renders a textarea element
+ */
private function _renderTextarea($jsonSchema, &$widgetData)
{
$text = null; // text value
@@ -823,8 +919,8 @@ class UDFLib
}
/**
- * Renders an input text element
- */
+ * Renders an input text element
+ */
private function _renderTextfield($jsonSchema, &$widgetData)
{
$text = null; // text value
@@ -841,8 +937,8 @@ class UDFLib
}
/**
- * Renders a checkbox element
- */
+ * Renders a checkbox element
+ */
private function _renderCheckbox($jsonSchema, &$widgetData)
{
// Set checkbox value if present in the DB
@@ -861,11 +957,11 @@ class UDFLib
$checkboxWidgetUDF->render();
}
- /**
- * Sets the attributes of the HTML element using the phrases system
- */
- private function _setAttributesWithPhrases($jsonSchema, &$htmlParameters)
- {
+ /**
+ * Sets the attributes of the HTML element using the phrases system
+ */
+ private function _setAttributesWithPhrases($jsonSchema, &$htmlParameters)
+ {
// By default set to null all the attributes
$htmlParameters[HTMLWidget::LABEL] = null;
$htmlParameters[HTMLWidget::TITLE] = null;
@@ -933,13 +1029,13 @@ class UDFLib
}
}
}
- }
+ }
- /**
- * Sets the validation attributes of the HTML element using the configuration inside the json schema
- */
- private function _setValidationAttributes($jsonSchema, &$htmlParameters)
- {
+ /**
+ * Sets the validation attributes of the HTML element using the configuration inside the json schema
+ */
+ private function _setValidationAttributes($jsonSchema, &$htmlParameters)
+ {
// Validation attributes set by default to null
$htmlParameters[HTMLWidget::REGEX] = null;
$htmlParameters[HTMLWidget::REQUIRED] = null;
@@ -998,3 +1094,4 @@ class UDFLib
}
}
}
+
diff --git a/application/views/system/fas_udf.php b/application/views/system/fas_udf.php
index 8a1200b6a..e6fa396cf 100644
--- a/application/views/system/fas_udf.php
+++ b/application/views/system/fas_udf.php
@@ -45,7 +45,6 @@
echo $this->udflib->UDFWidget(
array(
UDFLib::UDF_UNIQUE_ID => 'fasPersonUDFs',
- UDFLib::REQUIRED_PERMISSIONS_PARAMETER => 'basis/person',
UDFLib::SCHEMA_ARG_NAME => 'public',
UDFLib::TABLE_ARG_NAME => 'tbl_person',
UDFLib::PRIMARY_KEY_NAME => 'person_id',
@@ -70,7 +69,6 @@
echo $this->udflib->UDFWidget(
array(
UDFLib::UDF_UNIQUE_ID => 'fasPrestudentUDFs',
- UDFLib::REQUIRED_PERMISSIONS_PARAMETER => 'basis/person',
UDFLib::SCHEMA_ARG_NAME => 'public',
UDFLib::TABLE_ARG_NAME => 'tbl_prestudent',
UDFLib::PRIMARY_KEY_NAME => 'prestudent_id',
@@ -109,3 +107,4 @@
load->view("templates/footer"); ?>
+
diff --git a/application/views/system/infocenter/zgvpruefungen.php b/application/views/system/infocenter/zgvpruefungen.php
index 05c94c384..2b08dada3 100644
--- a/application/views/system/infocenter/zgvpruefungen.php
+++ b/application/views/system/infocenter/zgvpruefungen.php
@@ -341,7 +341,6 @@
echo $this->udflib->UDFWidget(
array(
UDFLib::UDF_UNIQUE_ID => 'infocenterPrestudentUDFs_'.$zgvpruefung->prestudent_id,
- UDFLib::REQUIRED_PERMISSIONS_PARAMETER => 'infocenter',
UDFLib::SCHEMA_ARG_NAME => 'public',
UDFLib::TABLE_ARG_NAME => 'tbl_prestudent',
UDFLib::PRIMARY_KEY_NAME => 'prestudent_id',
@@ -553,3 +552,4 @@
endforeach; // end foreach zgvpruefungen
?>
+
diff --git a/application/views/widgets/checkbox.php b/application/views/widgets/checkbox.php
index 6debb2afd..811e3c682 100644
--- a/application/views/widgets/checkbox.php
+++ b/application/views/widgets/checkbox.php
@@ -24,6 +24,7 @@
+
-
\ No newline at end of file
+
+
diff --git a/application/views/widgets/dropdown.php b/application/views/widgets/dropdown.php
index d9faf1978..51db6d536 100644
--- a/application/views/widgets/dropdown.php
+++ b/application/views/widgets/dropdown.php
@@ -33,6 +33,7 @@
+
>
+
diff --git a/application/views/widgets/textarea.php b/application/views/widgets/textarea.php
index c72b52658..5346fefa8 100644
--- a/application/views/widgets/textarea.php
+++ b/application/views/widgets/textarea.php
@@ -29,9 +29,11 @@
+
>
-
\ No newline at end of file
+
+
diff --git a/application/views/widgets/textfield.php b/application/views/widgets/textfield.php
index 73b1daa1b..c5ba81710 100644
--- a/application/views/widgets/textfield.php
+++ b/application/views/widgets/textfield.php
@@ -31,10 +31,12 @@
+
value=""
>
-
\ No newline at end of file
+
+
diff --git a/application/widgets/html/HTMLWidget.php b/application/widgets/html/HTMLWidget.php
index 9639890ea..0034edfd9 100644
--- a/application/widgets/html/HTMLWidget.php
+++ b/application/widgets/html/HTMLWidget.php
@@ -6,18 +6,18 @@
class HTMLWidget extends Widget
{
// The name of the array present in the data array given to the view that will render this widget
- const HTML_ARG_NAME = 'HTML';
+ const HTML_ARG_NAME = 'HTML';
const HTML_DEFAULT_VALUE = ''; // Default value of the html element
- const HTML_NAME = 'name'; // HTML name attribute
- const HTML_ID = 'id'; // HTML id attribute
-
- // External block definition
- const EXTERNAL_BLOCK = 'externalBlock'; // External block name
- const EXTERNAL_START_BLOCK_HTML_TAG = '
';
- }
- }
- else
- {
- if ($rt->getReihungstestPersonDatum($ps->prestudent_id, date('Y-m-d')))
- {
- // TODO Was ist wenn da mehrere Zurueckkommen?!
- if (isset($rt->result[0]))
- $reihungstest_id = $rt->result[0]->reihungstest_id;
- else
- {
- $alertmsg .= '
';
- }
- }
-}
-
-// Set language of user.
-// NOTE: don't move the code in order to check first the right studies' reihungstest language
-// (in case it was overruled by other STG with higher priority)
-
-// Start with default language on first login (before any prestudent has been selected)
-$sprache_user = DEFAULT_LANGUAGE;
-if (isset($_SESSION['sprache_user']) && !empty($_SESSION['sprache_user']))
-{
- // If session var already exists, overwrite language var
- // (session var changes e.g. when user selects other language with language-select-menu)
- $sprache_user = $_SESSION['sprache_user'];
-}
-elseif (isset($_SESSION['prestudent_id']))
-{
- // If session var does not exist but prestudent is known, set the session var
- $_SESSION['sprache_user'] = DEFAULT_LANGUAGE;
-}
-
-// If language is changed by language select menu, reset language variables
-if (isset($_GET['sprache_user']) && !empty($_GET['sprache_user']))
-{
- $sprache_user = $_GET['sprache_user'];
- $_SESSION['sprache_user'] = $_GET['sprache_user'];
-}
-
-// NOTE: leave phrasen here, as the final users language is not defined until here
-$p = new phrasen($sprache_user);
-
-if (isset($_SESSION['prestudent_id']))
-{
- $prestudent_id=$_SESSION['prestudent_id'];
-}
-else
-{
- //$prestudent_id=null;
- $ps=new prestudent();
- $datum=date('Y-m-d');
- // An der FHTW wird ein Bewerber nur einmal ausgegeben (1. Prio) falls es mehrere Bewerbungen gibt
- /*if (CAMPUS_NAME == 'FH Technikum Wien')
- {
- $ps->getFirstPrioPrestudentRT($datum);
- }
- else*/
- {
- $ps->getPrestudentRT($datum);
- }
-}
-
-
-if (isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id']))
-{
- $pruefling = new pruefling();
-
- //wenn kein Prüfling geladen werden kann
- if (!$pruefling->getPruefling($_SESSION['prestudent_id']))
- $pruefling->new = true;
- else
- $pruefling->new = false;
-
- $pruefling->studiengang_kz = $_SESSION['studiengang_kz'];
- $pruefling->semester = $_SESSION['semester'];
-
- $pruefling->idnachweis = '';
- $pruefling->registriert = date('Y-m-d H:i:s');
- $pruefling->prestudent_id = $_SESSION['prestudent_id'];
- if ($pruefling->save())
- {
- $_SESSION['pruefling_id']=$pruefling->pruefling_id;
- $reload_menu=true;
- }
-}
-
-if (isset($_POST['save']) && isset($_SESSION['prestudent_id']))
-{
- $pruefling = new pruefling();
- if ($_POST['pruefling_id']!='')
- if (!$pruefling->load($_POST['pruefling_id']))
- die('Pruefling wurde nicht gefunden');
- else
- $pruefling->new=false;
- else
- $pruefling->new=true;
-
- $pruefling->studiengang_kz = $_SESSION['studiengang_kz'];
- $pruefling->idnachweis = isset($_POST['idnachweis'])?$_POST['idnachweis']:'';
- $pruefling->registriert = date('Y-m-d H:i:s');
- $pruefling->prestudent_id = $_SESSION['prestudent_id'];
- $pruefling->semester = $_POST['semester'];
- if ($pruefling->save())
- {
- $_SESSION['pruefling_id']=$pruefling->pruefling_id;
- $_SESSION['semester']=$pruefling->semester;
- $reload_menu=true;
- }
-}
-?>
-
-
-
-
-
-
-
-
-
-
-
-parent.menu.location.reload();';
-?>
-
-
-
-
-
-studiengang_kz);
- $pruefling = new pruefling();
- $typ = new studiengang($prestudent->studiengang_kz);
- $typ->getStudiengangTyp($stg_obj->typ);
-
- // STG mit der höchsten Prio ermitteln
- $ps = new Prestudent();
-
- // * prinzipiell STG der session übernehmem
- $firstPrio_studiengang_kz = $prestudent->studiengang_kz;
-
- // * wenn STG des eingeloggten Prestudenten vom Typ Bachelor ist, dann höchste Prio aller
- // Bachelor-STG ermitteln, an denen die Person noch interessiert ist
- if ($typ->typ == 'b')
- {
- $ps->getActualInteressenten($prestudent_id, true, 'b');
- foreach($ps->result as $row_prio)
- {
- if (isset($row_prio->studiengang_kz))
- {
- $firstPrio_studiengang_kz = $row_prio->studiengang_kz;
- $firstPrio_studienplan_id = $row_prio->studienplan_id;
- break;
- }
- }
- }
-
- // Sprachwahl zu STG mit höchster Prio ermitteln
- $ablauf = new Ablauf();
- $sprachwahl = false;
-
- $ablauf->getAblaufGebiete($firstPrio_studiengang_kz, $firstPrio_studienplan_id);
-
- if (empty($ablauf->result[0]))
- {
- $ablauf->getAblaufGebiete($firstPrio_studiengang_kz);
- }
-
- if (isset($ablauf->result[0])
- && is_bool($ablauf->result[0]->sprachwahl))
- {
- $sprachwahl = $ablauf->result[0]->sprachwahl;
- }
-
- // If language can be switched, display language select menu on the top
- if ($sprachwahl)
- {
- $_SESSION['sprache_auswahl'] = true;
- ?>
-
- ';
- echo '
-
';
- }
- }
- }
- // * wenn Prestudent an einem Master-Studiengang interessiert ist, dann nur den einen STG anführen
- else
- {
- // Letzten Status für des Prestudenten einholen
- $ps_master = new Prestudent();
- $ps_master->getLastStatus($prestudent_id);
- echo '
';
+ }
+ }
+ else
+ {
+ if ($rt->getReihungstestPersonDatum($ps->prestudent_id, date('Y-m-d')))
+ {
+ // TODO Was ist wenn da mehrere Zurueckkommen?!
+ if (isset($rt->result[0]))
+ $reihungstest_id = $rt->result[0]->reihungstest_id;
+ else
+ {
+ $alertmsg .= '
';
+ }
+ }
+}
+
+// Set language of user.
+// NOTE: don't move the code in order to check first the right studies' reihungstest language
+// (in case it was overruled by other STG with higher priority)
+
+// Start with default language on first login (before any prestudent has been selected)
+$sprache_user = DEFAULT_LANGUAGE;
+if (isset($_SESSION['sprache_user']) && !empty($_SESSION['sprache_user']))
+{
+ // If session var already exists, overwrite language var
+ // (session var changes e.g. when user selects other language with language-select-menu)
+ $sprache_user = $_SESSION['sprache_user'];
+}
+elseif (isset($_SESSION['prestudent_id']))
+{
+ // If session var does not exist but prestudent is known, set the session var
+ $_SESSION['sprache_user'] = DEFAULT_LANGUAGE;
+}
+
+// If language is changed by language select menu, reset language variables
+if (isset($_GET['sprache_user']) && !empty($_GET['sprache_user']))
+{
+ $sprache_user = $_GET['sprache_user'];
+ $_SESSION['sprache_user'] = $_GET['sprache_user'];
+}
+
+// NOTE: leave phrasen here, as the final users language is not defined until here
+$p = new phrasen($sprache_user);
+
+if (isset($_SESSION['prestudent_id']))
+{
+ $prestudent_id=$_SESSION['prestudent_id'];
+}
+else
+{
+ //$prestudent_id=null;
+ $ps=new prestudent();
+ $datum=date('Y-m-d');
+ // An der FHTW wird ein Bewerber nur einmal ausgegeben (1. Prio) falls es mehrere Bewerbungen gibt
+ /*if (CAMPUS_NAME == 'FH Technikum Wien')
+ {
+ $ps->getFirstPrioPrestudentRT($datum);
+ }
+ else*/
+ {
+ $ps->getPrestudentRT($datum);
+ }
+}
+
+
+if (isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id']))
+{
+ $pruefling = new pruefling();
+
+ //wenn kein Prüfling geladen werden kann
+ if (!$pruefling->getPruefling($_SESSION['prestudent_id']))
+ $pruefling->new = true;
+ else
+ $pruefling->new = false;
+
+ $pruefling->studiengang_kz = $_SESSION['studiengang_kz'];
+ $pruefling->semester = $_SESSION['semester'];
+
+ $pruefling->idnachweis = '';
+ $pruefling->registriert = date('Y-m-d H:i:s');
+ $pruefling->prestudent_id = $_SESSION['prestudent_id'];
+ if ($pruefling->save())
+ {
+ $_SESSION['pruefling_id']=$pruefling->pruefling_id;
+ $reload_menu=true;
+ }
+}
+
+if (isset($_POST['save']) && isset($_SESSION['prestudent_id']))
+{
+ $pruefling = new pruefling();
+ if ($_POST['pruefling_id']!='')
+ if (!$pruefling->load($_POST['pruefling_id']))
+ die('Pruefling wurde nicht gefunden');
+ else
+ $pruefling->new=false;
+ else
+ $pruefling->new=true;
+
+ $pruefling->studiengang_kz = $_SESSION['studiengang_kz'];
+ $pruefling->idnachweis = isset($_POST['idnachweis'])?$_POST['idnachweis']:'';
+ $pruefling->registriert = date('Y-m-d H:i:s');
+ $pruefling->prestudent_id = $_SESSION['prestudent_id'];
+ $pruefling->semester = $_POST['semester'];
+ if ($pruefling->save())
+ {
+ $_SESSION['pruefling_id']=$pruefling->pruefling_id;
+ $_SESSION['semester']=$pruefling->semester;
+ $reload_menu=true;
+ }
+}
+?>
+
+
+
+
+
+
+
+
+
+
+
+parent.menu.location.reload();';
+?>
+
+
+
+
+
+studiengang_kz);
+ $pruefling = new pruefling();
+ $typ = new studiengang($prestudent->studiengang_kz);
+ $typ->getStudiengangTyp($stg_obj->typ);
+
+ // STG mit der höchsten Prio ermitteln
+ $ps = new Prestudent();
+
+ // * prinzipiell STG der session übernehmem
+ $firstPrio_studiengang_kz = $prestudent->studiengang_kz;
+
+ // * wenn STG des eingeloggten Prestudenten vom Typ Bachelor ist, dann höchste Prio aller
+ // Bachelor-STG ermitteln, an denen die Person noch interessiert ist
+ $firstPrio_studienplan_id = '';
+ $firstPrio_studiengang_kz = '';
+ if ($typ->typ == 'b')
+ {
+ $ps->getActualInteressenten($prestudent_id, true, 'b');
+ foreach($ps->result as $row_prio)
+ {
+ if (isset($row_prio->studiengang_kz))
+ {
+ $firstPrio_studiengang_kz = $row_prio->studiengang_kz;
+ $firstPrio_studienplan_id = $row_prio->studienplan_id;
+ break;
+ }
+ }
+ }
+
+ // Sprachwahl zu STG mit höchster Prio ermitteln
+ $ablauf = new Ablauf();
+ $sprachwahl = false;
+
+ $ablauf->getAblaufGebiete($firstPrio_studiengang_kz, $firstPrio_studienplan_id);
+
+ if (empty($ablauf->result[0]))
+ {
+ $ablauf->getAblaufGebiete($firstPrio_studiengang_kz);
+ }
+
+ if (isset($ablauf->result[0])
+ && is_bool($ablauf->result[0]->sprachwahl))
+ {
+ $sprachwahl = $ablauf->result[0]->sprachwahl;
+ }
+
+ // If language can be switched, display language select menu on the top
+ if ($sprachwahl)
+ {
+ $_SESSION['sprache_auswahl'] = true;
+ ?>
+
+ ';
+ echo '
+
';
+ }
+ }
+ }
+ // * wenn Prestudent an einem Master-Studiengang interessiert ist, dann nur den einen STG anführen
+ else
+ {
+ // Letzten Status für des Prestudenten einholen
+ $ps_master = new Prestudent();
+ $ps_master->getLastStatus($prestudent_id);
+ echo '