diff --git a/application/controllers/jobs/OneTimeMessages.php b/application/controllers/jobs/OneTimeMessages.php index 525f63c3b..0e49ca8a5 100644 --- a/application/controllers/jobs/OneTimeMessages.php +++ b/application/controllers/jobs/OneTimeMessages.php @@ -52,6 +52,7 @@ class OneTimeMessages extends JOB_Controller JOIN public.tbl_prestudentstatus ps USING (prestudent_id) JOIN public.tbl_studiengang s USING (studiengang_kz) WHERE get_rolle_prestudent(ps.prestudent_id, NULL) = \'Wartender\' + AND ps.status_kurzbz = \'Wartender\' AND ps.studiensemester_kurzbz = ? AND ps.datum <= NOW() - \''.$days.' days\'::interval AND s.typ = ? diff --git a/application/libraries/PermissionLib.php b/application/libraries/PermissionLib.php index c6e693666..42502f999 100644 --- a/application/libraries/PermissionLib.php +++ b/application/libraries/PermissionLib.php @@ -109,7 +109,7 @@ class PermissionLib foreach($oe_kurzbz as $value) { - $results[] = $this->isBerechtigt($berechtigung_kurzbz, $value, $art, $kostenstelle_id); + $results[] = $this->isBerechtigt($berechtigung_kurzbz, $art, $value, $kostenstelle_id); } if(!in_array(true, $results)) diff --git a/cis/private/lehre/abgabe_lektor_details.php b/cis/private/lehre/abgabe_lektor_details.php index a8705e7f9..f97dfa159 100644 --- a/cis/private/lehre/abgabe_lektor_details.php +++ b/cis/private/lehre/abgabe_lektor_details.php @@ -125,7 +125,7 @@ $projekttyp_kurzbz = $projektarbeit_obj->projekttyp_kurzbz; // paarbeit sollte nur ab bestimmten Zeitpunkt online bewertet werden $paIsCurrent = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id); -if(!is_numeric($paIsCurrent) || $paIsCurrent < 0) +if(!is_bool($paIsCurrent)) { echo "".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."
 "; } @@ -166,7 +166,7 @@ if(in_array($betreuerart, array('Erstbegutachter', 'Senatsvorsitz'))) } // Mail mit Token an Zweitbegutachter senden - if (count($zweitbetreuerArr) > 0 && $paIsCurrent >= 1 && isset($_GET['zweitbegutachtertoken']) && isset($_GET['zweitbetreuer_person_id'])) + if (count($zweitbetreuerArr) > 0 && $paIsCurrent === true && isset($_GET['zweitbegutachtertoken']) && isset($_GET['zweitbetreuer_person_id'])) { $qry_std="SELECT * FROM campus.vw_benutzer where uid=".$db->db_add_param($uid); if(!$result_std=$db->db_query($qry_std)) @@ -482,7 +482,7 @@ $htmlstr .= "\n"; $htmlstr .= ""; $htmlstr .= " - + "; $htmlstr .= "\n"; @@ -544,7 +545,7 @@ if (isset($zweitbetreuerArr) && is_array($zweitbetreuerArr)) // wenn es Zweitbet $htmlstr .= "  " . $p->t("; // Token senden button wenn Zweitbegutachter extern ist und Projektarbeit nicht für altes Semester ist - if (isset($zweitbetreuer->email) && !isset($zweitbetreuer->uid) && $paIsCurrent >= 1) + if (isset($zweitbetreuer->email) && !isset($zweitbetreuer->uid) && $paIsCurrent === true) { $htmlstr .= "\n"; $htmlstr .= ""; diff --git a/cis/private/lehre/abgabe_student.php b/cis/private/lehre/abgabe_student.php index 2512d9831..0a0385970 100644 --- a/cis/private/lehre/abgabe_student.php +++ b/cis/private/lehre/abgabe_student.php @@ -195,13 +195,13 @@ else $htmlstr .= ""; } diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index 860eb7579..84ba608a1 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -472,8 +472,8 @@ if($command=="update" && $error!=true) else { // paarbeit sollte nur ab bestimmten Zeitpunkt online bewertet werden - $num_rows_sem = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id); - if(!is_numeric($num_rows_sem) || $num_rows_sem < 0) + $paIsCurrent = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id); + if(!is_bool($paIsCurrent)) { echo "".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."
 "; } @@ -495,7 +495,7 @@ if($command=="update" && $error!=true) $maildata['student_voller_name'] = trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost); $maildata['abgabetyp'] = $abgabetyp; $maildata['parbeituebersichtlink'] = "

