From 254dad870045edb7d54fef9869a07d8841099fa9 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Wed, 13 Jan 2021 21:15:44 +0100 Subject: [PATCH 01/37] db changes for projektarbeitsbeurteilung - added lehre.tbl_projektarbeitsbeurteilung - added columns zugangstoken, zugangstoken_gueltigbis to lehre.tbl_projektbetreuer --- system/dbupdate_3.3.php | 110 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 109 insertions(+), 1 deletion(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 2336ebad4..b08a7581d 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4465,6 +4465,113 @@ if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE } } +// SEQUENCE tbl_projektarbeitsbeurteilung_id_se +if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'tbl_projektarbeitsbeurteilung_id_seq'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = ' + CREATE SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq + START WITH 1 + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + '; + if(!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; + else + echo '
Created sequence: lehre.tbl_projektarbeitsbeurteilung_id_seq'; + + // GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO vilesci; + $qry = 'GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO vilesci;'; + if (!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; + else + echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung_id_seq'; + + // GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO fhcomplete; + $qry = 'GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO fhcomplete;'; + if (!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; + else + echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung_id_seq'; + } +} + +// TABLE lehre.tbl_projektarbeitsbeurteilung +if (!@$db->db_query("SELECT 0 FROM lehre.tbl_projektarbeitsbeurteilung WHERE 0 = 1")) +{ + $qry = ' + CREATE TABLE lehre.tbl_projektarbeitsbeurteilung ( + projektarbeitsbeurteilung_id integer NOT NULL DEFAULT nextval(\'lehre.tbl_projektarbeitsbeurteilung_id_seq\'::regclass), + projektarbeit_id integer NOT NULL, + projektbetreuer_person_id integer NOT NULL, + betreuerart_kurzbz varchar(16) NOT NULL, + bewertung jsonb NOT NULL, + abgeschicktamum timestamp, + abgeschicktvon varchar(32), + insertamum timestamp default now(), + insertvon varchar(32), + updateamum timestamp + ); + + ALTER TABLE lehre.tbl_projektarbeitsbeurteilung ADD CONSTRAINT pk_projektarbeitsbeurteilung PRIMARY KEY (projektarbeitsbeurteilung_id); + ALTER TABLE lehre.tbl_projektarbeitsbeurteilung ADD CONSTRAINT fk_projektarbeitsbeurteilung_projektarbeit_id FOREIGN KEY (projektarbeit_id, projektbetreuer_person_id, betreuerart_kurzbz) REFERENCES lehre.tbl_projektbetreuer (projektarbeit_id, person_id, betreuerart_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; + '; + + if (!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; + else + echo '
Created table lehre.tbl_projektarbeitsbeurteilung'; + + + // GRANT SELECT ON TABLE lehre.tbl_projektarbeitsbeurteilung TO web; + $qry = 'GRANT SELECT ON TABLE lehre.tbl_projektarbeitsbeurteilung TO web;'; + if (!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; + else + echo '
Granted privileges to web on lehre.tbl_projektarbeitsbeurteilung'; + + // GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE lehre.tbl_projektarbeitsbeurteilung TO vilesci; + $qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE lehre.tbl_projektarbeitsbeurteilung TO vilesci;'; + if (!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; + else + echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung'; + +// COMMENT ON TABLE lehre.tbl_projektarbeitsbeurteilung + $qry = 'COMMENT ON TABLE lehre.tbl_projektarbeitsbeurteilung IS \'Table to manage project work asessments\';'; + if (!$db->db_query($qry)) + echo 'Adding comment to lehre.tbl_projektarbeitsbeurteilung: ' . $db->db_last_error() . '
'; + else + echo '
Added comment to lehre.tbl_projektarbeitsbeurteilung'; +} + +// 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';"; + + 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'; +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -4593,7 +4700,8 @@ $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_projektarbeitsbeurteilung" => array("projektarbeitsbeurteilung_id","projektarbeit_id","projektbetreuer_person_id","betreuerart_kurzbz","bewertung","abgeschicktamum","abgeschicktvon","insertamum","insertvon","updateamum"), + "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 98deb3d2a0fd9d86fabb5fedaaa5af73ba669c48 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 14 Jan 2021 10:32:42 +0100 Subject: [PATCH 02/37] moved creation of tbl_projektarbeitsbeurteilung to FHC_Core_Abschlusspruefungsbeurteilung extension --- system/dbupdate_3.3.php | 83 ----------------------------------------- 1 file changed, 83 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index b08a7581d..3adf241ff 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4465,89 +4465,6 @@ if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE } } -// SEQUENCE tbl_projektarbeitsbeurteilung_id_se -if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'tbl_projektarbeitsbeurteilung_id_seq'")) -{ - if ($db->db_num_rows($result) == 0) - { - $qry = ' - CREATE SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq - START WITH 1 - INCREMENT BY 1 - NO MAXVALUE - NO MINVALUE - CACHE 1; - '; - if(!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; - else - echo '
Created sequence: lehre.tbl_projektarbeitsbeurteilung_id_seq'; - - // GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO vilesci; - $qry = 'GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO vilesci;'; - if (!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; - else - echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung_id_seq'; - - // GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO fhcomplete; - $qry = 'GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO fhcomplete;'; - if (!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; - else - echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung_id_seq'; - } -} - -// TABLE lehre.tbl_projektarbeitsbeurteilung -if (!@$db->db_query("SELECT 0 FROM lehre.tbl_projektarbeitsbeurteilung WHERE 0 = 1")) -{ - $qry = ' - CREATE TABLE lehre.tbl_projektarbeitsbeurteilung ( - projektarbeitsbeurteilung_id integer NOT NULL DEFAULT nextval(\'lehre.tbl_projektarbeitsbeurteilung_id_seq\'::regclass), - projektarbeit_id integer NOT NULL, - projektbetreuer_person_id integer NOT NULL, - betreuerart_kurzbz varchar(16) NOT NULL, - bewertung jsonb NOT NULL, - abgeschicktamum timestamp, - abgeschicktvon varchar(32), - insertamum timestamp default now(), - insertvon varchar(32), - updateamum timestamp - ); - - ALTER TABLE lehre.tbl_projektarbeitsbeurteilung ADD CONSTRAINT pk_projektarbeitsbeurteilung PRIMARY KEY (projektarbeitsbeurteilung_id); - ALTER TABLE lehre.tbl_projektarbeitsbeurteilung ADD CONSTRAINT fk_projektarbeitsbeurteilung_projektarbeit_id FOREIGN KEY (projektarbeit_id, projektbetreuer_person_id, betreuerart_kurzbz) REFERENCES lehre.tbl_projektbetreuer (projektarbeit_id, person_id, betreuerart_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; - '; - - if (!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; - else - echo '
Created table lehre.tbl_projektarbeitsbeurteilung'; - - - // GRANT SELECT ON TABLE lehre.tbl_projektarbeitsbeurteilung TO web; - $qry = 'GRANT SELECT ON TABLE lehre.tbl_projektarbeitsbeurteilung TO web;'; - if (!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; - else - echo '
Granted privileges to web on lehre.tbl_projektarbeitsbeurteilung'; - - // GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE lehre.tbl_projektarbeitsbeurteilung TO vilesci; - $qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE lehre.tbl_projektarbeitsbeurteilung TO vilesci;'; - if (!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; - else - echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung'; - -// COMMENT ON TABLE lehre.tbl_projektarbeitsbeurteilung - $qry = 'COMMENT ON TABLE lehre.tbl_projektarbeitsbeurteilung IS \'Table to manage project work asessments\';'; - if (!$db->db_query($qry)) - echo 'Adding comment to lehre.tbl_projektarbeitsbeurteilung: ' . $db->db_last_error() . '
'; - else - echo '
Added comment to lehre.tbl_projektarbeitsbeurteilung'; -} - // Add column zugangstoken to tbl_projektbetreuer if(!$result = @$db->db_query("SELECT zugangstoken FROM lehre.tbl_projektbetreuer LIMIT 1")) { From c3f24f30385a87c13417907c8d1cd862297bbc9e Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 28 Jan 2021 13:03:18 +0100 Subject: [PATCH 03/37] - Projektarbeitsbeurtielung: added app Projektarbeitsbeurteilung and phrases for Projektarbeitsformular --- system/dbupdate_3.3.php | 15 +- system/phrasesupdate.php | 1205 +++++++++++++++++++++++++++++++++++++- 2 files changed, 1218 insertions(+), 2 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 3adf241ff..59dba9f9d 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4489,6 +4489,20 @@ if(!$result = @$db->db_query("SELECT zugangstoken_gueltigbis FROM lehre.tbl_proj 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'; + } +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -4617,7 +4631,6 @@ $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_projektarbeitsbeurteilung" => array("projektarbeitsbeurteilung_id","projektarbeit_id","projektbetreuer_person_id","betreuerart_kurzbz","bewertung","abgeschicktamum","abgeschicktvon","insertamum","insertvon","updateamum"), "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"), diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 727a389e4..833ca1c73 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -7988,7 +7988,1210 @@ Any unusual occurrences 'insertvon' => 'system' ) ) - ) + ), + array( + 'app' => 'core', + 'category' => 'global', + 'phrase' => 'und', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'und', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'and', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + + //******************* Projektarbeitsbeurteilung - CORE + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'sehrGut', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Sehr Gut', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Excellent', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'gut', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Gut', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Good', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'befriedigend', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Befriedigend', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Satisfactory', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'genuegend', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Genügend', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Sufficient', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'nichtGenuegend', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Nicht genügend', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Insufficient', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'notenschluessel', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Notenschlüssel', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'criteria', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'ui', + 'phrase' => 'speichernAbsenden', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Speichern und Absenden', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Save and send', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + //******************* Projektarbeitsbeurteilung - specific + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'beurteilung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Beurteilung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Assessment', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'erstBegutachter', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Erst-Begutachter*in', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'First Assessor', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'plagiatscheckUnauffaellig', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Der Plagiatscheck ist unauffällig.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The plagiarism check reveals nothing of note.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'kriterien', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Kriterien', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Criteria', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'punkte', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Punkte', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Points', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'thema', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Thema', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Subject', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'themaText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Das Thema wurde in eine im Rahmen einer Masterarbeit bearbeitbare Form übergeführt (Entwicklung sinnvoller Forschungsfragen bzw. Aufgabenstellungen, etc.).', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The subject was handled in a suitable manner for a master thesis (well-structured, meaningful research questions or tasks, etc.)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'loesungsansatz', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Lösungsansatz', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Solution Approach', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'loesungsansatzText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Der Lösungsansatz ist dem Stand der Technik entsprechend argumentiert und zeigt ein adäquates Problemverständnis.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The approach to the solution is argued according to the state of the art and shows an adequate understanding of the problem.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'methode', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Methode', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Methods', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'methodeText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die methodische Vorgangsweise ist in Bezug auf die Ausrichtung der Arbeit (technisch-ingenieurwissenschaftlich, sozial-wirtschaftswissenschaftlich…) angemessen, gut begründet und wird korrekt umgesetzt.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The methodological approach is appropriate, well-founded and correctly implemented in relation to the orientation of the work (technical-engineering, socio-economic…).', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'ereignisseDiskussion', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ergebnisse und Diskussion', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Results & Discussion of the conclusion', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'ereignisseDiskussionText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Frage- bzw. Aufgabenstellungen wurden zielführend beantwortet; die Ergebnisse werden diskutiert.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The research questions or the tasks were answered in a manner appropriate with the objectives; the results are discussed.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'ereignisseDiskussionTextMaster', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Forschungsfrage(n) wurde(n) zielführend beantwortet; die Ergebnisse werden kritisch diskutiert und liefern einen Mehrwert für Forschung und/oder Berufspraxis.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The research question(s) was (were) answered in a manner appropriate with the objectives; the results are examined critically and provide added value for research and / or professional practice.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'eigenstaendigkeit', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Eigenständigkeit', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Independence', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'eigenstaendigkeitText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Arbeit wurde in selbständiger Arbeitsweise (z.B. eigenständige Lösung der Fragestellungen und aufgetretener Probleme) verfasst.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The thesis was written in an independent way (e.g. independent solutions to the questions and problems that occurred)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'struktur', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Struktur', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Structure', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'strukturText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Arbeit ist schlüssig aufgebaut und gut strukturiert.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The thesis is coherently arranged and well structured.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'stil', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Stil', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Style', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'stilText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Der Stil entspricht einer wissenschaftlichen Arbeit. Die Arbeit ist flüssig lesbar und weist eine klare, eindeutige und gendergerechte Sprache auf.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The style is suitable for a piece of scientific work. The thesis is easy to read and has a clear, unambiguous and gender-appropriate language.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'form', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Form', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Form', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'formText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Anforderungen an Gliederung, Verzeichnisse, Textsatz und Grafiken bzw. Tabellen sind nach den geltenden Richtlinien umgesetzt.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The requirements for structure, lists, typesetting and graphics or tables are implemented in accordance with the applicable guidelines.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'literatur', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Literatur', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Sources', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'literaturText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die verwendeten Quellen sind passend, aktuell und werden ausreichend variiert.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The sources used are appropriate, current and sufficiently varied.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zitierregeln', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Zitierregeln', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Citation Rules', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zitierregelnText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Zitierregeln werden korrekt angewendet und durchgehend umgesetzt.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The citation rules are correctly applied and implemented throughout.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'gesamtpunkte', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Gesamtpunkte', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Total points', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'gutachtenZweitBegutachtung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Das Gutachten des/der Zweit-BegutachterIn liegt vor und ist in die Beurteilung eingeflossen.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The second assessor’s assessment has been submitted and is part of the final grade.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'bitteBeurteilen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Bitte beurteilen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Please assess', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'begruendungText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Begründung (verpflichtend nur für die Note "Nicht Genügend")', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Reason (only required for the grade "insufficient")', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'unzureichendErfuellt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'unzureichend erfüllt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'inadequately met', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'genuegendErfuellt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'genügend erfüllt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'adequately met', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'gutErfuellt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'gut erfüllt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'well fulfilled', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'sehrGutErfuellt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'sehr gut erfüllt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'very well fulfilled', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'notenschluesselHinweis', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Liegt die Punkteanzahl bei den Kriterien "1 - 5" oder "6 - 10" in Summe unter 50%, ist die Masterarbeit insgesamt als negativ zu beurteilen.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'If, within any of the criteria, the points total is under 50%, the Master’s Thesis is deemed to have failed overall.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zweitBegutachter', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Zweit-Begutachter*in', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Second Assessor', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'kurzeSchriftlicheBeurteilung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Kurze schriftliche Beurteilung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Short written assessment', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'fragestellungRelevant', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die Fragestellung relevant und aktuell?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Is the question relevant and topical?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'inhaltMethode', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Inhalt und Methode', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Content and Methods', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'aufgabenstellungNachvollziehbar', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die Aufgabenstellung nachvollziehbar und gut argumentiert dargestellt?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Is the task presented comprehensibly and is it well argued?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'methodischeVorgangsweiseAngemessen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die methodische Vorgangsweise angemessen und korrekt angewendet?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Has the methodological approach been applied appropriately and correctly?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'mehrwertBerufspraxis', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Liefert das Ergebnis einen Mehrwert für die Berufspraxis?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Does the result provide added value for professional practice?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'eigenstaendigkeitErgebnis', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Eigenständigkeit beim Erreichen des Ergebnisses', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Independence in achieving the result', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'arbeitEigenstaendigVerfasst', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die Arbeit eigenständig verfasst worden?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Was the thesis written independently?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'arbeitGutStrukturiert', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die Arbeit gut strukturiert?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Is the thesis well structured?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'gliederungInhaltlichVerstaendlich', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die Gliederung inhaltlich verständlich und in Bezug auf das Thema schlüssig aufgebaut ("roter Faden")?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 's the structure understandable in terms of content and is it coherent in relation to the topic ("red thread")?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'nameStudierende', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Name des/der Studierenden', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Name of student', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'beurteiltVon', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Beurteilt von', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Assessed by', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'personenkennzeichen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Personenkennzeichen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Student number', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'beurteilungGespeichertGesendet', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Beurteilung gespeichert und gesendet', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Assessment saved and sent', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'beurteilungGespeichert', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Beurteilung gespeichert', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Assessment saved', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'beurteilungFehler', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Fehler beim Speichern der Beurteilung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Error when saving assessment', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), ); From 1f88bfae4078889beb5881373f61dbde72b99b0f Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 4 Feb 2021 11:21:40 +0100 Subject: [PATCH 04/37] - Projektbetreuer Model: added getBetreuerByToken method - phrasesupdate: added new Projektarbeitsbeurtielung phrases --- .../education/Projektbetreuer_model.php | 19 ++++ system/phrasesupdate.php | 101 ++++++++++++++++++ 2 files changed, 120 insertions(+) diff --git a/application/models/education/Projektbetreuer_model.php b/application/models/education/Projektbetreuer_model.php index 746e4c052..4da88e344 100644 --- a/application/models/education/Projektbetreuer_model.php +++ b/application/models/education/Projektbetreuer_model.php @@ -41,4 +41,23 @@ class Projektbetreuer_model extends DB_Model return error ('Incorrect parameter type'); } } + + /** + * Get Projektbetreuer data by authentification token + * @param $zugangstoken + * @return object + */ + public function getBetreuerByToken($zugangstoken) + { + $qry = ' + SELECT tbl_projektbetreuer.person_id, tbl_projektbetreuer.projektarbeit_id, student_uid + FROM lehre.tbl_projektbetreuer + JOIN lehre.tbl_projektarbeit USING (projektarbeit_id) + WHERE zugangstoken = ? AND zugangstoken_gueltigbis >= NOW() + ORDER BY tbl_projektbetreuer.insertamum DESC, projektarbeit_id DESC + LIMIT 1 + '; + + return $this->execQuery($qry, array($zugangstoken)); + } } diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 833ca1c73..7dff6a675 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -8151,6 +8151,46 @@ Any unusual occurrences ) ) ), + array( + 'app' => 'core', + 'category' => 'ui', + 'phrase' => 'fehlt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'fehlt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'missing', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'ui', + 'phrase' => 'ungueltig', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'ungültig', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'invalid', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), //******************* Projektarbeitsbeurteilung - specific array( 'app' => 'projektarbeitsbeurteilung', @@ -8172,6 +8212,26 @@ Any unusual occurrences ) ) ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'projektarbeitsbeurteilung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Projektarbeitsbeurteilung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Projekt Work Assessment', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'projektarbeitsbeurteilung', 'category' => 'projektarbeitsbeurteilung', @@ -9192,6 +9252,47 @@ Any unusual occurrences ) ) ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'ungueltigerToken', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ungültiger Token', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Invalid Token', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zurProjektarbeitsUebersicht', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Zur Projektarbeitsübersicht (CIS login)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Projekt work overview (CIS login)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + ); From fd79551f0081c669d05b080434ccb094d4c96d02 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 4 Feb 2021 20:37:05 +0100 Subject: [PATCH 05/37] - Pruefungsprotokoll bugfix: replaced bitwise and with logical and --- application/controllers/lehre/Pruefungsprotokoll.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/controllers/lehre/Pruefungsprotokoll.php b/application/controllers/lehre/Pruefungsprotokoll.php index 467a7dc71..21f50acca 100644 --- a/application/controllers/lehre/Pruefungsprotokoll.php +++ b/application/controllers/lehre/Pruefungsprotokoll.php @@ -220,7 +220,7 @@ class Pruefungsprotokoll extends Auth_Controller $nullfields = array('uhrzeit', 'endezeit', 'abschlussbeurteilung_kurzbz', 'protokoll'); foreach ($data as $idx => $item) { - if (in_array($idx, $nullfields) & $item === '') + if (in_array($idx, $nullfields) && $item === '') $data[$idx] = null; } From 20413b1b03275a56b840ee8d5f13a12db74fce4a Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 18 Feb 2021 01:53:57 +0100 Subject: [PATCH 06/37] abgabetool: replaced link in CIS to redirect to new Beurteilungsformular --- cis/private/lehre/abgabe_lektor_details.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cis/private/lehre/abgabe_lektor_details.php b/cis/private/lehre/abgabe_lektor_details.php index 7022ead1f..c3cfbfed5 100644 --- a/cis/private/lehre/abgabe_lektor_details.php +++ b/cis/private/lehre/abgabe_lektor_details.php @@ -358,7 +358,7 @@ while ($result_nam && $row_nam=$db->db_fetch_object($result_nam)) } $htmlstr .= "\n"; $htmlstr .= ""; -$htmlstr .= ""; From 9677a5a4fdb2d0720e9578f77c29d67e4ded2a8c Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Mon, 1 Mar 2021 09:33:14 +0100 Subject: [PATCH 07/37] - BenutzerModel: added comment for getFromPersonId method - UPDATE permission for web for tbl_projektbetreuer added - added phrase for Zweitbegutachter - link --- application/models/person/Benutzer_model.php | 5 +++++ system/dbupdate_3.3.php | 14 +++++++++++++ system/phrasesupdate.php | 21 +++++++++++++++++++- 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/application/models/person/Benutzer_model.php b/application/models/person/Benutzer_model.php index c1e76ce38..eff1329a6 100644 --- a/application/models/person/Benutzer_model.php +++ b/application/models/person/Benutzer_model.php @@ -13,6 +13,11 @@ class Benutzer_model extends DB_Model $this->hasSequence = false; } + /** + * Gets active Benutzer from person_id + * @param $person_id + * @return object + */ public function getFromPersonId($person_id) { return $this->loadWhere(array('person_id' => $person_id, 'aktiv' => true)); diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 59dba9f9d..55a00500b 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4503,6 +4503,20 @@ if($result = $db->db_query("SELECT 1 FROM system.tbl_app WHERE app='projektarbei } } +// 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'; + } +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 7dff6a675..6e4ed26a6 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -9292,7 +9292,26 @@ Any unusual occurrences ) ) ), - + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zurZweitbegutachterBewertung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Zur Bewertung des Zweitbegutachters', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'To assessment of second assessor', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ) ); From edf657fdb96735bda2ccabfac1cf8984f79158e8 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Wed, 3 Mar 2021 00:00:51 +0100 Subject: [PATCH 08/37] abgabe_student_details.php: Mail with link (and possibly token for second assessor) to project assessment is sent with final upload to first and second assessor. --- cis/private/lehre/abgabe_student_details.php | 138 ++++++++++++++++++- 1 file changed, 136 insertions(+), 2 deletions(-) diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index e12bb1fb8..5506ddc74 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -397,7 +397,7 @@ if($command=="update" && $error!=true) echo $p->t('global/dateiNichtErfolgreichHochgeladen'); } } - //E-Mail an 1.Begutachter + //E-Mail an 1.Begutachter und 2.Begutachter if($bid!='' && $bid!=NULL) { $qry_betr="SELECT distinct trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as first, @@ -424,13 +424,48 @@ if($command=="update" && $error!=true) { $row_std=$db->db_fetch_object($result_std); + $mail_anrede = "Sehr geehrte".($row_betr->anrede=="Herr"?"r":"")." ".$row_betr->anrede." ".$row_betr->first."!\n\n"; + $mail_abgabetext = ($row_std->anrede)." ".trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost)." hat eine Abgabe vorgenommen.\n\n"; + $mail_zurbeurteilung = "Zur Beurteilung der Arbeit:\n"; + $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung"; + $mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$user."\n\n"; + $mail_abschluss = "--------------------------------------------------------------------------\n"; + $mail_abschluss .= "Dies ist ein vom Bachelor-/Masterarbeitsabgabesystem generiertes Info-Mail\nCis->Mein CIS->Projektarbeiten->Bachelor- und Masterarbeitsabgabe\n"; + $mail_abschluss .= "--------------------------------------------------------------------------"; + + $mailtext_erstbetr = $mail_anrede.$mail_abgabetext.$mail_zurbeurteilung.$mail_fulllink.$mail_abschluss; + + // send Mail to 1. Begutachter $mail = new mail($row_betr->mitarbeiter_uid."@".DOMAIN, "no-reply@".DOMAIN, "Bachelor-/Masterarbeitsbetreuung", - "Sehr geehrte".($row_betr->anrede=="Herr"?"r":"")." ".$row_betr->anrede." ".$row_betr->first."!\n\n".($row_std->anrede)." ".trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost)." hat eine Abgabe vorgenommen.\n\n--------------------------------------------------------------------------\nDies ist ein vom Bachelor-/Masterarbeitsabgabesystem generiertes Info-Mail\nCis->Mein CIS->Projektarbeiten->Bachelor- und Masterarbeitsabgabe\n--------------------------------------------------------------------------"); + $mailtext_erstbetr); $mail->setReplyTo($user."@".DOMAIN); if(!$mail->send()) { echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; } + + // send Mail to 2. Begutachter + $zweitbetr = getZweitbegutachterWithToken($projektarbeit_id, $bid, $user); + + if ($zweitbetr) + { + $intern = isset($zweitbetr->uid); + $zweitbetrmail = $intern ? $zweitbetr->uid."@".DOMAIN : $zweitbetr->kontakt; + + $mail_link = $intern ? $mail_fulllink : $mail_baselink."\n\n"; + $mail_anrede = "Sehr geehrte".($zweitbetr->anrede=="Herr"?"r":"")." ".$zweitbetr->anrede." ".$zweitbetr->first."!\n\n"; + $mail_token = isset($zweitbetr->zugangstoken) && !$intern ? "Zugangstoken: ".$zweitbetr->zugangstoken."\n\n" : ""; + + $mailtext_zweitbetr = $mail_anrede.$mail_abgabetext.$mail_zurbeurteilung.$mail_link.$mail_token.$mail_abschluss; + + $mail = new mail($zweitbetrmail, "no-reply@".DOMAIN, "Masterarbeitsbetreuung", + $mailtext_zweitbetr); + $mail->setReplyTo($user."@".DOMAIN); + if(!$mail->send()) + { + echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; + } + } } } else @@ -605,4 +640,103 @@ function isAbgabeOutOfDate($paabgabe_id) } return false; } + +/** + * Holt Zweitbegutachter einer Projektarbeit. + * Wenn Zweitbegutachter extern ist (kein Benutzeraccount) und noch keinen Token hat, + * wird der Token erstellt. + * @param $projektarbeit_id int + * @param $bid int person_id des Erstbegutachters + * @param $student_uid string uid des Studenten der Arbeit abgibt + * @return object + */ +function getZweitbegutachterWithToken($projektarbeit_id, $bid, $student_uid) +{ + global $db, $p; + + $qry_betr="SELECT betr.person_id, anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid, kontakt, + trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as first + FROM lehre.tbl_projektbetreuer betr + JOIN lehre.tbl_projektarbeit parb ON betr.projektarbeit_id = parb.projektarbeit_id + JOIN public.tbl_person pers ON betr.person_id = pers.person_id + JOIN public.tbl_kontakt ON pers.person_id = tbl_kontakt.person_id + LEFT JOIN public.tbl_benutzer ON pers.person_id = tbl_benutzer.person_id + WHERE betr.betreuerart_kurzbz = 'Zweitbegutachter' + AND betr.projektarbeit_id = ".$db->db_add_param($projektarbeit_id, FHC_INTEGER)." + AND parb.student_uid = ".$db->db_add_param($student_uid)." + AND EXISTS ( + SELECT 1 FROM lehre.tbl_projektbetreuer + WHERE person_id = ".$db->db_add_param($bid, FHC_INTEGER)." + AND betreuerart_kurzbz = 'Erstbegutachter' + AND projektarbeit_id = betr.projektarbeit_id + ) + AND kontakttyp='email' AND zustellung AND (tbl_benutzer.aktiv OR tbl_benutzer.aktiv IS NULL) + ORDER BY betr.insertamum DESC + LIMIT 1"; + + if (!$betr=$db->db_query($qry_betr)) + { + echo "".$p->t('global/fehlerBeimLesenAusDatenbank')."
 "; + return null; + } + else + { + $row_betr = $db->db_fetch_object($betr); + + if ($row_betr) + { + // if externer Betreuer and no valid token, generate + if (!isset($row_betr->uid) && (!isset($row_betr->zugangstoken) || $row_betr->zugangstoken_gueltigbis < date('Y-m-d'))) + { + $tokenanzahl = 1; + + while ($tokenanzahl > 0) + { + //generate random string + $rand_token = openssl_random_pseudo_bytes(16); + //change binary to hexadecimal + $token = bin2hex($rand_token); + //token generated + + $qry_tokencheck = " + SELECT count(*) AS anzahl + FROM lehre.tbl_projektbetreuer + WHERE zugangstoken = ".$db->db_add_param($token)." + "; + + if ($tokencount = $db->db_query($qry_tokencheck)) + { + $row_tokencount = $db->db_fetch_object($tokencount); + + $tokenanzahl = (int) $row_tokencount->anzahl; + } + else + { + echo "".$p->t('global/fehleraufgetreten')."
 "; + break; + } + } + + $qry_upd="UPDATE lehre.tbl_projektbetreuer SET + zugangstoken = ".$db->db_add_param($token).", + zugangstoken_gueltigbis = CURRENT_DATE + interval '1 year' + WHERE projektarbeit_id = ".$db->db_add_param($projektarbeit_id, FHC_INTEGER)." + AND person_id = ".$db->db_add_param($row_betr->person_id, FHC_INTEGER)." + AND betreuerart_kurzbz = 'Zweitbegutachter' + "; + + if($result=$db->db_query($qry_upd)) + { + $row_betr->zugangstoken = $token; + } + else + { + echo "".$p->t('global/fehleraufgetreten')."
 "; + } + } + + return $row_betr; + } + } +} ?> From 6bb9c77ca1c6745c972fa237303d5f4f2bfa2fed Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Wed, 3 Mar 2021 10:43:37 +0100 Subject: [PATCH 09/37] abgabe_student_details.php: Mail to Erst- and Zweitbegutachter is a sancho mail --- cis/private/lehre/abgabe_student_details.php | 41 ++++++++++++++++++-- locale/de-AT/abgabetool.php | 3 +- locale/en-US/abgabetool.php | 3 +- locale/it-IT/abgabetool.php | 3 +- 4 files changed, 44 insertions(+), 6 deletions(-) diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index 5506ddc74..fcd5e7206 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -34,6 +34,7 @@ require_once('../../../include/mail.class.php'); require_once('../../../include/benutzerberechtigung.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/projektarbeit.class.php'); +require_once('../../../include/sancho.inc.php'); $anzeigesprache = getSprache(); $p = new phrasen($anzeigesprache); @@ -424,7 +425,7 @@ if($command=="update" && $error!=true) { $row_std=$db->db_fetch_object($result_std); - $mail_anrede = "Sehr geehrte".($row_betr->anrede=="Herr"?"r":"")." ".$row_betr->anrede." ".$row_betr->first."!\n\n"; +/* $mail_anrede = "Sehr geehrte".($row_betr->anrede=="Herr"?"r":"")." ".$row_betr->anrede." ".$row_betr->first."!\n\n"; $mail_abgabetext = ($row_std->anrede)." ".trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost)." hat eine Abgabe vorgenommen.\n\n"; $mail_zurbeurteilung = "Zur Beurteilung der Arbeit:\n"; $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung"; @@ -440,6 +441,24 @@ if($command=="update" && $error!=true) $mailtext_erstbetr); $mail->setReplyTo($user."@".DOMAIN); if(!$mail->send()) + { + echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; + }*/ + + $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung"; + $mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$user; + $maildata = array(); + $maildata['geehrt'] = "geehrte".($row_betr->anrede=="Herr"?"r":""); + $maildata['anrede'] = $row_betr->anrede; + $maildata['betreuer_voller_name'] = $row_betr->first; + $maildata['student_anrede'] = $row_std->anrede; + $maildata['student_voller_name'] = trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost); + $maildata['link'] = $mail_fulllink; + $maildata['token'] = ""; + + $mailres = sendSanchoMail('ParbeitsbeurteilungEndupload', $maildata, $row_betr->mitarbeiter_uid."@".DOMAIN, "Bachelor-/Masterarbeitsbetreuung"); + + if(!$mailres) { echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; } @@ -452,7 +471,7 @@ if($command=="update" && $error!=true) $intern = isset($zweitbetr->uid); $zweitbetrmail = $intern ? $zweitbetr->uid."@".DOMAIN : $zweitbetr->kontakt; - $mail_link = $intern ? $mail_fulllink : $mail_baselink."\n\n"; + /*$mail_link = $intern ? $mail_fulllink : $mail_baselink."\n\n"; $mail_anrede = "Sehr geehrte".($zweitbetr->anrede=="Herr"?"r":"")." ".$zweitbetr->anrede." ".$zweitbetr->first."!\n\n"; $mail_token = isset($zweitbetr->zugangstoken) && !$intern ? "Zugangstoken: ".$zweitbetr->zugangstoken."\n\n" : ""; @@ -464,6 +483,22 @@ if($command=="update" && $error!=true) if(!$mail->send()) { echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; + }*/ + + $zweitbetmaildata = array(); + $zweitbetmaildata['geehrt'] = "geehrte".($zweitbetr->anrede=="Herr"?"r":""); + $zweitbetmaildata['anrede'] = $zweitbetr->anrede; + $zweitbetmaildata['betreuer_voller_name'] = $zweitbetr->first; + $zweitbetmaildata['student_anrede'] = $maildata['student_anrede']; + $zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name']; + $zweitbetmaildata['link'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; + $zweitbetmaildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: ".$zweitbetr->zugangstoken."