Zur Projektarbeitsübersicht

"; - $maildata['bewertunglink'] = $num_rows_sem >= 1 && $paabgabetyp_kurzbz == 'end' ? "

Zur Beurteilung der Arbeit

" : ""; + $maildata['bewertunglink'] = $paIsCurrent && $paabgabetyp_kurzbz == 'end' ? "

Zur Beurteilung der Arbeit

" : ""; $maildata['token'] = ""; $mailres = sendSanchoMail( @@ -557,8 +557,8 @@ if($command=="update" && $error!=true) $zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name']; $zweitbetmaildata['abgabetyp'] = $abgabetyp; $zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : ""; - $zweitbetmaildata['bewertunglink'] = $num_rows_sem >= 1 ? "

Zur Beurteilung der Arbeit

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

Zugangstoken: " . $begutachterMitToken->zugangstoken . "

" : ""; + $zweitbetmaildata['bewertunglink'] = $paIsCurrent ? "

Zur Beurteilung der Arbeit

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

Zugangstoken: " . $begutachterMitToken->zugangstoken . "

" : ""; $mailres = sendSanchoMail( 'ParbeitsbeurteilungEndupload', diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php index 9ff92c6a8..553e3f03c 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php @@ -241,7 +241,7 @@ if (isset($_REQUEST["freigabe"]) && ($_REQUEST["freigabe"] == 1)) $name hat neue Noten für die Lehrveranstaltung\n\n
" . $sg->kuerzel . ' ' . $lv->semester . '.Semester - ' . $lv->bezeichnung . " " . $lv->orgform_kurzbz . " - " . $stsem . " + ' . $lv->bezeichnung . " - " .$lv->lehrform_kurzbz. " " . $lv->orgform_kurzbz . " - " . $stsem . "
eingetragen.\n

Die Noten können jetzt ins Zeugnis übernommen werden.\n"; diff --git a/cis/private/lehre/projektbeurteilungDocumentExport.php b/cis/private/lehre/projektbeurteilungDocumentExport.php new file mode 100644 index 000000000..08f7127ee --- /dev/null +++ b/cis/private/lehre/projektbeurteilungDocumentExport.php @@ -0,0 +1,26 @@ +getVorlage($_GET['projektarbeit_id'], $_GET['betreuerart_kurzbz']); + +if ($vorlage == null) + die("

".$projektarbeitVorlage->errormsg."

"); + +// weiterleiten auf Dokumentexport +header('Location: ' . APP_ROOT . '/cis/private/pdfExport.php?xml=projektarbeitsbeurteilung.xml.php' + .'&xsl='.$vorlage.'&betreuerart_kurzbz=' . $_GET['betreuerart_kurzbz'] + . '&projektarbeit_id=' . $_GET['projektarbeit_id'] . '&person_id=' . $_GET['person_id'] +); +die(); diff --git a/cis/private/pdfExport.php b/cis/private/pdfExport.php index ad2bb1fae..d4638d1bd 100644 --- a/cis/private/pdfExport.php +++ b/cis/private/pdfExport.php @@ -196,41 +196,35 @@ if (isset($_GET['output']) && $_GET['output'] != 'pdf') else $output = 'pdf'; -if (isset($_GET['xsl']) && ($_GET['xsl'] === 'Projektbeurteilung')) +// Berechtigungprüfung Projektarbeit +if (isset($_GET['projektarbeit_id'])) { - if (!isset($_GET['betreuerart_kurzbz']) || !isset($_GET['person_id']) || !isset($_GET['projektarbeit_id'])) - die('Fehlerhafte Parameteruebergabe'); + $projektarbeitVorlage = new projektarbeit(); + $allePaVorlagen = $projektarbeitVorlage->getAllVorlagen(); - $projektarbeit = new projektarbeit(); - $projektarbeit->load($_GET['projektarbeit_id']); + if (!is_array($allePaVorlagen)) + die("

Fehler beim Holen der Projektarbeit Vorlagen

"); - $betreuer = new person(); - $betreuer->getPersonFromBenutzer($user); - - //Überprüft ob es der Betreuer oder der Student ist - if ($betreuer->person_id !== $_GET['person_id'] && $projektarbeit->student_uid !== $user && !$rechte->isBerechtigt('assistenz')) - die("