" : ""; + + $mailres = sendSanchoMail('ParbeitsbeurteilungEndupload', $zweitbetmaildata, $zweitbetrmail, "Masterarbeitsbetreuung"); + + if(!$mailres) + { + echo "".$p->t('abgabetool/fehlerMailZweitBegutachter')."
 "; } } } @@ -654,7 +689,7 @@ function getZweitbegutachterWithToken($projektarbeit_id, $bid, $student_uid) { global $db, $p; - $qry_betr="SELECT betr.person_id, anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid, kontakt, + $qry_betr="SELECT betr.person_id, pers.anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid, kontakt, trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as first FROM lehre.tbl_projektbetreuer betr JOIN lehre.tbl_projektarbeit parb ON betr.projektarbeit_id = parb.projektarbeit_id diff --git a/locale/de-AT/abgabetool.php b/locale/de-AT/abgabetool.php index eb12cab75..a1b108ddf 100644 --- a/locale/de-AT/abgabetool.php +++ b/locale/de-AT/abgabetool.php @@ -61,7 +61,8 @@ $this->phrasen['abgabetool/fehlerTerminEintragen']='Die Termin konnte nicht eing $this->phrasen['abgabetool/fehlerTerminLoeschen']='Fehler beim Löschen des Termins!'; $this->phrasen['abgabetool/keineBerechtigungStudentenansicht']='Sie haben keine Berechtigung zum Anzeigen der Studentenansicht'; $this->phrasen['abgabetool/dateneingabeUnvollstaendig']='Die Dateneingabe ist unvollständig'; -$this->phrasen['abgabetool/fehlerMailBegutachter']='Fehler beim Versenden des Mails an den (Erst-)Begutachter!'; +$this->phrasen['abgabetool/fehlerMailBegutachter']='Fehler beim Versenden des Mails an den Erstbegutachter!'; +$this->phrasen['abgabetool/fehlerMailZweitBegutachter']='Fehler beim Versenden des Mails an den Zweitbegutachter!'; $this->phrasen['abgabetool/fehlerBetreuerNichtGefundenKeinMail']='Betreuer nicht gefunden. Kein Mail verschickt!'; $this->phrasen['abgabetool/keinPDF']='Upload ist keine pdf-Datei! Bitte wiederholen Sie den Fileupload.'; $this->phrasen['abgabetool/dateiZuGross']='Die Datei ist zu groß! Maximale Dateigröße 15 MB'; diff --git a/locale/en-US/abgabetool.php b/locale/en-US/abgabetool.php index bc4201125..119ea0642 100644 --- a/locale/en-US/abgabetool.php +++ b/locale/en-US/abgabetool.php @@ -60,7 +60,8 @@ $this->phrasen['abgabetool/fehlerTerminEintragen']='The deadline could not be en $this->phrasen['abgabetool/fehlerTerminLoeschen']='Error deleting the deadline!'; $this->phrasen['abgabetool/keineBerechtigungStudentenansicht']='You are not allowed to view this Page'; $this->phrasen['abgabetool/dateneingabeUnvollstaendig']='Incomplete Data input'; -$this->phrasen['abgabetool/fehlerMailBegutachter']='Error sending E-Mail to Assessor!'; +$this->phrasen['abgabetool/fehlerMailBegutachter']='Error sending E-Mail to first Assessor!'; +$this->phrasen['abgabetool/fehlerMailZweitBegutachter']='Error sending E-Mail to second Assessor!'; $this->phrasen['abgabetool/fehlerBetreuerNichtGefundenKeinMail']='Assessor not found. No E-Mail sent!'; $this->phrasen['abgabetool/keinPDF']='Upload-File ist not a PDF! Please retry the Fileupload.'; $this->phrasen['abgabetool/dateiZuGross']='The File is too big! Maximum File size: 15 MB'; diff --git a/locale/it-IT/abgabetool.php b/locale/it-IT/abgabetool.php index 7a515b417..25ce11e87 100644 --- a/locale/it-IT/abgabetool.php +++ b/locale/it-IT/abgabetool.php @@ -28,7 +28,8 @@ $this->phrasen['abgabetool/englischeSchlagwoerter']='parole chiave inglesi'; $this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='dichiarazione non accettata'; $this->phrasen['abgabetool/fehlerBetreuerNichtGefundenKeinMail']='Impossibile trovare il relatore. Nessuna email spedita'; $this->phrasen['abgabetool/fehlerMail']='errore di spedizione della email!'; -$this->phrasen['abgabetool/fehlerMailBegutachter']='Errore di trasmissione della mail al (primo) esaminatore'; +$this->phrasen['abgabetool/fehlerMailBegutachter']='Errore di trasmissione della mail al primo esaminatore'; +$this->phrasen['abgabetool/fehlerMailZweitBegutachter']='Errore di trasmissione della mail al secondo esaminatore'; $this->phrasen['abgabetool/fehlerMailStudent']='errore di spedizione della mai agli studenti!'; $this->phrasen['abgabetool/fehlerTerminEintragen']='scadenza non è stata registrata!'; $this->phrasen['abgabetool/fehlerTerminLoeschen']='Errore in sede di cancellazione della scadenza!'; From 5b546d25a8fdcb2ea66e840b651da7c31fe60143 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 4 Mar 2021 00:04:47 +0100 Subject: [PATCH 10/37] - abgabe_student_details.php: added reply to and other header/footer to sancho Endupload mails - sancho.inc.php: enabled reply-to and passing of footer image --- cis/private/lehre/abgabe_student_details.php | 19 +++++++++++++++++-- include/sancho.inc.php | 16 +++++++++++----- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index fcd5e7206..206a38364 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -456,7 +456,14 @@ if($command=="update" && $error!=true) $maildata['link'] = $mail_fulllink; $maildata['token'] = ""; - $mailres = sendSanchoMail('ParbeitsbeurteilungEndupload', $maildata, $row_betr->mitarbeiter_uid."@".DOMAIN, "Bachelor-/Masterarbeitsbetreuung"); + $mailres = sendSanchoMail( + 'ParbeitsbeurteilungEndupload', + $maildata, + $row_betr->mitarbeiter_uid."@".DOMAIN, + "Bachelor-/Masterarbeitsbetreuung", + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg', + $user."@".DOMAIN); if(!$mailres) { @@ -494,7 +501,15 @@ if($command=="update" && $error!=true) $zweitbetmaildata['link'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; $zweitbetmaildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: ".$zweitbetr->zugangstoken."

" : ""; - $mailres = sendSanchoMail('ParbeitsbeurteilungEndupload', $zweitbetmaildata, $zweitbetrmail, "Masterarbeitsbetreuung"); + $mailres = sendSanchoMail( + 'ParbeitsbeurteilungEndupload', + $zweitbetmaildata, + $zweitbetrmail, + "Masterarbeitsbetreuung", + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg', + $user."@".DOMAIN + ); if(!$mailres) { diff --git a/include/sancho.inc.php b/include/sancho.inc.php index a57bc8428..b52a7fb28 100644 --- a/include/sancho.inc.php +++ b/include/sancho.inc.php @@ -23,6 +23,7 @@ require_once(dirname(__FILE__).'/mail.class.php'); require_once(dirname(__FILE__).'/vorlage.class.php'); const DEFAULT_SANCHO_HEADER_IMG = 'sancho_header_DEFAULT.jpg'; +const DEFAULT_SANCHO_FOOTER_IMG = 'sancho_footer_DEFAULT.jpg'; /** * Send single Mail with Sancho Design and Layout. @@ -31,14 +32,15 @@ const DEFAULT_SANCHO_HEADER_IMG = 'sancho_header_DEFAULT.jpg'; * to be replaced in the content template. * @param string $to Email-adress. * @param string $subject Subject of mail. - * @param string $headerImg Filename of the specific Sancho header image. - * @return boolean True, if succeeded. + * @param string $headerImg Filename of the specific Sancho header image. + * @param string $replyTo default Email-adress for reply. + * @return boolean True, if succeeded. */ -function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerImg = DEFAULT_SANCHO_HEADER_IMG) +function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerImg = DEFAULT_SANCHO_HEADER_IMG, $footerImg = DEFAULT_SANCHO_FOOTER_IMG, $replyTo = '') { $from = 'sancho@'. DOMAIN; $sanchoHeader_img = dirname(__FILE__). '/../skin/images/sancho/'. $headerImg; - $sanchoFooter_img = dirname(__FILE__). '/../skin/images/sancho/sancho_footer.jpg'; + $sanchoFooter_img = dirname(__FILE__). '/../skin/images/sancho/'. $footerImg; // Set unique content id for embedding header and footer image $cid_header = uniqid(); @@ -63,7 +65,11 @@ function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerIm // * embed the images $mail->addEmbeddedImage($sanchoHeader_img, 'image/jpg', '', $cid_header); $mail->addEmbeddedImage($sanchoFooter_img, 'image/jpg', '', $cid_footer); - + + // * Set reply-to + if (isset($replyTo) && $replyTo != '') + $mail->setReplyTo($replyTo); + // * embed the html content $mail->setHTMLContent($body); From 3db9b9abee1000b35ce604d48f94e49369711613 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Tue, 9 Mar 2021 14:13:55 +0100 Subject: [PATCH 11/37] added projektbeurteilung pdfexport --- content/pdfExport.php | 2 +- content/student/studentprojektarbeit.js.php | 5 +++++ content/student/studentprojektarbeitoverlay.xul.php | 2 +- include/organisationsform.class.php | 4 +++- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/content/pdfExport.php b/content/pdfExport.php index 29feeef6e..a85ebb345 100644 --- a/content/pdfExport.php +++ b/content/pdfExport.php @@ -252,7 +252,7 @@ else array('uid', 'stg_kz', 'person_id', 'id', 'prestudent_id', 'buchungsnummern', 'ss', 'abschlusspruefung_id', 'typ', 'all', 'preoutgoing_id', 'lvid', 'projekt_kurzbz', 'von', 'bis', 'stundevon', 'stundebis', 'sem', 'lehreinheit', 'mitarbeiter_uid', 'studienordnung_id', 'fixangestellt', 'standort', - 'abrechnungsmonat', 'form') + 'abrechnungsmonat', 'form', 'projektarbeit_id', 'betreuerart_kurzbz') ) ) { diff --git a/content/student/studentprojektarbeit.js.php b/content/student/studentprojektarbeit.js.php index ab284808e..4216f6a30 100644 --- a/content/student/studentprojektarbeit.js.php +++ b/content/student/studentprojektarbeit.js.php @@ -1122,6 +1122,11 @@ function StudentProjektbetreuerDetailDisableFields(val) document.getElementById('student-projektbetreuer-button-speichern').disabled=val; document.getElementById('student-projektbetreuer-button-neueperson').disabled=val; document.getElementById('student-projektbetreuer-button-kontaktdaten').disabled=val; + + if (document.getElementById('student-projektbetreuer-button-beurteilung')) + { + document.getElementById('student-projektbetreuer-button-beurteilung').disabled=val; + } } // **** diff --git a/content/student/studentprojektarbeitoverlay.xul.php b/content/student/studentprojektarbeitoverlay.xul.php index fe4b8b2b9..3171ef10e 100644 --- a/content/student/studentprojektarbeitoverlay.xul.php +++ b/content/student/studentprojektarbeitoverlay.xul.php @@ -529,7 +529,7 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN') - +
".$p->t('abgabetool/student').": ".$db->convert_html_chars($studentenname)."
"; +$htmlstr .= "
"; $htmlstr .= "\n"; $htmlstr .= "\n"; $htmlstr .= "
\n"; $htmlstr .= ""; -$htmlstr .= ""; +if ($num_rows_sem >= 1) +{ + $htmlstr .= ""; + if($betreuerart!="Zweitbegutachter") { $htmlstr .= "\n"; //class='liste".($i%2)."' - $htmlstr .= " \n"; + + if (is_null($row->note) && $row->aktiv === 't') + $htmlstr .= " \n"; + elseif (!is_null($row->babgeschickt) || !is_null($row->zweitbetreuer_abgeschickt)) + { + $htmlstr .= ""; + } else + { + $htmlstr .= ""; + } + + $htmlstr .= " \n"; $htmlstr .= " \n"; $htmlstr .= " \n"; $htmlstr .= "\n"; $htmlstr .= "\n"; @@ -703,6 +716,8 @@ function sendZweitbegutachterMail($zweitbegutachter, $erstbegutachter_person_id, $intern = isset($zweitbetr->uid); $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung"; $mail_fulllink = "$mail_baselink?projektarbeit_id=".$zweitbegutachter->projektarbeit_id."&uid=".$student->uid; + $mail_link = $intern ? $mail_fulllink : $mail_baselink; + $maildata = array(); $maildata['geehrt'] = "geehrte".($zweitbegutachter->anrede=="Herr"?"r":""); $maildata['anrede'] = $zweitbegutachter->anrede; @@ -710,7 +725,7 @@ function sendZweitbegutachterMail($zweitbegutachter, $erstbegutachter_person_id, $maildata['student_anrede'] = $student->anrede; $maildata['student_voller_name'] = trim($student->titelpre." ".$student->vorname." ".$student->nachname." ".$student->titelpost); $maildata['parbeituebersichtlink'] = $intern ? "

Zur Projektarbeitsübersicht

" : ""; - $maildata['bewertunglink'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; + $maildata['bewertunglink'] = "

Zur Beurteilung der Arbeit

"; $maildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: ".$zweitbetr->zugangstoken."

" : ""; return sendSanchoMail( diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index 6e8433bb2..293da2fa0 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -326,7 +326,6 @@ if($command=="update" && $error!=true) { if($row_zd=@$db->db_fetch_object($result_zd)) { - $htmlstr = "
".$p->t('abgabetool/betreuer').": ".$db->convert_html_chars($betreuer)."
".$p->t('abgabetool/titel').": ".$db->convert_html_chars($titel)."

\n"; $htmlstr .= "
".$p->t('abgabetool/student').": ".$db->convert_html_chars($studentenname)."
"; -$htmlstr .= "\n"; -$htmlstr .= "\n"; -$htmlstr .= "
"; + $htmlstr .= "
"; + $htmlstr .= "\n"; + $htmlstr .= "\n"; + $htmlstr .= "
"; +} +else +{ + $htmlstr .= "
"; + $htmlstr .= "".$p->t('abgabetool/aeltereParbeitBenoten').""; +} +$htmlstr .= "
"; diff --git a/locale/de-AT/abgabetool.php b/locale/de-AT/abgabetool.php index a1b108ddf..1b40fa187 100644 --- a/locale/de-AT/abgabetool.php +++ b/locale/de-AT/abgabetool.php @@ -1,5 +1,6 @@ phrasen['abgabetool/abgabetool']='Abgabetool'; +$this->phrasen['abgabetool/aeltereParbeitBenoten']='Projektarbeit für älteres Semester, bitte Word-Formular zur Benotung verwenden!'; $this->phrasen['abgabetool/typ']='Typ'; $this->phrasen['abgabetool/titel']='Titel'; $this->phrasen['abgabetool/betreuerart']='Betreuerart'; diff --git a/locale/en-US/abgabetool.php b/locale/en-US/abgabetool.php index 119ea0642..55a30d049 100644 --- a/locale/en-US/abgabetool.php +++ b/locale/en-US/abgabetool.php @@ -1,5 +1,6 @@ phrasen['abgabetool/abgabetool']='Submission tool'; +$this->phrasen['abgabetool/aeltereParbeitBenoten']='Thesis handed in for older semester, please use word form for assessment!'; $this->phrasen['abgabetool/typ']='Type'; $this->phrasen['abgabetool/titel']='Title'; $this->phrasen['abgabetool/betreuerart']='Supervisor type'; diff --git a/locale/it-IT/abgabetool.php b/locale/it-IT/abgabetool.php index 25ce11e87..793ac204d 100644 --- a/locale/it-IT/abgabetool.php +++ b/locale/it-IT/abgabetool.php @@ -1,5 +1,6 @@ phrasen['abgabetool/abgabeLektorenbereich']='Consegna portale lettori'; +$this->phrasen['abgabetool/aeltereParbeitBenoten']='Thesis handed in for older semester, please use word form for assessment!'; $this->phrasen['abgabetool/abgabeStudentenbereich']='consegna portale studente'; $this->phrasen['abgabetool/abgabetermine']='scadenze consegna'; $this->phrasen['abgabetool/abgabetool']='Strumenti di consegna'; diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 6e4ed26a6..b308623be 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -8900,13 +8900,13 @@ Any unusual occurrences 'phrases' => array( array( 'sprache' => 'German', - 'text' => 'Liegt die Punkteanzahl bei den Kriterien "1 - 5" oder "6 - 10" in Summe unter 50%, ist die Masterarbeit insgesamt als negativ zu beurteilen.', + 'text' => 'Liegt die Punkteanzahl bei den Kriterien "1 - 5" oder "6 - 10" in Summe unter 50%%, ist die %s insgesamt als negativ zu beurteilen.', 'description' => '', 'insertvon' => 'system' ), array( 'sprache' => 'English', - 'text' => 'If, within any of the criteria, the points total is under 50%, the Master’s Thesis is deemed to have failed overall.', + 'text' => 'If, within any of the criteria, the points total is under 50%%, the %s is deemed to have failed overall.', 'description' => '', 'insertvon' => 'system' ) From 95c5a9c4757c667121e784944040cba387c43b61 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Mon, 15 Mar 2021 23:48:00 +0100 Subject: [PATCH 14/37] added UNIQUE constraing to zugangstoken column of lehre.tbl_projektbetreuer --- system/dbupdate_3.3.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 55a00500b..6b52c3aa1 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4468,8 +4468,9 @@ if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE // 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';"; + $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().'
'; From fbb7b45b690a6f81c739b24e7654180fc717ba9e Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Mon, 22 Mar 2021 04:55:46 +0100 Subject: [PATCH 15/37] - added zweitbegutachterFehltWarnung phrase --- system/phrasesupdate.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index b308623be..33c79cf80 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -9311,6 +9311,26 @@ Any unusual occurrences 'insertvon' => 'system' ) ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zweitbegutachterFehltWarnung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Beurteilung des Zweitbegutachters liegt noch nicht vor.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The assessment of the second assessor is not available yet.', + 'description' => '', + 'insertvon' => 'system' + ) + ) ) ); From 6ae8f000668801077ef077cf384d678d7979c8e2 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Tue, 23 Mar 2021 21:32:34 +0100 Subject: [PATCH 16/37] =?UTF-8?q?-=20Zweitbegutachter=20im=20Abgabetool=20?= =?UTF-8?q?angezeigt=20-=20Tokenneuversand=20f=C3=BCr=20zweitbegutachter?= =?UTF-8?q?=20m=C3=B6glich?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/lehre/abgabe_lektor_details.php | 141 +++++++++++++++++-- cis/private/lehre/abgabe_student_details.php | 121 +++------------- include/functions.inc.php | 53 +++++++ include/projektbetreuer.class.php | 126 +++++++++++++++++ locale/de-AT/abgabetool.php | 3 + locale/en-US/abgabetool.php | 3 + locale/it-IT/abgabetool.php | 3 + 7 files changed, 336 insertions(+), 114 deletions(-) diff --git a/cis/private/lehre/abgabe_lektor_details.php b/cis/private/lehre/abgabe_lektor_details.php index fa64f8683..d3721213f 100644 --- a/cis/private/lehre/abgabe_lektor_details.php +++ b/cis/private/lehre/abgabe_lektor_details.php @@ -35,6 +35,8 @@ require_once('../../../include/datum.class.php'); require_once('../../../include/mail.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/projektarbeit.class.php'); +require_once('../../../include/projektbetreuer.class.php'); +require_once('../../../include/sancho.inc.php'); if (!$db = new basis_db()) $db=false; @@ -116,6 +118,63 @@ if($projektarbeit_id==-1) if(!$projektarbeit_obj->load($projektarbeit_id)) die('Fehler beim Laden der Projektarbeit'); $titel = $projektarbeit_obj->titel; +$student_uid = $projektarbeit_obj->student_uid; + +// paarbeit sollte nur ab SS2021 online bewertet werden +$qry_sem="SELECT 1 + FROM lehre.tbl_projektarbeit + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) + WHERE projektarbeit_id=".$db->db_add_param($projektarbeit_id, FHC_INTEGER)." + AND tbl_studiensemester.start >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2021') + LIMIT 1"; +$result_sem=$db->db_query($qry_sem); +$num_rows_sem = $db->db_num_rows($result_sem); + +// Zweitbegutachter holen +if($betreuerart=="Erstbegutachter") +{ + $projektbetreuer = new projektbetreuer(); + $alleBegutachter = $projektbetreuer->getProjektbetreuer($projektarbeit_id); + + if ($alleBegutachter) + { + $alleBegutachterResults = $projektbetreuer->result; + + foreach ($alleBegutachterResults as $begutachter) + { + if ($begutachter->betreuerart_kurzbz == "Erstbegutachter") + { + $erstbetreuer_id = $begutachter->person_id; + $zweitbegutachter = $projektbetreuer->getZweitbegutachterWithToken($erstbetreuer_id, $projektarbeit_id, $student_uid); + break; + } + } + + if ($zweitbegutachter && $num_rows_sem >= 1 && isset($_GET['zweitbegutachtertoken'])) + { + $qry_std="SELECT * FROM campus.vw_benutzer where uid=".$db->db_add_param($uid); + if(!$result_std=$db->db_query($qry_std)) + { + echo "Student konnte nicht gefunden werden!
 "; + } + else + { + $row_std=@$db->db_fetch_object($result_std); + $mailres = sendZweitbegutachterMail($zweitbegutachter, $erstbetreuer_id, $row_std); + + if ($mailres) + { + echo "