Sie haben keine Berechtigung für diese Aktion.

"); - - switch ($_GET['betreuerart_kurzbz']) + if (in_array($xsl, $allePaVorlagen)) { - case 'Begutachter' : - case 'Senatsvorsitz' : - $xsl = 'ProjektBeurteilungBA'; - break; - case 'Erstbegutachter' : - $xsl = 'ProjektBeurteilungMAErst'; - break; - case 'Zweitbegutachter' : - $xsl = 'ProjektBeurteilungMAZweit'; - break; - } + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($user); - $allowed = true; + $projektarbeit = new projektarbeit(); + $projektarbeit->load($_GET['projektarbeit_id']); + + $betreuer = new person(); + $betreuer->getPersonFromBenutzer($user); + + //Überprüft ob es der Betreuer oder der Student ist + if ($betreuer->person_id !== $_GET['person_id'] && $projektarbeit->student_uid !== $user && !$rechte->isBerechtigt('assistenz')) + die("

Sie haben keine Berechtigung für diese Aktion.

"); + $paBerechtigt = true; + } } - $konto = new konto(); -if ((((isset($_GET["uid"]) && $user == $_GET["uid"])) || $rechte->isBerechtigt('admin')) || (isset($allowed) && $allowed === true)) +if (((isset($_GET["uid"]) && $user == $_GET["uid"])) || $rechte->isBerechtigt('admin') || (isset($paBerechtigt) && $paBerechtigt === true)) { $buchungstypen = array(); if (defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN")) diff --git a/include/projektarbeit.class.php b/include/projektarbeit.class.php index 783a0670b..c191550b7 100644 --- a/include/projektarbeit.class.php +++ b/include/projektarbeit.class.php @@ -16,8 +16,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * Authors: Christian Paminger , - * Andreas Oesterreicher and - * Rudolf Hangl . + * Andreas Oesterreicher and + * Rudolf Hangl . */ /** * Klasse projektarbeit @@ -27,7 +27,7 @@ require_once(dirname(__FILE__).'/basis_db.class.php'); class projektarbeit extends basis_db { - public $new; // boolean + public $new; // boolean public $result = array(); // adresse Objekt //Tabellenspalten @@ -59,6 +59,37 @@ class projektarbeit extends basis_db public $abgabedatum; + // Welche Version der Projektarbeit wird ab welchem Semester verwendet + private $_versions = array( + 'Diplom' => array( + 'SS2025' => 3, + 'SS2023' => 2, + 'SS2022' => 1 + ), + 'Others' => array( + 'SS2025' => 2, + 'SS2022' => 1 + ) + ); + + // welche Vorlagen werden ab welcher Projekarbeitsversion verwendet (0 - erste "default" Vorlage) + private $_projektarbeitVorlageMappings = array( + 'Begutachter' => array( + 2 => 'ProjektBeurteilungBAProzent', + 0 => 'ProjektBeurteilungBA' + ), + 'Senatsvorsitz' => array( + 2 => 'ProjektBeurteilungBAProzent', + 0 => 'ProjektBeurteilungBA' + ), + 'Erstbegutachter' => array( + 3 => 'ProjektBeurteilungMAProzent', + 0 => 'ProjektBeurteilungMAErst' + ), + 'Zweitbegutachter' => array( + 0 => 'ProjektBeurteilungMAZweit' + ) + ); /** * Konstruktor @@ -233,25 +264,25 @@ class projektarbeit extends basis_db $qry='BEGIN; INSERT INTO lehre.tbl_projektarbeit (projekttyp_kurzbz, titel, lehreinheit_id, student_uid, firma_id, note, punkte, beginn, ende, faktor, freigegeben, gesperrtbis, stundensatz, gesamtstunden, themenbereich, anmerkung, insertamum, insertvon, updateamum, updatevon, titel_english, final) VALUES('. - $this->db_add_param($this->projekttyp_kurzbz).', '. - $this->db_add_param($this->titel).', '. - $this->db_add_param($this->lehreinheit_id, FHC_INTEGER).', '. - $this->db_add_param($this->student_uid).', '. - $this->db_add_param($this->firma_id, FHC_INTEGER).', '. - $this->db_add_param($this->note).', '. - $this->db_add_param($this->punkte).', '. - $this->db_add_param($this->beginn).', '. - $this->db_add_param($this->ende).', '. - $this->db_add_param($this->faktor).', '. - $this->db_add_param($this->freigegeben, FHC_BOOLEAN).', '. - $this->db_add_param($this->gesperrtbis).', '. - $this->db_add_param($this->stundensatz).', '. - $this->db_add_param($this->gesamtstunden).', '. - $this->db_add_param($this->themenbereich).', '. - $this->db_add_param($this->anmerkung).', now(), '. - $this->db_add_param($this->insertvon).', now(), '. - $this->db_add_param($this->updatevon).','. - $this->db_add_param($this->titel_english).','. + $this->db_add_param($this->projekttyp_kurzbz).', '. + $this->db_add_param($this->titel).', '. + $this->db_add_param($this->lehreinheit_id, FHC_INTEGER).', '. + $this->db_add_param($this->student_uid).', '. + $this->db_add_param($this->firma_id, FHC_INTEGER).', '. + $this->db_add_param($this->note).', '. + $this->db_add_param($this->punkte).', '. + $this->db_add_param($this->beginn).', '. + $this->db_add_param($this->ende).', '. + $this->db_add_param($this->faktor).', '. + $this->db_add_param($this->freigegeben, FHC_BOOLEAN).', '. + $this->db_add_param($this->gesperrtbis).', '. + $this->db_add_param($this->stundensatz).', '. + $this->db_add_param($this->gesamtstunden).', '. + $this->db_add_param($this->themenbereich).', '. + $this->db_add_param($this->anmerkung).', now(), '. + $this->db_add_param($this->insertvon).', now(), '. + $this->db_add_param($this->updatevon).','. + $this->db_add_param($this->titel_english).','. $this->db_add_param($this->final, FHC_BOOLEAN).');'; } else @@ -471,92 +502,144 @@ class projektarbeit extends basis_db } /** - * Prüft ob Projektarbeit aktuell ist (ab bestimmtem Semester). - * Masterarbeiten sind ab der Änderung zur Gewichtung der Punkte aktuell, - * Bachelorarbeiten schon ab dem Umstieg auf das Online Beurteilungsformular. + * Prüft ob Projektarbeit aktuell ist (also zurzeit online bewertet wird). * @param $projektarbeit_id - * @return int -1 wenn Fehler, 0 wenn nicht aktuell, 1 wenn aktuell + * @return boolean */ public function projektarbeitIsCurrent($projektarbeit_id) { + $version = $this->getVersion($projektarbeit_id); // paarbeit sollte nur ab einem Studiensemester online bewertet werden - $qry="SELECT 1 - FROM lehre.tbl_projektarbeit - JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) - WHERE projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)." - AND - ( - ( - projekttyp_kurzbz = 'Diplom' - AND tbl_studiensemester.start::date >= ( - SELECT start - FROM public.tbl_studiensemester - WHERE studiensemester_kurzbz = 'SS2023' - )::date - ) - OR - ( - projekttyp_kurzbz <> 'Diplom' - AND tbl_studiensemester.start::date >= ( - SELECT start - FROM public.tbl_studiensemester - WHERE studiensemester_kurzbz = 'SS2022' - )::date - ) - ) - LIMIT 1"; - - $result_sem=$this->db_query($qry); - - if (!$result_sem) - { - $this->errormsg = "Fehler beim Ermitteln der Projektarbeit Aktualität"; - return -1; - } - - $num_rows = $this->db_num_rows($result_sem); - - if ($num_rows < 0) - { - $this->errormsg = "Fehler beim Ermitteln der Anzahl der aktuellen Projektarbeiten"; - } - - return $num_rows; + return $version === null ? null : $version->isCurrent; } /** - * Prüft ob Projektarbeit aktuell ist (ab bestimmtem Semester), vor der Änderung zur Gewichtung der Punkte. + * Holt sich Version der Projektarbeit. + * Liefert auch mit, ob die Version die aktuellste ist. + * z.B.: Masterarbeiten waren ab der Änderung zur Gewichtung der Punkte aktuell, + * Bachelorarbeiten waren ab dem Umstieg auf das Online Beurteilungsformular aktuell. * @param $projektarbeit_id - * @return int -1 wenn Fehler, 0 wenn nicht aktuell, 1 wenn aktuell + * @return objekt mit Versionsinfo, null im Fehlerfall */ - public function projektarbeitIsCurrentBeforeWeightening($projektarbeit_id) + public function getVersion($projektarbeit_id) { // paarbeit sollte nur ab einem Studiensemester online bewertet werden - $qry="SELECT 1 - FROM lehre.tbl_projektarbeit + $qry=" + SELECT + CASE + WHEN semesters_diplom.studiensemester_kurzbz IS NOT NULL + THEN semesters_diplom.studiensemester_kurzbz + ELSE semesters.studiensemester_kurzbz + END AS version_studiensemester_kurzbz, + pa.projekttyp_kurzbz + FROM + lehre.tbl_projektarbeit pa JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) - WHERE projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)." - AND tbl_studiensemester.start::date >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2022')::date - LIMIT 1"; + JOIN public.tbl_studiensemester sem USING(studiensemester_kurzbz) + LEFT JOIN ( + SELECT + start, studiensemester_kurzbz + FROM + public.tbl_studiensemester + WHERE + studiensemester_kurzbz IN (".$this->db_implode4SQL(array_keys($this->_versions['Others'])).") + ) semesters ON sem.start >= semesters.start AND pa.projekttyp_kurzbz <> 'Diplom' + LEFT JOIN ( + SELECT + start, studiensemester_kurzbz + FROM + public.tbl_studiensemester + WHERE + studiensemester_kurzbz IN (".$this->db_implode4SQL(array_keys($this->_versions['Diplom'])).") + ) semesters_diplom ON sem.start >= semesters_diplom.start AND pa.projekttyp_kurzbz = 'Diplom' + WHERE + projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)." + ORDER BY + semesters.start DESC, semesters_diplom.start DESC + LIMIT 1"; - $result_sem=$this->db_query($qry); + $errormsg = "Fehler beim Ermitteln der Projektarbeit Version"; - if (!$result_sem) + if ($this->db_query($qry)) { - $this->errormsg = "Fehler beim Ermitteln der Projektarbeit Aktualität"; - return -1; + if ($row = $this->db_fetch_object()) + { + // known project types + if (isset($this->_versions[$row->projekttyp_kurzbz][$row->version_studiensemester_kurzbz])) + { + $row->versionNumber = $this->_versions[$row->projekttyp_kurzbz][$row->version_studiensemester_kurzbz]; + $row->isCurrent = + $this->_versions[$row->projekttyp_kurzbz][$row->version_studiensemester_kurzbz] + == max($this->_versions[$row->projekttyp_kurzbz]); + + } + elseif (isset($this->_versions['Others'][$row->version_studiensemester_kurzbz])) + { + $row->versionNumber = $this->_versions['Others'][$row->version_studiensemester_kurzbz]; + $row->isCurrent = + $this->_versions['Others'][$row->version_studiensemester_kurzbz] + == max($this->_versions['Others']); + } + else + { + $row->isCurrent = false; + $row->versionNumber = 0; + } + return $row; + } + else + { + $this->errormsg = $errormsg; + return null; + } + } + else + { + $this->errormsg = $errormsg; + return null; + } + } + + /** + * Holt Version einer Projektarbeit für eine Betreuerart. + * @param $projektarbeit_id + * @param $betreuerart_kurzbz + * @return string Vorlagenname + */ + public function getVorlage($projektarbeit_id, $betreuerart_kurzbz) + { + $version = $this->getVersion($projektarbeit_id); + + if ($version == null) return null; + + $key = 0; + if (isset($this->_projektarbeitVorlageMappings[$betreuerart_kurzbz])) + { + foreach ($this->_projektarbeitVorlageMappings[$betreuerart_kurzbz] as $versionNumber => $vorlage) + { + if ($versionNumber <= $version->versionNumber && $versionNumber > $key) $key = $versionNumber; + } } - $num_rows = $this->db_num_rows($result_sem); + return + isset($this->_projektarbeitVorlageMappings[$betreuerart_kurzbz][$key]) + ? $this->_projektarbeitVorlageMappings[$betreuerart_kurzbz][$key] + : ''; + } - if ($num_rows < 0) + /** + * Holt alle möglichen, jemals verwendeten Projektarbeits-Vorlagen + * @return array mit Vorlagennamen + */ + public function getAllVorlagen() + { + $vorlagen = array(); + foreach ($this->_projektarbeitVorlageMappings as $mappings) { - $this->errormsg = "Fehler beim Ermitteln der Anzahl der aktuellen Projektarbeiten"; + $vorlagen = array_unique(array_merge($vorlagen, $mappings)); } - return $num_rows; + return $vorlagen; } } ?> diff --git a/locale/de-AT/abgabetool.php b/locale/de-AT/abgabetool.php index aae3ca2de..18f413b74 100644 --- a/locale/de-AT/abgabetool.php +++ b/locale/de-AT/abgabetool.php @@ -1,6 +1,7 @@ phrasen['abgabetool/abgabetool']='Abgabetool'; $this->phrasen['abgabetool/aeltereParbeitBenoten']='Projektarbeit für älteres Semester, bitte Word-Formular zur Benotung verwenden!'; +$this->phrasen['abgabetool/aeltereParbeitBenotenQuickInfo']='Projektarbeit für älteres Semester, bitte Word-Formular zur Benotung verwenden!'; $this->phrasen['abgabetool/keinEnduploadErfolgt']='Endupload ist noch nicht erfolgt'; $this->phrasen['abgabetool/typ']='Typ'; $this->phrasen['abgabetool/titel']='Titel'; diff --git a/locale/en-US/abgabetool.php b/locale/en-US/abgabetool.php index c13ebd90d..1c2b7c142 100644 --- a/locale/en-US/abgabetool.php +++ b/locale/en-US/abgabetool.php @@ -1,6 +1,7 @@ phrasen['abgabetool/abgabetool']='Submission tool'; $this->phrasen['abgabetool/aeltereParbeitBenoten']='Thesis handed in for older semester, please use word form for assessment!'; +$this->phrasen['abgabetool/aeltereParbeitBenotenQuickInfo']='Thesis handed in for older semester, please use word form for assessment!'; $this->phrasen['abgabetool/keinEnduploadErfolgt']='Final version not uploaded yet'; $this->phrasen['abgabetool/typ']='Type'; $this->phrasen['abgabetool/titel']='Title'; diff --git a/locale/it-IT/abgabetool.php b/locale/it-IT/abgabetool.php index f7e7d9cf9..eecadfd5e 100644 --- a/locale/it-IT/abgabetool.php +++ b/locale/it-IT/abgabetool.php @@ -1,6 +1,7 @@ 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/aeltereParbeitBenotenQuickInfo']='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/dbupdate_3.4.php b/system/dbupdate_3.4.php index 190cc3850..b6712840b 100644 --- a/system/dbupdate_3.4.php +++ b/system/dbupdate_3.4.php @@ -192,7 +192,7 @@ $tabellen=array( "fue.tbl_ressource" => array("ressource_id","student_uid","mitarbeiter_uid","betriebsmittel_id","firma_id","bezeichnung","beschreibung","insertamum","insertvon","updateamum","updatevon"), "fue.tbl_scrumteam" => array("scrumteam_kurzbz","bezeichnung","punkteprosprint","tasksprosprint","gruppe_kurzbz"), "fue.tbl_scrumsprint" => array("scrumsprint_id","scrumteam_kurzbz","sprint_kurzbz","sprintstart","sprintende","insertamum","insertvon","updateamum","updatevon"), - "hr.tbl_sachaufwand" => array("sachaufwand_id","mitarbeiter_uid","sachaufwandtyp_kurzbz","dienstverhaeltnis_id","beginn","ende","anmerkung","insertamum","insertvon","updateamum","updatevon"), + "hr.tbl_sachaufwand" => array("sachaufwand_id","mitarbeiter_uid","sachaufwandtyp_kurzbz","dienstverhaeltnis_id","beginn","ende","anmerkung","insertamum","insertvon","updateamum","updatevon","betrag"), "hr.tbl_sachaufwandtyp" => array("sachaufwandtyp_kurzbz","bezeichnung","sort", "aktiv"), "hr.tbl_stundensatz" => array("stundensatz_id","uid","stundensatztyp","stundensatz","oe_kurzbz","gueltig_von","gueltig_bis","insertamum","insertvon","updateamum","updatevon"), "hr.tbl_stundensatztyp" => array("stundensatztyp","bezeichnung","aktiv","insertamum","insertvon","updateamum","updatevon"), diff --git a/system/dbupdate_3.4/28260_vertraege.php b/system/dbupdate_3.4/28260_vertraege.php index 9ce2ba29b..073b53c18 100644 --- a/system/dbupdate_3.4/28260_vertraege.php +++ b/system/dbupdate_3.4/28260_vertraege.php @@ -605,4 +605,21 @@ if ($result = $db->db_query("SELECT * FROM information_schema.columns WHERE colu else echo 'Spalte gehaltsbestandteil_bis wurde in hr.tbl_gehaltshistorie neu erstellt
'; } +} + +if ($result = $db->db_query("SELECT * FROM information_schema.columns WHERE column_name='betrag' AND table_name='tbl_sachaufwand' AND table_schema='hr'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = " + ALTER TABLE + hr.tbl_sachaufwand + ADD COLUMN + betrag numeric(9,2) + "; + if (! $db->db_query($qry)) + echo 'Vertraege: ' . $db->db_last_error() . '
'; + else + echo 'Spalte betrag wurde in hr.tbl_sachaufwand neu erstellt
'; + } } \ No newline at end of file diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 80eec0d29..cd17215ee 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -10227,13 +10227,13 @@ Any unusual occurrences 'phrases' => array( array( 'sprache' => 'German', - 'text' => 'Der Plagiatscheck wurde durchgeführt und bestätigt, dass der zentrale Inhalt der Arbeit im erforderlichen Ausmaß eigenständig verfasst wurde (vgl. Satzungsteil Studienrechtliche Bestimmungen / Prüfungsordnung, § 18 Abs. 2 und 3).', + 'text' => 'Der Plagiatscheck wurde durchgeführt und bestätigt, dass der zentrale Inhalt der Arbeit im erforderlichen Ausmaß eigenständig verfasst wurde (vgl. Satzungsteil Studienrechtliche Bestimmungen / Prüfungsordnung, § 20 Abs. 2 und 3).', 'description' => '', 'insertvon' => 'system' ), array( 'sprache' => 'English', - 'text' => 'The plagiarism check has been carried out and confirms that the central content of the thesis has been written independently to the required extent (cf. part of the Statutes on Studies Act Provisions / Examination Regulations, § 18 Para. 2 and 3).', + 'text' => 'The plagiarism check has been carried out and confirms that the central content of the thesis has been written independently to the required extent (cf. part of the Statutes on Studies Act Provisions / Examination Regulations, § 20 Para. 2 and 3).', 'description' => '', 'insertvon' => 'system' ) @@ -40954,7 +40954,447 @@ array( 'insertvon' => 'system' ) ) + ), + // PROJEKTARBEITSBEURTEILUNG SS2025 PHRASEN --------------------------------------------------------------------------- + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'maxPunkte', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Max. Punkte', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Max. points', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'bewertung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Erfüllungsgrad (Prozent) zum Ausfüllen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Degree of Fulfilment (Percentage) to Fill In', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'details', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Details (angemessener und korrekter Einsatz von +Werkzeugen und Technologien in jedem Schritt)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Details +(appropriate and correct use of tools and technologies at each step)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'problemstellungZieldefinition', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Problemstellung und Zieldefinition', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Problem Definition and Objective Setting', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'problemstellungZieldefinitionText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Problemstellung ist klar und präzise definiert und in einen wissenschaftlichen Kontext eingebettet. +Die Zielsetzung sowie eventuelle Messgrößen sind eindeutig formuliert.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The problem is clearly and precisely defined and embedded in a scientific context. +The objective, along with any potential metrics, is clearly formulated.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'methodikLoesungsansatz', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Methodik und Lösungsansatz', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Methodology and Approach', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'methodikLoesungsansatzText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Das methodische Vorgehen ist logisch und nachvollziehbar strukturiert, passend zur Zielsetzung, +und die angewandten Methoden sind korrekt und fundiert umgesetzt. +Die Methodik ist fachspezifisch angemessen, literaturbasiert begründet und wissenschaftlich vertretbar.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The methodological approach is logically and comprehensively structured, +aligned with the objective, and the applied methods are implemented correctly and soundly. +The methodology is appropriate to the field, justified based on literature, and scientifically valid.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'ergebnisseDiskussion', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ergebnisse und Diskussion', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Results and Discussion', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'ergebnisseDiskussionText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Qualität der Lösung ist bezogen auf die Zielsetzung ausreichend. + Die Ergebnisse werden fundiert analysiert und in Bezug auf die Zielsetzung schlüssig interpretiert. + Die Diskussion reflektiert die Relevanz und Grenzen der Ergebnisse kritisch und ist logisch strukturiert.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The quality of the solution sufficiently meets the objective. +The results are thoroughly analyzed and coherently interpreted with respect to the objective. +The discussion critically reflects on the relevance and limitations of the results and is logically structured.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'strukturAufbau', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Struktur und Aufbau', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Structure and Organization', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'strukturAufbauText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Arbeit folgt einer logischen, klaren Gliederung und einem konsistenten roten Faden. +Verzeichnisse, Grafiken, Tabellen und der Text sind gemäß den aktuell gültigen wissenschaftlichen Richtlinien der FH Technikum Wien aufbereitet.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The work follows a logical and clear outline with a consistent narrative thread. +Directories, graphics, tables, and text are prepared in accordance with the currently valid scientific guidelines of FH Technikum Wien.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'stilAusdruck', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Stil und Ausdruck', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Style and Expression', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'stilAusdruckText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Der sprachliche Ausdruck ist präzise, +fachlich korrekt und erfüllt die Anforderungen an gendergerechte Sprache gemäß den geltenden Richtlinien der FH Technikum Wien.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The linguistic expression is precise, professionally accurate, +and meets the requirements of gender-sensitive language as per the applicable guidelines of FH Technikum Wien.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zitierregelnQuellenangaben', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Zitierregeln und Quellenangaben', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Citation Rules and References', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zitierregelnQuellenangabenText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Umfang, Qualität und Aktualität der verarbeiteten Quellen sind angemessen +und repräsentieren den aktuellen Stand der Forschung zum Thema. Die Zitierregeln (IEEE oder Harvard) werden konsequent und korrekt angewendet.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The scope, quality, and timeliness of the sources processed are appropriate +and represent the current state of research on the topic. The prescribed citation rules are consistently and correctly applied.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'notenschluesselHinweisGewichtungEinzeln', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Jedes Kriterium muss mit mind. 50% bewertet werden, sonst ist die gesamte Arbeit negativ.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Each criterion must receive a minimum score of 50%; otherwise, the entire work is rated negatively.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'gesamtkommentar', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Gesamtkommentar', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Overall comment', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'gesamtkommentarVerpflichtend', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Gesamtkommentar verpflichtend auszufüllen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'An overall comment is mandatory and must be completed', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'eingabefeld', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Eingabefeld', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Input field', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'universitaetLogo', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Universitätslogo', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'University logo', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'textEingabefeldBewertung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Text-Eingabefeld zur Bewertung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Text inut field for assessment', + 'description' => '', + 'insertvon' => 'system' + ) + ) ) + // PROJEKTARBEITSBEURTEILUNG SS2025 ENDE --------------------------------------------------------------------------- );
".$p->t('abgabetool/student').": ".$db->convert_html_chars($studentenname).""; -$semester_benotbar = $paIsCurrent >= 1; +$semester_benotbar = $paIsCurrent === true; $endupload_vorhanden = $num_rows_endupload >= 1; if ($semester_benotbar && $endupload_vorhanden) @@ -495,7 +495,8 @@ if ($semester_benotbar && $endupload_vorhanden) } else { - $quick_info = !$semester_benotbar ? $p->t('abgabetool/aeltereParbeitBenoten') : $p->t('abgabetool/keinEnduploadErfolgt'); + $quick_info = !$semester_benotbar ? $p->t('abgabetool/aeltereParbeitBenotenQuickInfo') : $p->t('abgabetool/keinEnduploadErfolgt'); + $info_text = !$semester_benotbar ? $p->t('abgabetool/aeltereParbeitBenoten') : $p->t('abgabetool/keinEnduploadErfolgt'); $htmlstr .= "
"; $htmlstr .= ""; @@ -516,7 +517,7 @@ else } $htmlstr .= "
" . $p->t('abgabetool/titel') . ": ".$db->convert_html_chars($titel)."".(isset($quick_info) ? $quick_info : '')."".(isset($info_text) ? $info_text : '')." ".$p->t('abgabetool/studentenansicht')."
"; if (!is_null($row->babgeschickt)) - $htmlstr .= "".$p->t('abgabetool/projektbeurteilungErstDownload').""; + $htmlstr .= "".$p->t('abgabetool/projektbeurteilungErstDownload').""; if (!is_null($row->babgeschickt) && !is_null($row->zweitbetreuer_abgeschickt)) $htmlstr .= "/"; if (!is_null($row->zweitbetreuer_abgeschickt)) - $htmlstr .= "".$p->t('abgabetool/projektbeurteilungZweitDownload').""; + $htmlstr .= "".$p->t('abgabetool/projektbeurteilungZweitDownload').""; $htmlstr .= "