".$p->t('abgabetool/zweitbegutachterMailGesendet', $zweitbegutachter->email)."
 "; + } + elseif(!$mailres) + { + echo "".$p->t('abgabetool/fehlerMailZweitBegutachter')."
 "; + } + } + } + } +} echo ' @@ -357,16 +416,6 @@ while ($result_nam && $row_nam=$db->db_fetch_object($result_nam)) $studentenname=$row_nam->studnam; } -$qry_sem="SELECT 1 - FROM lehre.tbl_projektarbeit - JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) - WHERE projektarbeit_id=".$db->db_add_param($projektarbeit_id, FHC_INTEGER)." - AND tbl_studiensemester.start >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2021') - LIMIT 1"; -$result_sem=$db->db_query($qry_sem); -$num_rows_sem = $db->db_num_rows($result_sem); - $htmlstr .= "\n"; $htmlstr .= ""; if ($num_rows_sem >= 1) @@ -387,7 +436,9 @@ $htmlstr .= ""; if($betreuerart!="Zweitbegutachter") { $htmlstr .= ""; + $htmlstr .= ""; + $htmlstr .= "\n"; + $htmlstr .= "\n"; } else { @@ -396,7 +447,26 @@ else $htmlstr .= ""; $htmlstr .= "\n"; $htmlstr .= "
".$p->t('abgabetool/student').": ".$db->convert_html_chars($studentenname).""; - $htmlstr .= "
            
Titel: ".$db->convert_html_chars($titel)."".$p->t('abgabetool/studentenansicht')."
\n"; -$htmlstr .= "
".$p->t('abgabetool/abgabetermine').":\n"; +$htmlstr .= ""; +$htmlstr .= "\n"; +if (isset($zweitbegutachter) && $zweitbegutachter && $num_rows_sem >= 1) // if there is a zweitbegutachter and paarbeit should be graded with online form +{ + $htmlstr .= "\n"; + $htmlstr .= "\n"; + $htmlstr .= "\n"; + $htmlstr .= "\n"; +} +$htmlstr .= "\n"; +$htmlstr .= "

".$p->t('abgabetool/abgabetermine').":
" . $p->t('abgabetool/zweitBegutachter') . ": " . $zweitbegutachter->voller_name . ""; + if (isset($zweitbegutachter->abgabedatum) && !isset($zweitbegutachter->uid)) + { + $htmlstr .= ""; + $htmlstr .= ""; + $htmlstr .= ""; + $htmlstr .= "  \n"; + $htmlstr .= ""; + } + $htmlstr .= "     
\n"; $htmlstr .= "\n"; $htmlstr .= "\n"; $htmlstr .= " @@ -565,4 +635,51 @@ $htmlstr .= "\n"; $htmlstr .= "
\n"; $htmlstr .= "\n"; echo $htmlstr; + +/** + * Mail zum Zweitbegutachter mit Info dass Projektarbeit zur Bewertung bereit ist, inklusive Zugangstoken wenn nötig. + * @param object $zweitbegutachter + * @param $int erstbegutachter_person_id + * @param object $student + * @return bool|projektbetreuer|void|null + */ +function sendZweitbegutachterMail($zweitbegutachter, $erstbegutachter_person_id, $student) +{ + // send Mail to 2. Begutachter + $projektbetreuer = new projektbetreuer(); + + $projektbetreuer->generateZweitbegutachterToken($zweitbegutachter->person_id, $zweitbegutachter->projektarbeit_id); + + if (!$projektbetreuer) + return $projektbetreuer; + + $zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($erstbegutachter_person_id, $zweitbegutachter->projektarbeit_id, $student->uid); + + if ($zweitbetr) + { + $intern = isset($zweitbetr->uid); + $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung"; + $mail_fulllink = "$mail_baselink?projektarbeit_id=".$zweitbegutachter->projektarbeit_id."&uid=".$student->uid; + $maildata = array(); + $maildata['geehrt'] = "geehrte".($zweitbegutachter->anrede=="Herr"?"r":""); + $maildata['anrede'] = $zweitbegutachter->anrede; + $maildata['betreuer_voller_name'] = $zweitbegutachter->voller_name; + $maildata['student_anrede'] = $student->anrede; + $maildata['student_voller_name'] = trim($student->titelpre." ".$student->vorname." ".$student->nachname." ".$student->titelpost); + $maildata['link'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; + $maildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: ".$zweitbetr->zugangstoken."

" : ""; + + return sendSanchoMail( + 'ParbeitsbeurteilungEndupload', + $maildata, + $zweitbetr->email, + "Masterarbeitsbetreuung", + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg' + ); + } + + return false; +} + ?> diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index 5141e495c..6198f9392 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -34,6 +34,7 @@ require_once('../../../include/mail.class.php'); require_once('../../../include/benutzerberechtigung.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/projektarbeit.class.php'); +require_once('../../../include/projektbetreuer.class.php'); require_once('../../../include/sancho.inc.php'); $anzeigesprache = getSprache(); @@ -445,6 +446,7 @@ if($command=="update" && $error!=true) echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; }*/ + // 1. Begutachter ohne Token $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung"; $mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$row_std->uid; $maildata = array(); @@ -470,11 +472,25 @@ if($command=="update" && $error!=true) echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; } - // send Mail to 2. Begutachter - $zweitbetr = getZweitbegutachterWithToken($projektarbeit_id, $bid, $row_std->uid); + // 2. Begutachter mit Token wenn extern + $projektbetreuer = new projektbetreuer(); + $zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($bid, $projektarbeit_id, $row_std->uid); if ($zweitbetr) { + if (!isset($zweitbetr->zugangstoken)) + { + $tokenGenRes = $projektbetreuer->generateZweitbegutachterToken($zweitbetr->person_id, $projektarbeit_id); + + if (!$tokenGenRes) + echo "" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "
 "; + + $zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($bid, $projektarbeit_id, $row_std->uid); + + if (!$zweitbetr) + echo "".$p->t('abgabetool/fehlerMailZweitBegutachter')."
 "; + } + $intern = isset($zweitbetr->uid); $zweitbetrmail = $intern ? $zweitbetr->uid."@".DOMAIN : $zweitbetr->kontakt; @@ -495,7 +511,7 @@ if($command=="update" && $error!=true) $zweitbetmaildata = array(); $zweitbetmaildata['geehrt'] = "geehrte".($zweitbetr->anrede=="Herr"?"r":""); $zweitbetmaildata['anrede'] = $zweitbetr->anrede; - $zweitbetmaildata['betreuer_voller_name'] = $zweitbetr->first; + $zweitbetmaildata['betreuer_voller_name'] = $zweitbetr->voller_name; $zweitbetmaildata['student_anrede'] = $maildata['student_anrede']; $zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name']; $zweitbetmaildata['link'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; @@ -690,103 +706,4 @@ function isAbgabeOutOfDate($paabgabe_id) } return false; } - -/** - * Holt Zweitbegutachter einer Projektarbeit. - * Wenn Zweitbegutachter extern ist (kein Benutzeraccount) und noch keinen Token hat, - * wird der Token erstellt. - * @param $projektarbeit_id int - * @param $bid int person_id des Erstbegutachters - * @param $student_uid string uid des Studenten der Arbeit abgibt - * @return object - */ -function getZweitbegutachterWithToken($projektarbeit_id, $bid, $student_uid) -{ - global $db, $p; - - $qry_betr="SELECT betr.person_id, pers.anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid, kontakt, - trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as first - FROM lehre.tbl_projektbetreuer betr - JOIN lehre.tbl_projektarbeit parb ON betr.projektarbeit_id = parb.projektarbeit_id - JOIN public.tbl_person pers ON betr.person_id = pers.person_id - JOIN public.tbl_kontakt ON pers.person_id = tbl_kontakt.person_id - LEFT JOIN public.tbl_benutzer ON pers.person_id = tbl_benutzer.person_id - WHERE betr.betreuerart_kurzbz = 'Zweitbegutachter' - AND betr.projektarbeit_id = ".$db->db_add_param($projektarbeit_id, FHC_INTEGER)." - AND parb.student_uid = ".$db->db_add_param($student_uid)." - AND EXISTS ( - SELECT 1 FROM lehre.tbl_projektbetreuer - WHERE person_id = ".$db->db_add_param($bid, FHC_INTEGER)." - AND betreuerart_kurzbz = 'Erstbegutachter' - AND projektarbeit_id = betr.projektarbeit_id - ) - AND kontakttyp='email' AND zustellung AND (tbl_benutzer.aktiv OR tbl_benutzer.aktiv IS NULL) - ORDER BY betr.insertamum DESC - LIMIT 1"; - - if (!$betr=$db->db_query($qry_betr)) - { - echo "".$p->t('global/fehlerBeimLesenAusDatenbank')."
 "; - return null; - } - else - { - $row_betr = $db->db_fetch_object($betr); - - if ($row_betr) - { - // if externer Betreuer and no valid token, generate - if (!isset($row_betr->uid) && (!isset($row_betr->zugangstoken) || $row_betr->zugangstoken_gueltigbis < date('Y-m-d'))) - { - $tokenanzahl = 1; - - while ($tokenanzahl > 0) - { - //generate random string - $rand_token = openssl_random_pseudo_bytes(16); - //change binary to hexadecimal - $token = bin2hex($rand_token); - //token generated - - $qry_tokencheck = " - SELECT count(*) AS anzahl - FROM lehre.tbl_projektbetreuer - WHERE zugangstoken = ".$db->db_add_param($token)." - "; - - if ($tokencount = $db->db_query($qry_tokencheck)) - { - $row_tokencount = $db->db_fetch_object($tokencount); - - $tokenanzahl = (int) $row_tokencount->anzahl; - } - else - { - echo "".$p->t('global/fehleraufgetreten')."
 "; - break; - } - } - - $qry_upd="UPDATE lehre.tbl_projektbetreuer SET - zugangstoken = ".$db->db_add_param($token).", - zugangstoken_gueltigbis = CURRENT_DATE + interval '1 year' - WHERE projektarbeit_id = ".$db->db_add_param($projektarbeit_id, FHC_INTEGER)." - AND person_id = ".$db->db_add_param($row_betr->person_id, FHC_INTEGER)." - AND betreuerart_kurzbz = 'Zweitbegutachter' - "; - - if($result=$db->db_query($qry_upd)) - { - $row_betr->zugangstoken = $token; - } - else - { - echo "".$p->t('global/fehleraufgetreten')."
 "; - } - } - - return $row_betr; - } - } -} ?> diff --git a/include/functions.inc.php b/include/functions.inc.php index 534f11f28..587860982 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -1121,4 +1121,57 @@ function setLeadingZero($number, $length = 2) return str_pad($number, $length, "0", STR_PAD_LEFT); } } + +/** + * Generates a new token for diffent use cases. Default token length is 64 + * - Reading messages + * - Forgotten password + * - etc + * Returns null on failure + */ +function generateUniqueToken($length = 64) +{ + $token = null; + $firstGeneratedToken = null; + + // For PHP 7 you can use random_bytes() + if (function_exists('random_bytes')) + { + try + { + $firstGeneratedToken = random_bytes($length); // try to generates cryptographically secure pseudo-random bytes... + } + catch (Exception $e) { $firstGeneratedToken = null; } // if fails $firstGeneratedToken is set to null + } + // For PHP >= 5.3 and < 7 and openssl is available + elseif (function_exists('openssl_random_pseudo_bytes')) + { + $firstGeneratedToken = openssl_random_pseudo_bytes($length, $strong); + // If the token generation ended with errors OR the generated token is NOT strong enough + if ($firstGeneratedToken == false || $strong == false) $firstGeneratedToken = null; // $firstGeneratedToken is set to null + } + + if ($firstGeneratedToken != null) // If everything was fine + { + // base64 is about 33% longer, so we need to truncate the result + $token = strtr(substr(base64_encode($firstGeneratedToken), 0, $length), '+/=', '-_,'); + } + + // Fallback to mt_rand if: + // php < 5.3 + // OR no openssl is available + // OR openssl_random_pseudo_bytes used an algorithm that is cryptographically NOT strong + // OR one of the previous methods failed + if ($token == null) + { + $token = ''; // set $token as an empty string + $characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/+'; + $charactersLength = strlen($characters) - 1; + + // Select some random characters + for ($i = 0; $i < $length; $i++) $token .= $characters[mt_rand(0, $charactersLength)]; + } + + return $token; +} ?> diff --git a/include/projektbetreuer.class.php b/include/projektbetreuer.class.php index e962b2d0a..ed8e3bae0 100644 --- a/include/projektbetreuer.class.php +++ b/include/projektbetreuer.class.php @@ -391,5 +391,131 @@ class projektbetreuer extends basis_db return false; } } + + /** + * Holt Zweitbegutachter einer Projektarbeit mit Mail. + * @param $erstbegutachter_person_id int person_id des Erstbegutachters + * @param $projektarbeit_id int + * @param $student_uid string uid des Studenten der Arbeit abgibt + * @return object | bool + */ + public function getZweitbegutachterWithToken($erstbegutachter_person_id, $projektarbeit_id, $student_uid) + { + $qry_betr="SELECT betr.person_id, betr.projektarbeit_id, pers.anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid, kontakt, + trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as voller_name, + CASE WHEN tbl_benutzer.uid IS NULL THEN kontakt ELSE tbl_benutzer.uid || '@".DOMAIN."' END AS email, abg.abgabedatum + FROM lehre.tbl_projektbetreuer betr + JOIN lehre.tbl_projektarbeit parb ON betr.projektarbeit_id = parb.projektarbeit_id + JOIN public.tbl_person pers ON betr.person_id = pers.person_id + JOIN public.tbl_kontakt ON pers.person_id = tbl_kontakt.person_id + LEFT JOIN public.tbl_benutzer ON pers.person_id = tbl_benutzer.person_id + LEFT JOIN campus.tbl_paabgabe abg ON betr.projektarbeit_id = abg.projektarbeit_id AND abg.paabgabetyp_kurzbz = 'end' + WHERE betr.betreuerart_kurzbz = 'Zweitbegutachter' + AND betr.projektarbeit_id = ".$this->db_add_param($projektarbeit_id, FHC_INTEGER)." + AND parb.student_uid = ".$this->db_add_param($student_uid)." + AND EXISTS ( + SELECT 1 FROM lehre.tbl_projektbetreuer + WHERE person_id = ".$this->db_add_param($erstbegutachter_person_id, FHC_INTEGER)." + AND betreuerart_kurzbz = 'Erstbegutachter' + AND projektarbeit_id = betr.projektarbeit_id + ) + AND kontakttyp='email' AND zustellung AND (tbl_benutzer.aktiv OR tbl_benutzer.aktiv IS NULL) + ORDER BY betr.insertamum DESC + LIMIT 1"; + + if ($betr=$this->db_query($qry_betr)) + { + $row_betr = $this->db_fetch_object($betr); + + if ($row_betr) + return $row_betr; + else + return false; + } + else + { + return false; + } + } + + /** + * Generiert Token für externen Zweitbetreuer wenn noch kein Token vorhanden ist. + * @param int $zweitbegutachter_person_id + * @param int $projektarbeit_id + * @return bool true wenn erfolgreich (generiert oder bereits vorhanden), false wenn fehlgeschlagen + */ + public function generateZweitbegutachterToken($zweitbegutachter_person_id, $projektarbeit_id) + { + // if externer Betreuer and no valid token, generate + $betreuerUidQry = "SELECT uid, zugangstoken, zugangstoken_gueltigbis, tbl_projektbetreuer.person_id + FROM lehre.tbl_projektbetreuer + JOIN public.tbl_person USING(person_id) + LEFT JOIN public.tbl_benutzer USING(person_id) + WHERE projektarbeit_id = ".$this->db_add_param($projektarbeit_id, FHC_INTEGER)." + AND tbl_projektbetreuer.person_id = ".$this->db_add_param($zweitbegutachter_person_id, FHC_INTEGER)." + AND betreuerart_kurzbz = 'Zweitbegutachter' + LIMIT 1"; + + if ($betreueruidres = $this->db_query($betreuerUidQry)) + { + $row_betr = $this->db_fetch_object($betreueruidres); + + if ($row_betr) + { + + if (!isset($row_betr->uid) + && (!isset($row_betr->zugangstoken) || $row_betr->zugangstoken_gueltigbis < date('Y-m-d'))) + { + $tokenanzahl = 1; + + while ($tokenanzahl > 0) + { + //generate random string + $token = generateUniqueToken(16); + + if (!$token) + return false; + + $qry_tokencheck = "SELECT count(*) AS anzahl + FROM lehre.tbl_projektbetreuer + WHERE zugangstoken = " . $this->db_add_param($token); + + if ($tokencount = $this->db_query($qry_tokencheck)) + { + $row_tokencount = $this->db_fetch_object($tokencount); + + $tokenanzahl = (int)$row_tokencount->anzahl; + } + else + { + return false; + } + } + + $qry_upd = "UPDATE lehre.tbl_projektbetreuer SET + zugangstoken = " . $this->db_add_param($token) . ", + zugangstoken_gueltigbis = CURRENT_DATE + interval '1 year' + WHERE projektarbeit_id = " . $this->db_add_param($projektarbeit_id, FHC_INTEGER) . " + AND person_id = " . $this->db_add_param($row_betr->person_id, FHC_INTEGER) . " + AND betreuerart_kurzbz = 'Zweitbegutachter'"; + + if ($this->db_query($qry_upd)) + { + return true; + } + else + { + return false; + } + } + else + return true; // not generated because intern or already exists + } + else + return false;// not found + } + else + return false; // query error + } } ?> diff --git a/locale/de-AT/abgabetool.php b/locale/de-AT/abgabetool.php index 1b40fa187..3b2bd750a 100644 --- a/locale/de-AT/abgabetool.php +++ b/locale/de-AT/abgabetool.php @@ -80,4 +80,7 @@ Sollten Sie trotzdem die `Eidesstattliche Erklärung´ samt Unterschrift hochlad $this->phrasen['abgabetool/gelesenUndAkzeptiert']='Gelesen und akzeptiert'; $this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Erklärung nicht akzeptiert'; $this->phrasen['abgabetool/downloadProjektarbeit']='Dokument herunterladen'; +$this->phrasen['abgabetool/zweitBegutachter']='Zweitbegutachter'; +$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Zugangstoken an Zweitbegutachter senden'; +$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail an Zweitbegutachter (%s) gesendet'; ?> diff --git a/locale/en-US/abgabetool.php b/locale/en-US/abgabetool.php index 55a30d049..6ee00d47c 100644 --- a/locale/en-US/abgabetool.php +++ b/locale/en-US/abgabetool.php @@ -80,4 +80,7 @@ Sollten Sie trotzdem die `Eidesstattliche Erklärung´ samt Unterschrift hochlad $this->phrasen['abgabetool/gelesenUndAkzeptiert']='Read and accepted'; $this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Declaration not accepted'; $this->phrasen['abgabetool/downloadProjektarbeit']='Download File'; +$this->phrasen['abgabetool/zweitBegutachter']='Second assessor'; +$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Send access token to second assessor'; +$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail sent to second assessor (%s)'; ?> diff --git a/locale/it-IT/abgabetool.php b/locale/it-IT/abgabetool.php index 793ac204d..70504ca04 100644 --- a/locale/it-IT/abgabetool.php +++ b/locale/it-IT/abgabetool.php @@ -70,4 +70,7 @@ $this->phrasen['abgabetool/ueberschrift']='tesi bachelor / master'; $this->phrasen['abgabetool/upload']='Upload'; $this->phrasen['abgabetool/variablerAbgabetermin']='scadenza consegna variabile'; $this->phrasen['abgabetool/zweitbetreuerBei']='secondo relatore presso'; +$this->phrasen['abgabetool/zweitBegutachter']='Second assessor'; +$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Send access token to second assessor'; +$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail sent to second assessor (%s)'; ?> From a68dfc1c6cbbc8dca6d0309e829ec2f93c2237d0 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Wed, 24 Mar 2021 22:49:34 +0100 Subject: [PATCH 17/37] - Projektarbeitsabgabe: added Link to Projektarbeitsuebersicht to Zweitbegutachtermail - updated abgabetool phrases --- cis/private/lehre/abgabe_lektor_details.php | 7 +- cis/private/lehre/abgabe_student_details.php | 6 +- locale/de-AT/abgabetool.php | 6 +- system/phrasesupdate.php | 88 +++++++++++++++++++- 4 files changed, 95 insertions(+), 12 deletions(-) diff --git a/cis/private/lehre/abgabe_lektor_details.php b/cis/private/lehre/abgabe_lektor_details.php index d3721213f..8f04bd71f 100644 --- a/cis/private/lehre/abgabe_lektor_details.php +++ b/cis/private/lehre/abgabe_lektor_details.php @@ -167,9 +167,9 @@ if($betreuerart=="Erstbegutachter") { echo "
".$p->t('abgabetool/zweitbegutachterMailGesendet', $zweitbegutachter->email)."
 "; } - elseif(!$mailres) + else { - echo "".$p->t('abgabetool/fehlerMailZweitBegutachter')."
 "; + echo "".$p->t('abgabetool/fehlerMailZweitBegutachter')." Mail: ".$zweitbegutachter->email."
 "; } } } @@ -666,7 +666,8 @@ function sendZweitbegutachterMail($zweitbegutachter, $erstbegutachter_person_id, $maildata['betreuer_voller_name'] = $zweitbegutachter->voller_name; $maildata['student_anrede'] = $student->anrede; $maildata['student_voller_name'] = trim($student->titelpre." ".$student->vorname." ".$student->nachname." ".$student->titelpost); - $maildata['link'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; + $maildata['parbeituebersichtlink'] = $intern ? "

Zur Projektarbeitsübersicht

" : ""; + $maildata['bewertunglink'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; $maildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: ".$zweitbetr->zugangstoken."

" : ""; return sendSanchoMail( diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index 6198f9392..9bfb4abb6 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -455,7 +455,8 @@ if($command=="update" && $error!=true) $maildata['betreuer_voller_name'] = $row_betr->first; $maildata['student_anrede'] = $row_std->anrede; $maildata['student_voller_name'] = trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost); - $maildata['link'] = $mail_fulllink; + $maildata['parbeituebersichtlink'] = "

Zur Projektarbeitsübersicht

"; + $maildata['bewertunglink'] = $mail_fulllink; $maildata['token'] = ""; $mailres = sendSanchoMail( @@ -514,7 +515,8 @@ if($command=="update" && $error!=true) $zweitbetmaildata['betreuer_voller_name'] = $zweitbetr->voller_name; $zweitbetmaildata['student_anrede'] = $maildata['student_anrede']; $zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name']; - $zweitbetmaildata['link'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; + $zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : ""; + $zweitbetmaildata['bewertunglink'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; $zweitbetmaildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: ".$zweitbetr->zugangstoken."

" : ""; $mailres = sendSanchoMail( diff --git a/locale/de-AT/abgabetool.php b/locale/de-AT/abgabetool.php index 3b2bd750a..687bb31b9 100644 --- a/locale/de-AT/abgabetool.php +++ b/locale/de-AT/abgabetool.php @@ -80,7 +80,7 @@ Sollten Sie trotzdem die `Eidesstattliche Erklärung´ samt Unterschrift hochlad $this->phrasen['abgabetool/gelesenUndAkzeptiert']='Gelesen und akzeptiert'; $this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Erklärung nicht akzeptiert'; $this->phrasen['abgabetool/downloadProjektarbeit']='Dokument herunterladen'; -$this->phrasen['abgabetool/zweitBegutachter']='Zweitbegutachter'; -$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Zugangstoken an Zweitbegutachter senden'; -$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail an Zweitbegutachter (%s) gesendet'; +$this->phrasen['abgabetool/zweitBegutachter']='ZweitbegutachterIn'; +$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Zugangstoken an ZweitbegutachterIn senden'; +$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail an ZweitbegutachterIn (%s) gesendet'; ?> diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 33c79cf80..2eea11deb 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -8192,6 +8192,66 @@ Any unusual occurrences ) ), //******************* Projektarbeitsbeurteilung - specific + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'studiengang', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Studiengang', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Study Program', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'organisationsform', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Organisationsform', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Organizational structure ', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'arbeitBachelor', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Bachelorarbeit', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Bachelor\'s Paper', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'projektarbeitsbeurteilung', 'category' => 'projektarbeitsbeurteilung', @@ -8206,7 +8266,7 @@ Any unusual occurrences ), array( 'sprache' => 'English', - 'text' => 'Assessment', + 'text' => 'Assessment of', 'description' => '', 'insertvon' => 'system' ) @@ -8337,6 +8397,26 @@ Any unusual occurrences 'category' => 'projektarbeitsbeurteilung', 'phrase' => 'themaText', 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Das Thema wurde in eine im Rahmen einer Bachelorarbeit bearbeitbare Form übergeführt (Entwicklung sinnvoller Forschungsfragen bzw. Aufgabenstellungen, etc.).', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The subject was handled in a suitable manner for a bachelor thesis (well-structured, meaningful research questions or tasks, etc.)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'themaTextMaster', + 'insertvon' => 'system', 'phrases' => array( array( 'sprache' => 'German', @@ -8760,7 +8840,7 @@ Any unusual occurrences 'phrases' => array( array( 'sprache' => 'German', - 'text' => 'Das Gutachten des/der Zweit-BegutachterIn liegt vor und ist in die Beurteilung eingeflossen.', + 'text' => 'Das Gutachten des/der Zweit-Begutachter*in liegt vor und ist in die Beurteilung eingeflossen.', 'description' => '', 'insertvon' => 'system' ), @@ -8906,7 +8986,7 @@ Any unusual occurrences ), array( 'sprache' => 'English', - 'text' => 'If, within any of the criteria, the points total is under 50%%, the %s is deemed to have failed overall.', + 'text' => 'If the number of points for the criteria "1 - 5" or "6 - 10" is below 50%% in total, the %s is to be assessed as negative overall.', 'description' => '', 'insertvon' => 'system' ) @@ -9140,7 +9220,7 @@ Any unusual occurrences 'phrases' => array( array( 'sprache' => 'German', - 'text' => 'Name des/der Studierenden', + 'text' => 'Name des*der Studierenden', 'description' => '', 'insertvon' => 'system' ), From 17f085d352d0eb8d1ecb7824234bef5327339a93 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Thu, 25 Mar 2021 10:23:40 +0100 Subject: [PATCH 18/37] =?UTF-8?q?projektbeurteilung=20download=20f=C3=BCr?= =?UTF-8?q?=20studenten=20im=20cis=20hinzugefuegt=20projektbeurteilungsbut?= =?UTF-8?q?ton=20anzeige=20nur=20wenn=20beurteilung=20bereits=20abgeschick?= =?UTF-8?q?t=20wurde?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/lehre/abgabe_student.php | 45 +++++++++++++++---- cis/private/pdfExport.php | 42 ++++++++++++++++- content/student/studentprojektarbeit.js.php | 13 ++++-- .../studentprojektarbeitoverlay.xul.php | 4 +- locale/de-AT/abgabetool.php | 5 +++ locale/en-US/abgabetool.php | 4 ++ 6 files changed, 97 insertions(+), 16 deletions(-) diff --git a/cis/private/lehre/abgabe_student.php b/cis/private/lehre/abgabe_student.php index a1a6c9b34..ab8568632 100644 --- a/cis/private/lehre/abgabe_student.php +++ b/cis/private/lehre/abgabe_student.php @@ -99,7 +99,11 @@ $sql_query = "SELECT (SELECT nachname FROM public.tbl_person WHERE person_id=tb (SELECT betreuerart_kurzbz FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_betreuerart_kurzbz, tbl_projektbetreuer.person_id AS betreuer_person_id, - tbl_projekttyp.bezeichnung AS prjbez, * + tbl_projekttyp.bezeichnung AS prjbez, *, + lehre.tbl_projektbetreuer.note as note, + public.tbl_benutzer.aktiv as aktiv, + (SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuer_person_id = tbl_projektbetreuer.person_id) AS babgeschickt, + (SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_abgeschickt FROM lehre.tbl_projektarbeit LEFT JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id) LEFT JOIN public.tbl_benutzer ON(uid=student_uid) @@ -114,8 +118,6 @@ $sql_query = "SELECT (SELECT nachname FROM public.tbl_person WHERE person_id=tb OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbetreuer' OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbegutachter') AND tbl_projektarbeit.student_uid=".$db->db_add_param($uid)." - AND public.tbl_benutzer.aktiv - AND lehre.tbl_projektarbeit.note IS NULL ORDER BY studiensemester_kurzbz desc, tbl_lehrveranstaltung.kurzbz"; //AND tbl_projektarbeit.student_uid='$getuid' 'ie07m102'; @@ -155,7 +157,32 @@ else ($row->btitelpost!=''?$htmlstr1 .= ' '.$row->btitelpost:$htmlstr1 .= ''); $htmlstr1 .= $zweitbetreuer; $htmlstr .= "
".$p->t('abgabetool/upload')."".$p->t('abgabetool/upload')."".$row->studiensemester_kurzbz."".strtoupper($row->typ.$row->kurzbz).""; @@ -192,11 +219,11 @@ echo ' Abgabesystem_Studentensicht - - - - - + + + + + - - - - - + + + + From b29621354f191ea748912328fb8b8d156f8fa382 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Sat, 10 Apr 2021 03:55:05 +0200 Subject: [PATCH 31/37] - abgabetool: added zweitbetreuer mailto Link incl. icons - Bewertunglink is not sent in Parbeit Enduploadmail if older Semester - phrasesupdate Projektarbeitsbeurteilung: added female form --- cis/private/lehre/abgabe_lektor_details.php | 21 ++++++++++++++--- cis/private/lehre/abgabe_student_details.php | 24 ++++++++++++++++---- locale/de-AT/abgabetool.php | 3 ++- locale/en-US/abgabetool.php | 3 ++- locale/it-IT/abgabetool.php | 3 ++- system/phrasesupdate.php | 4 ++-- 6 files changed, 46 insertions(+), 12 deletions(-) diff --git a/cis/private/lehre/abgabe_lektor_details.php b/cis/private/lehre/abgabe_lektor_details.php index 84ac87445..06d29fd88 100644 --- a/cis/private/lehre/abgabe_lektor_details.php +++ b/cis/private/lehre/abgabe_lektor_details.php @@ -130,6 +130,10 @@ $qry_sem="SELECT 1 LIMIT 1"; $result_sem=$db->db_query($qry_sem); $num_rows_sem = $db->db_num_rows($result_sem); +if($num_rows_sem < 0) +{ + echo "Fehler bei Ermittlung der Aktualität der Projektarbeit
 "; +} // Zweitbegutachter holen if($betreuerart=="Erstbegutachter") @@ -203,12 +207,18 @@ echo ' cursor: pointer; outline: inherit; } - #tokenmailimg { + #zweitbetrmailicon { top: 4px; height: 18px; width: 18px; position: relative; } + #tokenmailicon { + top: 2px; + height: 15px; + width: 15px; + position: relative; + } @@ -493,10 +503,13 @@ if (isset($zweitbegutachter) && $zweitbegutachter) // wenn es Zweitbegutachter g $htmlstr .= ""; $htmlstr .= ""; $htmlstr .= ""; + $htmlstr .= " email) . "' alt='" . $p->t('abgabetool/zweitbetreuerMailSenden', $zweitbegutachter->email) . "'/>\n"; $htmlstr .= " \n"; + " . $p->t(\n"; $htmlstr .= ""; } + $htmlstr .= "
\n"; $htmlstr .= "\n"; @@ -424,6 +423,22 @@ if($command=="update" && $error!=true) } else { + // paarbeit sollte nur ab SS2021 online bewertet werden + $qry_sem="SELECT 1 + FROM lehre.tbl_projektarbeit + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) + WHERE projektarbeit_id=".$db->db_add_param($projektarbeit_id, FHC_INTEGER)." + AND tbl_studiensemester.start::date >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2021')::date + LIMIT 1"; + + $result_sem=$db->db_query($qry_sem); + $num_rows_sem = $db->db_num_rows($result_sem); + if($num_rows_sem < 0) + { + echo "Fehler bei Ermittlung der Aktualität der Projektarbeit
 "; + } + $row_std=$db->db_fetch_object($result_std); // 1. Begutachter mail ohne Token @@ -436,7 +451,7 @@ if($command=="update" && $error!=true) $maildata['student_anrede'] = $row_std->anrede; $maildata['student_voller_name'] = trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost); $maildata['parbeituebersichtlink'] = "

Zur Projektarbeitsübersicht

"; - $maildata['bewertunglink'] = $mail_fulllink; + $maildata['bewertunglink'] = $num_rows_sem >= 1 ? "

Zur Beurteilung der Arbeit

" : ""; $maildata['token'] = ""; $mailres = sendSanchoMail( @@ -472,6 +487,7 @@ if($command=="update" && $error!=true) echo "" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "
 "; $intern = isset($zweitbetr->uid); + $mail_link = $intern ? $mail_fulllink : $mail_baselink; $zweitbetmaildata = array(); $zweitbetmaildata['geehrt'] = "geehrte" . ($zweitbetr->anrede == "Herr" ? "r" : ""); @@ -480,8 +496,8 @@ if($command=="update" && $error!=true) $zweitbetmaildata['student_anrede'] = $maildata['student_anrede']; $zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name']; $zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : ""; - $zweitbetmaildata['bewertunglink'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; - $zweitbetmaildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: " . $zweitbetr->zugangstoken . "

" : ""; + $zweitbetmaildata['bewertunglink'] = $num_rows_sem >= 1 ? "

Zur Beurteilung der Arbeit

" : ""; + $zweitbetmaildata['token'] = $num_rows_sem >= 1 && isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: " . $zweitbetr->zugangstoken . "

" : ""; $mailres = sendSanchoMail( 'ParbeitsbeurteilungEndupload', diff --git a/locale/de-AT/abgabetool.php b/locale/de-AT/abgabetool.php index a130ddcbc..c3257edbe 100644 --- a/locale/de-AT/abgabetool.php +++ b/locale/de-AT/abgabetool.php @@ -81,8 +81,9 @@ $this->phrasen['abgabetool/gelesenUndAkzeptiert']='Gelesen und akzeptiert'; $this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Erklärung nicht akzeptiert'; $this->phrasen['abgabetool/downloadProjektarbeit']='Dokument herunterladen'; $this->phrasen['abgabetool/zweitBegutachter']='ZweitbegutachterIn'; -$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Zugangstoken an ZweitbegutachterIn senden'; +$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Zugangstoken an ZweitbegutachterIn noch einmal senden'; $this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail an ZweitbegutachterIn (%s) gesendet'; +$this->phrasen['abgabetool/zweitbetreuerMailSenden']='Mail an ZweitbegutachterIn (%s) senden'; $this->phrasen['abgabetool/zweitBegutachterEmailFehlt']='keine Zustellmail für Zweitbegutachter vorhanden!'; $this->phrasen['abgabetool/projektbeurteilungDownload']='Projektbeurteilung herunterladen'; $this->phrasen['abgabetool/projektbeurteilungErstDownload']='Erst-/Begutachter'; diff --git a/locale/en-US/abgabetool.php b/locale/en-US/abgabetool.php index a04477aee..59b10ed4b 100644 --- a/locale/en-US/abgabetool.php +++ b/locale/en-US/abgabetool.php @@ -81,7 +81,8 @@ $this->phrasen['abgabetool/gelesenUndAkzeptiert']='Read and accepted'; $this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Declaration not accepted'; $this->phrasen['abgabetool/downloadProjektarbeit']='Download File'; $this->phrasen['abgabetool/zweitBegutachter']='Second assessor'; -$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Send access token to second assessor'; +$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Resend access token to second assessor'; +$this->phrasen['abgabetool/zweitbetreuerMailSenden']='Send mail to second assessor (%s)'; $this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail sent to second assessor (%s)'; $this->phrasen['abgabetool/zweitBegutachterEmailFehlt']='Second assessor has no delivery mail adress!'; $this->phrasen['abgabetool/projektbeurteilungDownload']='Thesis-Assessment download'; diff --git a/locale/it-IT/abgabetool.php b/locale/it-IT/abgabetool.php index 66c5058ff..f5afd8da5 100644 --- a/locale/it-IT/abgabetool.php +++ b/locale/it-IT/abgabetool.php @@ -71,7 +71,8 @@ $this->phrasen['abgabetool/upload']='Upload'; $this->phrasen['abgabetool/variablerAbgabetermin']='scadenza consegna variabile'; $this->phrasen['abgabetool/zweitbetreuerBei']='secondo relatore presso'; $this->phrasen['abgabetool/zweitBegutachter']='Second assessor'; -$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Send access token to second assessor'; +$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Resend access token to second assessor'; +$this->phrasen['abgabetool/zweitbetreuerMailSenden']='Send mail to second assessor (%s)'; $this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail sent to second assessor (%s)'; $this->phrasen['abgabetool/zweitBegutachterEmailFehlt']='Second assessor has no delivery mail adress!'; ?> diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index b0c8b1e3d..b49aa6044 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -9400,7 +9400,7 @@ Any unusual occurrences 'phrases' => array( array( 'sprache' => 'German', - 'text' => 'Zur Bewertung des Zweitbegutachters', + 'text' => 'Zur Bewertung des/der Zweitbegutachters*in', 'description' => '', 'insertvon' => 'system' ), @@ -9420,7 +9420,7 @@ Any unusual occurrences 'phrases' => array( array( 'sprache' => 'German', - 'text' => 'Die Beurteilung des Zweitbegutachters liegt noch nicht vor.', + 'text' => 'Die Beurteilung des/der Zweitbegutachters*in liegt noch nicht vor.', 'description' => '', 'insertvon' => 'system' ), From 1f02506eaf9c1c1091998f8e5bfcb8fc408d42cd Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Sat, 10 Apr 2021 04:09:29 +0200 Subject: [PATCH 32/37] =?UTF-8?q?added=20phrase=20for=20Parbeitaktualit?= =?UTF-8?q?=C3=A4t=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/lehre/abgabe_lektor_details.php | 2 +- cis/private/lehre/abgabe_student_details.php | 2 +- locale/de-AT/abgabetool.php | 1 + locale/en-US/abgabetool.php | 1 + locale/it-IT/abgabetool.php | 1 + 5 files changed, 5 insertions(+), 2 deletions(-) diff --git a/cis/private/lehre/abgabe_lektor_details.php b/cis/private/lehre/abgabe_lektor_details.php index 06d29fd88..6b6b5633b 100644 --- a/cis/private/lehre/abgabe_lektor_details.php +++ b/cis/private/lehre/abgabe_lektor_details.php @@ -132,7 +132,7 @@ $result_sem=$db->db_query($qry_sem); $num_rows_sem = $db->db_num_rows($result_sem); if($num_rows_sem < 0) { - echo "Fehler bei Ermittlung der Aktualität der Projektarbeit
 "; + echo "".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."
 "; } // Zweitbegutachter holen diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index 293da2fa0..a30250435 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -436,7 +436,7 @@ if($command=="update" && $error!=true) $num_rows_sem = $db->db_num_rows($result_sem); if($num_rows_sem < 0) { - echo "Fehler bei Ermittlung der Aktualität der Projektarbeit
 "; + echo "".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."
 "; } $row_std=$db->db_fetch_object($result_std); diff --git a/locale/de-AT/abgabetool.php b/locale/de-AT/abgabetool.php index c3257edbe..7943868ad 100644 --- a/locale/de-AT/abgabetool.php +++ b/locale/de-AT/abgabetool.php @@ -65,6 +65,7 @@ $this->phrasen['abgabetool/dateneingabeUnvollstaendig']='Die Dateneingabe ist un $this->phrasen['abgabetool/fehlerMailBegutachter']='Fehler beim Versenden des Mails an den Erstbegutachter!'; $this->phrasen['abgabetool/fehlerMailZweitBegutachter']='Fehler beim Versenden des Mails an den Zweitbegutachter!'; $this->phrasen['abgabetool/fehlerBetreuerNichtGefundenKeinMail']='Betreuer nicht gefunden. Kein Mail verschickt!'; +$this->phrasen['abgabetool/fehlerAktualitaetProjektarbeit']='Fehler bei Ermittlung der Aktualität der Projektarbeit'; $this->phrasen['abgabetool/keinPDF']='Upload ist keine pdf-Datei! Bitte wiederholen Sie den Fileupload.'; $this->phrasen['abgabetool/dateiZuGross']='Die Datei ist zu groß! Maximale Dateigröße 15 MB'; $this->phrasen['abgabetool/fehlerTerminVorbei']='Die Abgabefrist für diesen Termin ist bereits abgelaufen.'; diff --git a/locale/en-US/abgabetool.php b/locale/en-US/abgabetool.php index 59b10ed4b..c4e6eb7bd 100644 --- a/locale/en-US/abgabetool.php +++ b/locale/en-US/abgabetool.php @@ -64,6 +64,7 @@ $this->phrasen['abgabetool/dateneingabeUnvollstaendig']='Incomplete Data input'; $this->phrasen['abgabetool/fehlerMailBegutachter']='Error sending E-Mail to first Assessor!'; $this->phrasen['abgabetool/fehlerMailZweitBegutachter']='Error sending E-Mail to second Assessor!'; $this->phrasen['abgabetool/fehlerBetreuerNichtGefundenKeinMail']='Assessor not found. No E-Mail sent!'; +$this->phrasen['abgabetool/fehlerAktualitaetProjektarbeit']='Error when checking if current thesis'; $this->phrasen['abgabetool/keinPDF']='Upload-File ist not a PDF! Please retry the Fileupload.'; $this->phrasen['abgabetool/dateiZuGross']='The File is too big! Maximum File size: 15 MB'; $this->phrasen['abgabetool/fehlerTerminVorbei']='The deadline for this upload has already expired.'; diff --git a/locale/it-IT/abgabetool.php b/locale/it-IT/abgabetool.php index f5afd8da5..f7e7d9cf9 100644 --- a/locale/it-IT/abgabetool.php +++ b/locale/it-IT/abgabetool.php @@ -34,6 +34,7 @@ $this->phrasen['abgabetool/fehlerMailZweitBegutachter']='Errore di trasmissione $this->phrasen['abgabetool/fehlerMailStudent']='errore di spedizione della mai agli studenti!'; $this->phrasen['abgabetool/fehlerTerminEintragen']='scadenza non è stata registrata!'; $this->phrasen['abgabetool/fehlerTerminLoeschen']='Errore in sede di cancellazione della scadenza!'; +$this->phrasen['abgabetool/fehlerAktualitaetProjektarbeit']='Error when checking if current thesis'; $this->phrasen['abgabetool/fix']='fisso'; $this->phrasen['abgabetool/fixerAbgabetermin']='scadenza consegna inderogabile'; $this->phrasen['abgabetool/gelesenUndAkzeptiert']='Letto e accettato'; From 456a4e2057071d19e99f29bc13f456f6c44935dd Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Mon, 12 Apr 2021 11:52:01 +0200 Subject: [PATCH 33/37] bugfix for datum validation --- include/bisverwendung.class.php | 112 ++++++++++++++++++++------------ 1 file changed, 71 insertions(+), 41 deletions(-) diff --git a/include/bisverwendung.class.php b/include/bisverwendung.class.php index 9d92db489..5302d7b96 100644 --- a/include/bisverwendung.class.php +++ b/include/bisverwendung.class.php @@ -104,8 +104,8 @@ class bisverwendung extends basis_db $this->verwendung_code = $row->verwendung_code; $this->mitarbeiter_uid = $row->mitarbeiter_uid; $this->hauptberufcode = $row->hauptberufcode; - $this->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); - $this->habilitation = $this->db_parse_bool($row->habilitation); + $this->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); + $this->habilitation = $this->db_parse_bool($row->habilitation); $this->beginn = $row->beginn; $this->ende = $row->ende; $this->updatevon = $row->updatevon; @@ -177,6 +177,24 @@ class bisverwendung extends basis_db } } + + /** + * Prueft das Datum + * @param $date = string + * @return true wenn ok, sonst false + */ + static public function verifyDate($date, $strict = true) + { + $dateTime = DateTime::createFromFormat('Y-m-d', $date); + if ($strict) { + $errors = DateTime::getLastErrors(); + if (!empty($errors['warning_count'])) { + return false; + } + } + return $dateTime !== false; + } + /** * Prueft die Daten vor dem Speichern * @@ -189,6 +207,17 @@ class bisverwendung extends basis_db $this->errormsg = 'Vertragsstunden sind ungueltig'; return false; } + elseif(!$this->verifyDate($this->beginn) && !empty($this->beginn)) + { + $this->errormsg = 'Start Datum ist kein Valides Datum: '.$this->beginn; + return false; + } + elseif(!$this->verifyDate($this->ende) && !empty($this->ende)) + { + $this->errormsg = 'End Datum ist kein Valides Datum: '.$this->ende; + return false; + } + return true; } @@ -225,49 +254,49 @@ class bisverwendung extends basis_db $qry = "BEGIN;INSERT INTO bis.tbl_bisverwendung (ba1code, ba2code, beschausmasscode, verwendung_code, mitarbeiter_uid, hauptberufcode, hauptberuflich, habilitation, beginn, ende, vertragsstunden, updateamum, updatevon, insertamum, insertvon, dv_art, inkludierte_lehre, zeitaufzeichnungspflichtig) VALUES (". - $this->db_add_param($this->ba1code, FHC_INTEGER).', '. - $this->db_add_param($this->ba2code, FHC_INTEGER).', '. - $this->db_add_param($this->beschausmasscode, FHC_INTEGER).', '. - $this->db_add_param($this->verwendung_code, FHC_INTEGER).', '. - $this->db_add_param($this->mitarbeiter_uid).', '. - $this->db_add_param($this->hauptberufcode, FHC_INTEGER).', '. - $hauptberuflich.', '. - $this->db_add_param($this->habilitation, FHC_BOOLEAN).', '. - $this->db_add_param($this->beginn).', '. - $this->db_add_param($this->ende).', '. - $this->db_add_param($this->vertragsstunden).', '. - $this->db_add_param($this->updateamum).', '. - $this->db_add_param($this->updatevon).', '. - $this->db_add_param($this->insertamum).', '. - $this->db_add_param($this->insertvon).', '. - $this->db_add_param($this->dv_art).','. - $this->db_add_param($this->inkludierte_lehre).','. - $zeitaufzeichnungspflichtig. ');'; + $this->db_add_param($this->ba1code, FHC_INTEGER).', '. + $this->db_add_param($this->ba2code, FHC_INTEGER).', '. + $this->db_add_param($this->beschausmasscode, FHC_INTEGER).', '. + $this->db_add_param($this->verwendung_code, FHC_INTEGER).', '. + $this->db_add_param($this->mitarbeiter_uid).', '. + $this->db_add_param($this->hauptberufcode, FHC_INTEGER).', '. + $hauptberuflich.', '. + $this->db_add_param($this->habilitation, FHC_BOOLEAN).', '. + $this->db_add_param($this->beginn).', '. + $this->db_add_param($this->ende).', '. + $this->db_add_param($this->vertragsstunden).', '. + $this->db_add_param($this->updateamum).', '. + $this->db_add_param($this->updatevon).', '. + $this->db_add_param($this->insertamum).', '. + $this->db_add_param($this->insertvon).', '. + $this->db_add_param($this->dv_art).','. + $this->db_add_param($this->inkludierte_lehre).','. + $zeitaufzeichnungspflichtig. ');'; } else { //Bestehenden Datensatz aktualisieren $qry= "UPDATE bis.tbl_bisverwendung SET". - " ba1code=".$this->db_add_param($this->ba1code, FHC_INTEGER).",". - " ba2code=".$this->db_add_param($this->ba2code, FHC_INTEGER).",". - " beschausmasscode=".$this->db_add_param($this->beschausmasscode, FHC_INTEGER).",". - " verwendung_code=".$this->db_add_param($this->verwendung_code, FHC_INTEGER).",". - " mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid).",". - " hauptberufcode=".$this->db_add_param($this->hauptberufcode, FHC_INTEGER).",". - " hauptberuflich=".$hauptberuflich.",". - " habilitation=".$this->db_add_param($this->habilitation, FHC_BOOLEAN).",". - " beginn=".$this->db_add_param($this->beginn).",". - " ende=".$this->db_add_param($this->ende).",". - " vertragsstunden=".$this->db_add_param($this->vertragsstunden).",". - " updateamum=".$this->db_add_param($this->updateamum).",". - " updatevon=".$this->db_add_param($this->updatevon).",". - " insertamum=".$this->db_add_param($this->insertamum).",". - " insertvon=".$this->db_add_param($this->insertvon).",". - " dv_art=".$this->db_add_param($this->dv_art).",". - " inkludierte_lehre=".$this->db_add_param($this->inkludierte_lehre).",". - " zeitaufzeichnungspflichtig=". $zeitaufzeichnungspflichtig. - " WHERE bisverwendung_id=".$this->db_add_param($this->bisverwendung_id, FHC_INTEGER); + " ba1code=".$this->db_add_param($this->ba1code, FHC_INTEGER).",". + " ba2code=".$this->db_add_param($this->ba2code, FHC_INTEGER).",". + " beschausmasscode=".$this->db_add_param($this->beschausmasscode, FHC_INTEGER).",". + " verwendung_code=".$this->db_add_param($this->verwendung_code, FHC_INTEGER).",". + " mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid).",". + " hauptberufcode=".$this->db_add_param($this->hauptberufcode, FHC_INTEGER).",". + " hauptberuflich=".$hauptberuflich.",". + " habilitation=".$this->db_add_param($this->habilitation, FHC_BOOLEAN).",". + " beginn=".$this->db_add_param($this->beginn).",". + " ende=".$this->db_add_param($this->ende).",". + " vertragsstunden=".$this->db_add_param($this->vertragsstunden).",". + " updateamum=".$this->db_add_param($this->updateamum).",". + " updatevon=".$this->db_add_param($this->updatevon).",". + " insertamum=".$this->db_add_param($this->insertamum).",". + " insertvon=".$this->db_add_param($this->insertvon).",". + " dv_art=".$this->db_add_param($this->dv_art).",". + " inkludierte_lehre=".$this->db_add_param($this->inkludierte_lehre).",". + " zeitaufzeichnungspflichtig=". $zeitaufzeichnungspflichtig. + " WHERE bisverwendung_id=".$this->db_add_param($this->bisverwendung_id, FHC_INTEGER); } if($this->db_query($qry)) @@ -341,8 +370,8 @@ class bisverwendung extends basis_db $obj->verwendung_code = $row->verwendung_code; $obj->mitarbeiter_uid = $row->mitarbeiter_uid; $obj->hauptberufcode = $row->hauptberufcode; - $obj->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); - $obj->habilitation = $this->db_parse_bool($row->habilitation); + $obj->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); + $obj->habilitation = $this->db_parse_bool($row->habilitation); $obj->beginn = $row->beginn; $obj->ende = $row->ende; $obj->updatevon = $row->updatevon; @@ -770,3 +799,4 @@ class bisverwendung extends basis_db } } ?> + From 72b076c785889700a9f0bbca385276874b6b24c6 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Tue, 13 Apr 2021 13:25:42 +0200 Subject: [PATCH 34/37] added repeat.png image for abgabetool --- skin/images/repeat.png | Bin 0 -> 21827 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 skin/images/repeat.png diff --git a/skin/images/repeat.png b/skin/images/repeat.png new file mode 100644 index 0000000000000000000000000000000000000000..03ec1790b91f186f281e62b4435c38d0acca0eb2 GIT binary patch literal 21827 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 Date: Thu, 15 Apr 2021 11:54:50 +0200 Subject: [PATCH 35/37] Changed fhcomplete.org Wiki Links to fhcomplete.info --- README.md | 2 +- locale/de-AT/dms_link.php | 14 +++++++------- locale/en-US/dms_link.php | 12 ++++++------ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index d5620010a..c5212a353 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # FH-Complete * [FH-Complete Homepage](https://www.fhcomplete.org) -* [Wiki](https://wiki.fhcomplete.org/) +* [Wiki](https://wiki.fhcomplete.info/) * [Changelog](CHANGELOG.md) diff --git a/locale/de-AT/dms_link.php b/locale/de-AT/dms_link.php index 5bf5541dc..8a0d24dac 100644 --- a/locale/de-AT/dms_link.php +++ b/locale/de-AT/dms_link.php @@ -11,11 +11,11 @@ $this->phrasen['dms_link/iconPDF']='46'; //PDF Icon $this->phrasen['dms_link/bedienungsanleitungMailverteiler']='1474'; //Bedienungsanleitung Mailverteiler $this->phrasen['dms_link/berechtigungskonzeptMailverteiler']='1475'; //Berechtigungskonzept Mailverteiler $this->phrasen['dms_link/handbuchUrlaubsverwaltung']='759'; //Handbuch Urlaubsverwaltung -> Leer lassen, falls es keines gibt -$this->phrasen['dms_link/handbuchZeitaufzeichnung']='1545'; //Handbuch Zeitaufzeichnung -> Leer lassen, falls es keines gibt +$this->phrasen['dms_link/handbuchZeitaufzeichnung']='1545'; //Handbuch Zeitaufzeichnung -> Leer lassen, falls es keines gibt $this->phrasen['dms_link/fiktiveNormalarbeitszeit']='2512'; //fiktive Normalarbeitszeit -> Leer lassen, falls es keines gibt $this->phrasen['dms_link/learningAgreementErasmus']='85863'; //Learning Agreement Incomings Erasmus -$this->phrasen['dms_link/learningAgreement']='38866'; //Learning Agreement Incomings NICHT Erasmus -$this->phrasen['dms_link/passwortpolicy']='57972'; //Passwortpolicy +$this->phrasen['dms_link/learningAgreement']='38866'; //Learning Agreement Incomings NICHT Erasmus +$this->phrasen['dms_link/passwortpolicy']='57972'; //Passwortpolicy // Content IDs (=Englisch) $this->phrasen['dms_link/lvPlanFAQ']='6887'; //Hilfe-Link aus dem LV-Plan in die LV-Plan FAQ auf der CIS (CMS-ID) @@ -32,8 +32,8 @@ $this->phrasen['dms_link/lvevaluierungStudierendeCMS']=''; //Beschreibung des Ab $this->phrasen['dms_link/lvevaluierungMitarbeiterCMS']=''; //Beschreibung des Ablaufs der LVEvaluierung für Mitarbeiter //Links auf externe Seiten -$this->phrasen['dms_link/dokuwikiGesamtnote']='https://wiki.fhcomplete.org/doku.php?id=cis:gesamtnote'; //Link ins Dokuwiki zur Anleitung Gesamtnote -$this->phrasen['dms_link/abgabetoolLektorHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer LektorInnen -$this->phrasen['dms_link/abgabetoolStudentHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_studierende'; //Abgabetool Handbuch fuer Studierende -$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer Assistenz +$this->phrasen['dms_link/dokuwikiGesamtnote']='https://wiki.fhcomplete.info/doku.php?id=cis:gesamtnote'; //Link ins Dokuwiki zur Anleitung Gesamtnote +$this->phrasen['dms_link/abgabetoolLektorHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer LektorInnen +$this->phrasen['dms_link/abgabetoolStudentHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_studierende'; //Abgabetool Handbuch fuer Studierende +$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer Assistenz ?> diff --git a/locale/en-US/dms_link.php b/locale/en-US/dms_link.php index 297feb2b4..287ee5a37 100644 --- a/locale/en-US/dms_link.php +++ b/locale/en-US/dms_link.php @@ -10,11 +10,11 @@ $this->phrasen['dms_link/moodleHandbuch24']='1426'; //Moodle Handbuch $this->phrasen['dms_link/iconPDF']='46'; //PDF Icon $this->phrasen['dms_link/bedienungsanleitungMailverteiler']='1474'; //Bedienungsanleitung Mailverteiler $this->phrasen['dms_link/berechtigungskonzeptMailverteiler']='1475'; //Berechtigungskonzept Mailverteiler -$this->phrasen['dms_link/handbuchUrlaubsverwaltung']='759'; //Handbuch Urlaubsverwaltung +$this->phrasen['dms_link/handbuchUrlaubsverwaltung']='759'; //Handbuch Urlaubsverwaltung $this->phrasen['dms_link/handbuchZeitaufzeichnung']='1545'; //Handbuch Zeitaufzeichnung -> Leer lassen, falls es keines gibt $this->phrasen['dms_link/fiktiveNormalarbeitszeit']='2512'; //fiktive Normalarbeitszeit -> Leer lassen, falls es keines gibt $this->phrasen['dms_link/learningAgreementErasmus']='85863'; //Learning Agreement Incomings Erasmus -$this->phrasen['dms_link/learningAgreement']='38866'; //Learning Agreement Incomings NICHT Erasmus +$this->phrasen['dms_link/learningAgreement']='38866'; //Learning Agreement Incomings NICHT Erasmus // Content IDs (=Deutsch) $this->phrasen['dms_link/lvPlanFAQ']='6887'; //Hilfe-Link aus dem LV-Plan in die LV-Plan FAQ auf der CIS (CMS-ID) @@ -27,8 +27,8 @@ $this->phrasen['dms_link/profilhilfe']=''; //Hilfe-Link aus dem Profil $this->phrasen['dms_link/anleitungMailverteiler']='7578'; //Anleitung für die Benutzung der Mailverteiler und der Berechtigungsschlüssel //Links auf externe Seiten -$this->phrasen['dms_link/dokuwikiGesamtnote']='https://wiki.fhcomplete.org/doku.php?id=cis:gesamtnote'; //Link ins Dokuwiki zur Anleitung Gesamtnote -$this->phrasen['dms_link/abgabetoolLektorHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer LektorInnen -$this->phrasen['dms_link/abgabetoolStudentHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_studierende'; //Abgabetool Handbuch fuer Studierende -$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer Assistenz +$this->phrasen['dms_link/dokuwikiGesamtnote']='https://wiki.fhcomplete.info/doku.php?id=cis:gesamtnote'; //Link ins Dokuwiki zur Anleitung Gesamtnote +$this->phrasen['dms_link/abgabetoolLektorHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer LektorInnen +$this->phrasen['dms_link/abgabetoolStudentHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_studierende'; //Abgabetool Handbuch fuer Studierende +$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer Assistenz ?> From 9699de8c33d2808959ed73ab9e2ced160eb9304b Mon Sep 17 00:00:00 2001 From: Paolo Date: Tue, 20 Apr 2021 14:09:52 +0200 Subject: [PATCH 36/37] Removed commented code --- application/libraries/LDAPLib.php | 1 - 1 file changed, 1 deletion(-) diff --git a/application/libraries/LDAPLib.php b/application/libraries/LDAPLib.php index 0dfcc9498..a119af51e 100644 --- a/application/libraries/LDAPLib.php +++ b/application/libraries/LDAPLib.php @@ -167,7 +167,6 @@ class LDAPLib } // LDAP connection - //$ldapConnection = @ldap_connect($ldapConfigs[self::SERVER], $ldapConfigs[self::PORT]); $ldapConnection = @ldap_connect($ldapConfigs[self::SERVER].':'.$ldapConfigs[self::PORT]); if ($ldapConnection) // if success { From a7482425ef689716bc623f63be37d82d10f9fc70 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Tue, 20 Apr 2021 15:57:43 +0200 Subject: [PATCH 37/37] fix inserst typos --- include/bisverwendung.class.php | 83 ++++++++++++++++----------------- 1 file changed, 41 insertions(+), 42 deletions(-) diff --git a/include/bisverwendung.class.php b/include/bisverwendung.class.php index 5302d7b96..799cfc93e 100644 --- a/include/bisverwendung.class.php +++ b/include/bisverwendung.class.php @@ -104,8 +104,8 @@ class bisverwendung extends basis_db $this->verwendung_code = $row->verwendung_code; $this->mitarbeiter_uid = $row->mitarbeiter_uid; $this->hauptberufcode = $row->hauptberufcode; - $this->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); - $this->habilitation = $this->db_parse_bool($row->habilitation); + $this->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); + $this->habilitation = $this->db_parse_bool($row->habilitation); $this->beginn = $row->beginn; $this->ende = $row->ende; $this->updatevon = $row->updatevon; @@ -254,49 +254,49 @@ class bisverwendung extends basis_db $qry = "BEGIN;INSERT INTO bis.tbl_bisverwendung (ba1code, ba2code, beschausmasscode, verwendung_code, mitarbeiter_uid, hauptberufcode, hauptberuflich, habilitation, beginn, ende, vertragsstunden, updateamum, updatevon, insertamum, insertvon, dv_art, inkludierte_lehre, zeitaufzeichnungspflichtig) VALUES (". - $this->db_add_param($this->ba1code, FHC_INTEGER).', '. - $this->db_add_param($this->ba2code, FHC_INTEGER).', '. - $this->db_add_param($this->beschausmasscode, FHC_INTEGER).', '. - $this->db_add_param($this->verwendung_code, FHC_INTEGER).', '. - $this->db_add_param($this->mitarbeiter_uid).', '. - $this->db_add_param($this->hauptberufcode, FHC_INTEGER).', '. - $hauptberuflich.', '. - $this->db_add_param($this->habilitation, FHC_BOOLEAN).', '. - $this->db_add_param($this->beginn).', '. - $this->db_add_param($this->ende).', '. - $this->db_add_param($this->vertragsstunden).', '. - $this->db_add_param($this->updateamum).', '. - $this->db_add_param($this->updatevon).', '. - $this->db_add_param($this->insertamum).', '. - $this->db_add_param($this->insertvon).', '. - $this->db_add_param($this->dv_art).','. - $this->db_add_param($this->inkludierte_lehre).','. - $zeitaufzeichnungspflichtig. ');'; + $this->db_add_param($this->ba1code, FHC_INTEGER).', '. + $this->db_add_param($this->ba2code, FHC_INTEGER).', '. + $this->db_add_param($this->beschausmasscode, FHC_INTEGER).', '. + $this->db_add_param($this->verwendung_code, FHC_INTEGER).', '. + $this->db_add_param($this->mitarbeiter_uid).', '. + $this->db_add_param($this->hauptberufcode, FHC_INTEGER).', '. + $hauptberuflich.', '. + $this->db_add_param($this->habilitation, FHC_BOOLEAN).', '. + $this->db_add_param($this->beginn).', '. + $this->db_add_param($this->ende).', '. + $this->db_add_param($this->vertragsstunden).', '. + $this->db_add_param($this->updateamum).', '. + $this->db_add_param($this->updatevon).', '. + $this->db_add_param($this->insertamum).', '. + $this->db_add_param($this->insertvon).', '. + $this->db_add_param($this->dv_art).','. + $this->db_add_param($this->inkludierte_lehre).','. + $zeitaufzeichnungspflichtig. ');'; } else { //Bestehenden Datensatz aktualisieren $qry= "UPDATE bis.tbl_bisverwendung SET". - " ba1code=".$this->db_add_param($this->ba1code, FHC_INTEGER).",". - " ba2code=".$this->db_add_param($this->ba2code, FHC_INTEGER).",". - " beschausmasscode=".$this->db_add_param($this->beschausmasscode, FHC_INTEGER).",". - " verwendung_code=".$this->db_add_param($this->verwendung_code, FHC_INTEGER).",". - " mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid).",". - " hauptberufcode=".$this->db_add_param($this->hauptberufcode, FHC_INTEGER).",". - " hauptberuflich=".$hauptberuflich.",". - " habilitation=".$this->db_add_param($this->habilitation, FHC_BOOLEAN).",". - " beginn=".$this->db_add_param($this->beginn).",". - " ende=".$this->db_add_param($this->ende).",". - " vertragsstunden=".$this->db_add_param($this->vertragsstunden).",". - " updateamum=".$this->db_add_param($this->updateamum).",". - " updatevon=".$this->db_add_param($this->updatevon).",". - " insertamum=".$this->db_add_param($this->insertamum).",". - " insertvon=".$this->db_add_param($this->insertvon).",". - " dv_art=".$this->db_add_param($this->dv_art).",". - " inkludierte_lehre=".$this->db_add_param($this->inkludierte_lehre).",". - " zeitaufzeichnungspflichtig=". $zeitaufzeichnungspflichtig. - " WHERE bisverwendung_id=".$this->db_add_param($this->bisverwendung_id, FHC_INTEGER); + " ba1code=".$this->db_add_param($this->ba1code, FHC_INTEGER).",". + " ba2code=".$this->db_add_param($this->ba2code, FHC_INTEGER).",". + " beschausmasscode=".$this->db_add_param($this->beschausmasscode, FHC_INTEGER).",". + " verwendung_code=".$this->db_add_param($this->verwendung_code, FHC_INTEGER).",". + " mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid).",". + " hauptberufcode=".$this->db_add_param($this->hauptberufcode, FHC_INTEGER).",". + " hauptberuflich=".$hauptberuflich.",". + " habilitation=".$this->db_add_param($this->habilitation, FHC_BOOLEAN).",". + " beginn=".$this->db_add_param($this->beginn).",". + " ende=".$this->db_add_param($this->ende).",". + " vertragsstunden=".$this->db_add_param($this->vertragsstunden).",". + " updateamum=".$this->db_add_param($this->updateamum).",". + " updatevon=".$this->db_add_param($this->updatevon).",". + " insertamum=".$this->db_add_param($this->insertamum).",". + " insertvon=".$this->db_add_param($this->insertvon).",". + " dv_art=".$this->db_add_param($this->dv_art).",". + " inkludierte_lehre=".$this->db_add_param($this->inkludierte_lehre).",". + " zeitaufzeichnungspflichtig=". $zeitaufzeichnungspflichtig. + " WHERE bisverwendung_id=".$this->db_add_param($this->bisverwendung_id, FHC_INTEGER); } if($this->db_query($qry)) @@ -370,8 +370,8 @@ class bisverwendung extends basis_db $obj->verwendung_code = $row->verwendung_code; $obj->mitarbeiter_uid = $row->mitarbeiter_uid; $obj->hauptberufcode = $row->hauptberufcode; - $obj->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); - $obj->habilitation = $this->db_parse_bool($row->habilitation); + $obj->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); + $obj->habilitation = $this->db_parse_bool($row->habilitation); $obj->beginn = $row->beginn; $obj->ende = $row->ende; $obj->updatevon = $row->updatevon; @@ -799,4 +799,3 @@ class bisverwendung extends basis_db } } ?> -