From a86111a8032d1d4c3ae70ccb43afb9c5ff508989 Mon Sep 17 00:00:00 2001 From: Gerald Raab Date: Mon, 2 Jul 2018 15:21:52 +0200 Subject: [PATCH 01/17] Timesheet: Ersatzruhe, LehreExtern, Dienstreise --- cis/private/tools/zeitaufzeichnung.php | 64 +++++++++++++++++++++++--- include/zeitaufzeichnung.class.php | 60 +++++++++++++++++++++++- locale/de-AT/zeitaufzeichnung.php | 2 +- locale/en-US/zeitaufzeichnung.php | 2 +- 4 files changed, 118 insertions(+), 10 deletions(-) mode change 100644 => 100755 locale/de-AT/zeitaufzeichnung.php mode change 100644 => 100755 locale/en-US/zeitaufzeichnung.php diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 9507b0f89..46842aab8 100755 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -91,12 +91,12 @@ $fieldheadings = array( if ($rechte->isBerechtigt('basis/servicezeitaufzeichnung')) { $za_simple = 0; - $activities = array('Design', 'Operativ', 'Betrieb', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'Dienstreise', 'Behoerde', 'Ersatzruhe'); + $activities = array('Design', 'Operativ', 'Betrieb', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe'); } else { $za_simple = 1; - $activities = array('Arbeit', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'Dienstreise', 'Behoerde', 'Ersatzruhe'); + $activities = array('Arbeit', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe'); } $activities_str = "'".implode("','", $activities)."'"; @@ -415,9 +415,13 @@ echo ' bisDatum=Jahr+\'\'+Monat+\'\'+Tag+\'\'+Stunde+\'\'+Minute; diff=bisDatum-vonDatum; + a = document.getElementById("aktivitaet"); + akt = a.options[a.selectedIndex].value; + //alert(akt); + if (bisDatum>vonDatum) { - if (diff>9999) + if (diff>9999 && akt != "DienstreiseMT") { Check = confirm("'.$p->t("zeitaufzeichnung/zeitraumAuffallendHoch").'"); document.getElementById("bis_datum").focus(); @@ -741,7 +745,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) // An der FHTW wird ins Moodle verlinkt if (CAMPUS_NAME == 'FH Technikum Wien') echo '

'.$p->t("zeitaufzeichnung/handbuchZeitaufzeichnung").'

'; - else + else echo '

'.$p->t("zeitaufzeichnung/handbuchZeitaufzeichnung").'

'; } if ($p->t("dms_link/fiktiveNormalarbeitszeit")!='') @@ -904,7 +908,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) // $qry = "SELECT * FROM fue.tbl_aktivitaet where sort != 5 or sort is null ORDER by sort,beschreibung"; if($result = $db->db_query($qry)) { - echo ''; if ($za_simple == 0) echo ''; //else @@ -1077,6 +1081,11 @@ if($projekt->getProjekteMitarbeiter($user, true)) } $summe=0; + $dr = new zeitaufzeichnung(); + $dr->getDienstreisenUser($user); + $dr_arr = $dr->result; + + //var_dump($dr->result); if(count($za->result)>0) { @@ -1108,6 +1117,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) $wochensaldo = '00:00'; $pflichtpause = false; + foreach($za->result as $row) { $datumtag = $datum_obj->formatDatum($row->datum, 'Y-m-d'); @@ -1119,6 +1129,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) $tag = $datumtag; if($tag!=$datumtag) { + //if ($row->uid) //{ if ($datum->formatDatum($tag,'N') == '6' || $datum->formatDatum($tag,'N') == '7') @@ -1188,9 +1199,11 @@ if($projekt->getProjekteMitarbeiter($user, true)) '.$tagessaldo.$erstr.'
'.date('H:i', ($pausesumme-3600)).' '; if ($tag > $sperrdatum) - echo '<-'; + echo '<-'; + + echo ''; + - echo ''; $tag=$datumtag; $tagessumme='00:00'; @@ -1207,6 +1220,9 @@ if($projekt->getProjekteMitarbeiter($user, true)) //{ // echo ''.$datum->formatDatum($row->datum,'D d.m.Y').' '; //} + + + } // Nach jeder Woche eine Summenzeile einfuegen und eine neue Tabelle beginnen $datumwoche = $datum_obj->formatDatum($row->datum, 'W'); @@ -1251,6 +1267,37 @@ if($projekt->getProjekteMitarbeiter($user, true)) $ersumme = '00:00'; $ersumme_woche = '00:00'; } + + // Diestreisen NEU + if (array_key_exists($datumtag, $dr_arr)) + { + $colspan=($za_simple)?4:7; + echo ''.$p->t('zeitaufzeichnung/dienstreise'); + if (array_key_exists('start', $dr_arr[$datumtag]) && !array_key_exists('ende', $dr_arr[$datumtag])) + echo ' '.$p->t('global/beginn'); + if (array_key_exists('ende', $dr_arr[$datumtag]) && !array_key_exists('start', $dr_arr[$datumtag])) + echo ' '.$p->t('global/ende'); + echo ''; + echo ''; + if (array_key_exists('start', $dr_arr[$datumtag])) + echo $dr_arr[$datumtag]['start']; + echo ''; + if (array_key_exists('ende', $dr_arr[$datumtag])) + echo $dr_arr[$datumtag]['ende']; + echo ''; + echo ''; + echo ''; + if(!isset($_GET['filter']) && ($datumtag > $sperrdatum)) + echo ''.$p->t("global/bearbeiten").''; + echo "\n"; + echo ""; + if(!isset($_GET['filter']) && ($datumtag > $sperrdatum)) + echo ''.$p->t("global/loeschen").''; + echo "\n"; + echo ''; + unset($dr_arr[$datumtag]); + } + if ($row->uid) { $wochensumme = $datum_obj->sumZeit($wochensumme, $row->diff); @@ -1314,8 +1361,11 @@ if($projekt->getProjekteMitarbeiter($user, true)) if ($row->aktivitaet_kurzbz == 'LehreExtern') $extlehrearr[] = array("start"=>$row->start, "ende"=>$row->ende, "diff"=>$row->diff); } + } echo ''; + + if ($alle===false) { echo ' diff --git a/include/zeitaufzeichnung.class.php b/include/zeitaufzeichnung.class.php index 07c87cf50..fdd0bcdc1 100755 --- a/include/zeitaufzeichnung.class.php +++ b/include/zeitaufzeichnung.class.php @@ -487,7 +487,7 @@ class zeitaufzeichnung extends basis_db $where = "uid=".$this->db_add_param($user); if ($days!='') $where.= " AND ende>(now() - INTERVAL '".$days." days')"; - $where_join = "and z.uid=".$this->db_add_param($user); + $where_join = "and z.aktivitaet_kurzbz != 'DienstreiseMT' and z.uid=".$this->db_add_param($user); if ($days!='') $where_join.= " AND z.ende>(now() - INTERVAL '".$days." days')"; if ($days=='') @@ -540,6 +540,64 @@ class zeitaufzeichnung extends basis_db } } + /** + * Laedt die Zeitaufzeichnungen eines Users aufgefüllt mit lehren Tagen. + * Default: Die letzten 40 Tage + * @param string $user + * @param integer $days deafult: 40 Tage + */ + public function getDienstreisenUser($user, $days='40') + { + $where = "uid=".$this->db_add_param($user); + if ($days!='') + $where.= " AND ende>(now() - INTERVAL '".$days." days')"; + $where .= " AND aktivitaet_kurzbz = 'DienstreiseMT'"; + $qry = "SELECT + zeitaufzeichnung_id, start::date as starttag, TO_CHAR(start, 'HH24:MI') as startzeit, ende::date as endtag, TO_CHAR(ende, 'HH24:MI') as endzeit + FROM campus.tbl_zeitaufzeichnung + where $where + ORDER BY ende DESC + "; + + if($result = $this->db_query($qry)) + { + $dr_arr = array(); + while($row = $this->db_fetch_object($result)) + { + if (array_key_exists($row->starttag, $dr_arr)) + { + $dr_arr[$row->starttag]['start'] = $row->startzeit; + $dr_arr[$row->starttag]['id'] = $row->zeitaufzeichnung_id; + } + else + { + $dr_arr[$row->starttag] = array(); + $dr_arr[$row->starttag]['start'] = $row->startzeit; + $dr_arr[$row->starttag]['id'] = $row->zeitaufzeichnung_id; + } + if (array_key_exists($row->endtag, $dr_arr)) + { + $dr_arr[$row->endtag]['ende'] = $row->endzeit; + $dr_arr[$row->endtag]['id'] = $row->zeitaufzeichnung_id; + } + else + { + $dr_arr[$row->endtag] = array(); + $dr_arr[$row->endtag]['ende'] = $row->endzeit; + $dr_arr[$row->endtag]['id'] = $row->zeitaufzeichnung_id; + } + + $this->result = $dr_arr; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + /** * Löscht sämtliche Einträge eines Users für einen Tag * @param string $user diff --git a/locale/de-AT/zeitaufzeichnung.php b/locale/de-AT/zeitaufzeichnung.php old mode 100644 new mode 100755 index 9a475bc1d..e3a156469 --- a/locale/de-AT/zeitaufzeichnung.php +++ b/locale/de-AT/zeitaufzeichnung.php @@ -57,4 +57,4 @@ $this->phrasen['zeitaufzeichnung/stunden']='Stunden'; $this->phrasen['zeitaufzeichnung/taetigkeit']='Tätigkeit'; $this->phrasen['zeitaufzeichnung/keineprojekte']='keine Projekte vorhanden'; $this->phrasen['zeitaufzeichnung/summe']='Summe:'; -?> +$this->phrasen['zeitaufzeichnung/dienstreise']='Dienstreise'; diff --git a/locale/en-US/zeitaufzeichnung.php b/locale/en-US/zeitaufzeichnung.php old mode 100644 new mode 100755 index e7e92fa11..692e4f5b1 --- a/locale/en-US/zeitaufzeichnung.php +++ b/locale/en-US/zeitaufzeichnung.php @@ -57,4 +57,4 @@ $this->phrasen['zeitaufzeichnung/stunden']='Hours'; $this->phrasen['zeitaufzeichnung/taetigkeit']='Activity'; $this->phrasen['zeitaufzeichnung/keineprojekte']='no projects exist'; $this->phrasen['zeitaufzeichnung/summe']='Sum:'; -?> \ No newline at end of file +$this->phrasen['zeitaufzeichnung/dienstreise']='Business Trip'; From 88cfc3265e59c902667ead24d98a2109d0ae4578 Mon Sep 17 00:00:00 2001 From: Gerald Raab Date: Thu, 9 Aug 2018 15:48:21 +0200 Subject: [PATCH 02/17] Lock entry per user if has submitted timesheets --- cis/private/tools/zeitaufzeichnung.php | 8 ++++- include/zeitaufzeichnung.class.php | 43 ++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 46842aab8..2bf367449 100755 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -102,11 +102,16 @@ else $activities_str = "'".implode("','", $activities)."'"; // definiert bis zu welchem Datum die Eintragung nicht mehr möglich ist -if (defined('CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS') && CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS != '') +$zasperre = new zeitaufzeichnung(); +if ($sperrdat = $zasperre->getEintragungGesperrtBisForUser($user)) + $gesperrt_bis = $sperrdat; +else if (defined('CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS') && CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS != '') $gesperrt_bis = CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS; else $gesperrt_bis = '2015-08-31'; +//var_dump($gesperrt_bis); + $sperrdatum = date('c', strtotime($gesperrt_bis)); // Uses urlencode to avoid XSS issues @@ -1506,4 +1511,5 @@ function getZeitaufzeichnung($user, $von, $bis) $za->getListeUserFromTo($user, $von, $bis); return $za; } + ?> diff --git a/include/zeitaufzeichnung.class.php b/include/zeitaufzeichnung.class.php index fdd0bcdc1..858a5a0c5 100755 --- a/include/zeitaufzeichnung.class.php +++ b/include/zeitaufzeichnung.class.php @@ -742,5 +742,48 @@ or not exists return $lehre_arr; } + + /** + * Holt das Datum bis zu dem die Eintragung für einen bestimmten User gesperrt ist + * @param string $user + * @return string $tag Y-m-d or false + */ + + public function getEintragungGesperrtBisForUser($user) + { + //check if addon casetime is installed + $qrytable = " + SELECT EXISTS( + SELECT * + FROM information_schema.tables + WHERE + table_schema = 'addon' AND + table_name = 'tbl_casetime_timesheet' + ); + "; + + $res = $this->db_query($qrytable); + if ($this->db_fetch_row($res)[0]) + { + //check if sent timesheets for the UID exist + $where = "uid=".$this->db_add_param($user); + + $qry = "select max(datum) from addon.tbl_casetime_timesheet where ".$where." and abgeschicktamum is not null"; + + if($result = $this->db_query($qry)) + { + $datum = $this->db_fetch_object($result); + return $datum->max; + } + else + { + return false; + } + } + else + { + return false; + } + } } ?> From 20993b006abd2fefc3d81a7183fe6a8685ad59f5 Mon Sep 17 00:00:00 2001 From: Gerald Raab Date: Fri, 24 Aug 2018 11:46:09 +0200 Subject: [PATCH 03/17] bool check, ob addon-tabelle existiert --- include/zeitaufzeichnung.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/zeitaufzeichnung.class.php b/include/zeitaufzeichnung.class.php index 858a5a0c5..bf90bea4b 100755 --- a/include/zeitaufzeichnung.class.php +++ b/include/zeitaufzeichnung.class.php @@ -763,7 +763,7 @@ or not exists "; $res = $this->db_query($qrytable); - if ($this->db_fetch_row($res)[0]) + if ($this->db_fetch_row($res)[0]===true) { //check if sent timesheets for the UID exist $where = "uid=".$this->db_add_param($user); From 588c6e5de5898fa9e3e1914fec62960802096b96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 28 Aug 2018 09:55:17 +0200 Subject: [PATCH 04/17] DMS Upload Permissions moved to Class --- content/akteupload.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/content/akteupload.php b/content/akteupload.php index 729454046..d29be6670 100644 --- a/content/akteupload.php +++ b/content/akteupload.php @@ -60,12 +60,8 @@ if(isset($_POST['submitbild'])) if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) { - if(!chgrp($uploadfile,'dms')) - echo 'CHGRP failed'; - if(!chmod($uploadfile, 0774)) - echo 'CHMOD failed'; - $dms = new dms(); + $dms->setPermission($uploadfile); $dms->version='0'; $dms->kategorie_kurzbz=$kategorie_kurzbz; From 9fbb7f78a68fb774d50cdb77918c72e8988e908f Mon Sep 17 00:00:00 2001 From: Nikolaus Krondraf Date: Wed, 29 Aug 2018 09:31:16 +0200 Subject: [PATCH 05/17] add kurzbzlang of Studiengang to student array --- cis/private/lehre/anwesenheitsliste.pdf.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cis/private/lehre/anwesenheitsliste.pdf.php b/cis/private/lehre/anwesenheitsliste.pdf.php index 80d823a4f..eef40ff3f 100644 --- a/cis/private/lehre/anwesenheitsliste.pdf.php +++ b/cis/private/lehre/anwesenheitsliste.pdf.php @@ -166,7 +166,7 @@ $qry = 'SELECT tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe, (SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status, tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student, - tbl_zeugnisnote.note, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr + tbl_zeugnisnote.note, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_studiengang.kurzbzlang FROM campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid) @@ -174,6 +174,7 @@ $qry = 'SELECT LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz) LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz) LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid) + LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz) WHERE vw_student_lehrveranstaltung.lehrveranstaltung_id='.$db->db_add_param($lvid, FHC_INTEGER).' AND vw_student_lehrveranstaltung.studiensemester_kurzbz='.$db->db_add_param($studiensemester); @@ -229,7 +230,8 @@ if($result = $db->db_query($qry)) 'semester'=>$row->semester, 'verband'=>trim($row->verband), 'gruppe'=>trim($row->gruppe), - 'zusatz'=>$zusatz + 'zusatz'=>$zusatz, + 'studiengang_kurzbz'=>$row->kurzbzlang )); } } From f42986ce39e67c4f4d6ded5f7d983f3c44feb66f Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Wed, 29 Aug 2018 11:27:07 +0200 Subject: [PATCH 06/17] =?UTF-8?q?=C3=9Cberarbeitung=20Dokumente.php?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Übersichtlichere Gliederung - Keine Extra-Seite mehr für Studienerfolgsbestätigung --- cis/private/profile/dokumente.php | 223 +++++++++++++----- .../profile/studienerfolgsbestaetigung.php | 114 --------- locale/de-AT/tools.php | 11 + locale/en-US/tools.php | 11 + 4 files changed, 184 insertions(+), 175 deletions(-) delete mode 100644 cis/private/profile/studienerfolgsbestaetigung.php diff --git a/cis/private/profile/dokumente.php b/cis/private/profile/dokumente.php index b1f6f9442..395036f44 100644 --- a/cis/private/profile/dokumente.php +++ b/cis/private/profile/dokumente.php @@ -46,7 +46,7 @@ $uid=get_uid(); if(isset($_GET['uid'])) { - // Administratoren duerfen die UID als Parameter uebergeben um die Notenliste + // Administratoren duerfen die UID als Parameter uebergeben um die Dokumente // von anderen Personen anzuzeigen $rechte = new benutzerberechtigung(); @@ -105,7 +105,7 @@ if(isset($_GET['action']) && $_GET['action']=='download') echo ' - '.$p->t('tools/dokumente').' + '.$p->t('tools/bestaetigungenZeugnisse').' '; include('../../../include/meta/jquery.php'); @@ -113,25 +113,59 @@ echo ' echo ' + -

'.$p->t('tools/dokumente').'

- -

Bestätigungen

'; +

'.$p->t('tools/bestaetigungenZeugnisse').'

'; $prestudent = new prestudent(); $prestudent->getPrestudentRolle($student_studiengang->prestudent_id); @@ -155,8 +189,13 @@ if($stsem == '') $stsem_obj->getAll(); */ echo $p->t('global/studiensemester'); -echo ' '; +if (!in_array($stsem, $stsem_arr)) +{ + echo ''; +} foreach ($stsem_arr as $semrow) { if ($stsem == $semrow) @@ -174,61 +213,106 @@ foreach ($stsem_arr as $semrow) } echo '

'; -$konto = new konto(); - -$buchungstypen = array(); -if (defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN")) -{ - $buchungstypen = unserialize (CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN); -} - -$stsem_zahlung = $konto->getLastStSemBuchungstypen($uid, $buchungstypen, $stsem); -if ($stsem_zahlung != FALSE && $stsem == $stsem_zahlung) -{ - $path = "../pdfExport.php?xsl=Inskription&xml=student.rdf.php&ss=".$stsem."&uid=".$uid."&xsl_stg_kz=".$xsl_stg_kz; - echo ''.$p->t('tools/inskriptionsbestaetigung').''; - echo ' - '.$p->t('tools/studienbeitragFuerSSBezahlt',array($stsem)); - echo '

'; -} -else -{ - echo $p->t('tools/inskriptionsbestaetigung'); - echo ' - '.$p->t('tools/studienbeitragFuerSSNochNichtBezahlt',array($stsem)); - echo '

'; -} - -if (defined('CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN') && CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN) +// Wenn es für das übergebene Studiensemester keinen PreStudentStatus gibt, werden nur Abschlussdokumente angezeigt +if (in_array($stsem, $stsem_arr)) { + $konto = new konto(); + + $buchungstypen = array(); + if (defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN")) + { + $buchungstypen = unserialize (CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN); + } + echo '

' . $p->t('tools/inskriptionsbestaetigung') . '

'; + $stsem_zahlung = $konto->getLastStSemBuchungstypen($uid, $buchungstypen, $stsem); + echo ' + + + + + + + '; if ($stsem_zahlung != FALSE && $stsem == $stsem_zahlung) { - $pfad = "../pdfExport.php?xsl=Studienblatt&xml=studienblatt.xml.php&ss=".$stsem."&uid=".$uid; - echo ''.$p->t('tools/studienbuchblatt').''; - echo ' - '.$p->t('tools/studienbeitragFuerSSBezahlt',array($stsem)); + $path = "../pdfExport.php?xsl=Inskription&xml=student.rdf.php&ss=".$stsem."&uid=".$uid."&xsl_stg_kz=".$xsl_stg_kz; + echo ''; + echo ''; } else - echo $p->t('tools/studienbuchblatt')." - ".$p->t('tools/studienbeitragFuerSSNochNichtBezahlt',array($stsem)); - - echo '

'; + { + echo ''; + } + echo '
'.$p->t('global/name').'
'.$p->t('tools/inskriptionsbestaetigung').' '.$stsem.''.$p->t('tools/studienbeitragFuerSSNochNichtBezahlt',array($stsem)).'
'; + + if (defined('CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN') && CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN) + { + echo '

' . $p->t('tools/studienbuchblatt') . '

'; + echo ' + + + + + + + '; + if ($stsem_zahlung != FALSE && $stsem == $stsem_zahlung) + { + $pfad = "../pdfExport.php?xsl=Studienblatt&xml=studienblatt.xml.php&ss=".$stsem."&uid=".$uid; + echo ''; + echo ''; + } + else + { + echo ''; + } + echo '
'.$p->t('global/name').'
'.$p->t('tools/studienbuchblatt').' '.$stsem.''.$p->t('tools/studienbeitragFuerSSNochNichtBezahlt',array($stsem)).'
'; + } + + if (defined('CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN') && CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN) + { + echo '

' . $p->t('tools/studienerfolgsbestaetigung') . '

'; + echo ' + + + + + + + + '; + echo ''; + echo ''; + echo ''; + + echo ''; + echo ''; + echo ''; + + echo ''; + echo ''; + echo ''; + + echo ''; + echo ''; + echo ''; + echo '
'.$p->t('global/name').'
'.$p->t('tools/studienerfolgsbestaetigung').' '.$stsem.' '.$p->t('global/deutsch').' '.$p->t('tools/vorlageWohnsitzfinanzamt').'
'.$p->t('tools/studienerfolgsbestaetigung').' '.$p->t('tools/alleStudiensemester').' '.$p->t('global/deutsch').' '.$p->t('tools/vorlageWohnsitzfinanzamt').'
'.$p->t('tools/studienerfolgsbestaetigung').' '.$stsem.' '.$p->t('global/englisch').' '.$p->t('tools/vorlageWohnsitzfinanzamt').'
'.$p->t('tools/studienerfolgsbestaetigung').' '.$p->t('tools/alleStudiensemester').' '.$p->t('global/englisch').' '.$p->t('tools/vorlageWohnsitzfinanzamt').'
'; + } } - -if (defined('CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN') && CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN) -{ - echo "".$p->t('tools/studienerfolgsbestaetigung')." Deutsch
"; - echo "".$p->t('tools/studienerfolgsbestaetigung')." Englisch"; - echo "
"; -} -echo "
"; +else + echo '

'.$p->t('tools/keinStatusImStudiensemester',array($stsem)).'

'; $akte = new akte(); -if($akte->getArchiv($student_studiengang->person_id, true, true) && count($akte->result)>0) +echo '

' . $p->t('tools/abschlussdokumente') . '

'; +if($akte->getArchiv($student_studiengang->person_id, null, true) && count($akte->result)>0) { echo ' -

Abschlussdokumente

- +
- - + + + @@ -240,13 +324,30 @@ if($akte->getArchiv($student_studiengang->person_id, true, true) && count($akte- { $pfad = 'dokumente.php?action=download&id='.$row->akte_id.'&uid='.$uid; echo ''; + echo ''; echo ''; - echo ''; + echo ''; echo ''; } echo '
ErstelldatumDokument'.$p->t('tools/erstelldatum').''.$p->t('tools/dokument').'
'.$datum_obj->formatDatum($row->erstelltam,'d.m.Y').' '.$row->bezeichnung.''.$row->bezeichnung.'
'; } +else +{ + echo ' + + + + + + + + + + '; + echo ''; + echo '
'.$p->t('tools/erstelldatum').''.$p->t('tools/dokument').'
'.$p->t('tools/nochKeineAbschlussdokumenteVorhanden').'
'; +} echo ' '; diff --git a/cis/private/profile/studienerfolgsbestaetigung.php b/cis/private/profile/studienerfolgsbestaetigung.php deleted file mode 100644 index b7418075c..000000000 --- a/cis/private/profile/studienerfolgsbestaetigung.php +++ /dev/null @@ -1,114 +0,0 @@ -, - * Andreas Oesterreicher , - * Rudolf Hangl and - * Gerald Raab . - */ - -require_once('../../../config/cis.config.inc.php'); -require_once('../../../include/functions.inc.php'); -require_once('../../../include/studiensemester.class.php'); -require_once('../../../include/basis_db.class.php'); -require_once('../../../include/phrasen.class.php'); -require_once('../../../include/benutzerberechtigung.class.php'); - -$sprache = getSprache(); -$p = new phrasen($sprache); - -if (!$db = new basis_db()) - die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung')); - -$uid=get_uid(); - -if(isset($_GET['uid'])) -{ - // Administratoren duerfen die UID als Parameter uebergeben um die Studienerfolgsbestätigung - // von anderen Personen anzuzeigen - - $rechte = new benutzerberechtigung(); - $rechte->getBerechtigungen($uid); - if($rechte->isBerechtigt('admin')) - $uid=$_GET['uid']; -} - -if(isset($_GET['lang']) && $_GET['lang']=='en') - $xsl = 'StudienerfolgEng'; -else - $xsl = 'Studienerfolg'; - -echo ' - - -'.$p->t('tools/studienerfolgsbestaetigung').' - - - - - - -

'.$p->t('tools/studienerfolgsbestaetigung').'

-
'.$p->t('tools/studiensemesterAuswaehlen').'

'; - -$qry = "SELECT distinct studiensemester_kurzbz FROM campus.vw_student JOIN public.tbl_prestudentstatus USING(prestudent_id) WHERE uid='".addslashes($uid)."'"; -if($result = $db->db_query($qry)) -{ - echo $p->t('global/studiensemester').': '; - echo '

'.$p->t('tools/vorlageWohnsitzfinanzamt').'
'; - echo '

'; -} - -echo ' - -'; -?> \ No newline at end of file diff --git a/locale/de-AT/tools.php b/locale/de-AT/tools.php index 5d579e177..da72d4028 100644 --- a/locale/de-AT/tools.php +++ b/locale/de-AT/tools.php @@ -2,6 +2,9 @@ //Dokumente $this->phrasen['tools/dokumente']='Dokumente'; +$this->phrasen['tools/dokument']='Dokument'; +$this->phrasen['tools/erstelldatum']='Erstelldatum'; +$this->phrasen['tools/bestaetigungenZeugnisse']='Bestätigungen/Zeugnisse'; $this->phrasen['tools/inskriptionsbestaetigung']='Inskriptionsbestätigung'; $this->phrasen['tools/studienbeitragFuerSSBezahlt']='Studienbeitrag für das %1$s bezahlt'; $this->phrasen['tools/studienbeitragFuerSSNochNichtBezahlt']='Studienbeitrag für das %1$s noch nicht bezahlt'; @@ -9,6 +12,10 @@ $this->phrasen['tools/studienerfolgsbestaetigung']='Studienerfolgsbestätigung'; $this->phrasen['tools/studiensemesterAuswaehlen']='Bitte wählen Sie das entsprechende Studiensemester aus'; $this->phrasen['tools/vorlageWohnsitzfinanzamt']='zur Vorlage beim Wohnsitzfinanzamt'; $this->phrasen['tools/studienbuchblatt']='Studienbuchblatt'; +$this->phrasen['tools/alleStudiensemester']='Alle Studiensemester'; +$this->phrasen['tools/abschlussdokumente']='Abschlussdokumente/Zeugnisse'; +$this->phrasen['tools/nochKeineAbschlussdokumenteVorhanden']='Noch keine Abschlussdokumente vorhanden'; +$this->phrasen['tools/keinStatusImStudiensemester']='Für das übergebene Studiensemester %1$s existiert kein Status. Bitte wählen Sie ein gültiges Studiensemester aus dem DropDown.'; //Leistungsbeurteilung $this->phrasen['tools/leistungsbeurteilung']='Leistungsbeurteilung'; @@ -18,6 +25,10 @@ $this->phrasen['tools/nochKeineBeurteilungEingetragen']='Es wurden noch keine Be $this->phrasen['tools/fehlerBeimAuslesenDerNoten']='Fehler beim Auslesen der Noten'; $this->phrasen['tools/benotungsdatumDerZeugnisnote']='Benotungsdatum der Zeugnisnote'; $this->phrasen['tools/hinweistextMarkierung']='Kennzeichnet jene Einträge, bei denen sich die LV-Note von der Zeugnisnote unterscheidet. Letztgültig ist die Zeugnisnote.
Sollten diese Angaben nicht stimmen, wenden Sie sich bitte an Ihre zuständige Assistenz.'; +$this->phrasen['tools/notendurchschnittDerZeugnisnote']='Notendurchschnitt* der Zeugnisnote'; +$this->phrasen['tools/gewichteterNotendurchschnittDerZeugnisnote']='Gewichteter** Notendurchschnitt* der Zeugnisnote'; +$this->phrasen['tools/legendeGewichteterNotendurchschnitt']='Der gewichtete Notendurchschnitt errechnet sich aus der Note der Lehrveranstaltung, multipliziert mit deren ECTS, dividiert durch die Summe aller ECTS'; +$this->phrasen['tools/legendeNotendurchschnitt']='Bitte beachten Sie, dass außercurriculare Lehrveranstaltungen (zB Freifächer) den errechneten Notendurchschnitt verfälschen können'; //Zahlungen $this->phrasen['tools/zahlungen']='Zahlungen'; diff --git a/locale/en-US/tools.php b/locale/en-US/tools.php index 276c72bbb..177851def 100644 --- a/locale/en-US/tools.php +++ b/locale/en-US/tools.php @@ -2,6 +2,9 @@ //Dokumente $this->phrasen['tools/dokumente']='Documents'; +$this->phrasen['tools/dokument']='Document'; +$this->phrasen['tools/erstelldatum']='Creation date'; +$this->phrasen['tools/bestaetigungenZeugnisse']='Certificates/Transcripts'; $this->phrasen['tools/inskriptionsbestaetigung']='Enrollment Confirmation'; $this->phrasen['tools/studienbeitragFuerSSBezahlt']='tuition fee for semester %1$s paid'; $this->phrasen['tools/studienbeitragFuerSSNochNichtBezahlt']='tuition fee for semester %1$s not yet paid'; @@ -9,6 +12,10 @@ $this->phrasen['tools/studienerfolgsbestaetigung']='Student progress report'; $this->phrasen['tools/studiensemesterAuswaehlen']='Please select the corresponding semester'; $this->phrasen['tools/vorlageWohnsitzfinanzamt']='for submission to local tax office'; $this->phrasen['tools/studienbuchblatt']='Studienbuchblatt'; //Noch zu übersetzen +$this->phrasen['tools/alleStudiensemester']='All semester'; +$this->phrasen['tools/abschlussdokumente']='Final documents/Transcripts'; +$this->phrasen['tools/nochKeineAbschlussdokumenteVorhanden']='No final documents available yet'; +$this->phrasen['tools/keinStatusImStudiensemester']='No status found for %1$s. Please select a valid semester from the dropdown.'; //Leistungsbeurteilung $this->phrasen['tools/leistungsbeurteilung']='Performance Assessment '; @@ -18,6 +25,10 @@ $this->phrasen['tools/nochKeineBeurteilungEingetragen']='No grade has been enter $this->phrasen['tools/fehlerBeimAuslesenDerNoten']='Error reading the grades.'; $this->phrasen['tools/benotungsdatumDerZeugnisnote']='Date of grading'; $this->phrasen['tools/hinweistextMarkierung']='The marking indicates those entries where the grade for the course is different from the grade on the report card.The grade on the report card is the valid one.
Should these details not be correct please contact the Administrative Assistant responsible.'; +$this->phrasen['tools/notendurchschnittDerZeugnisnote']='Average of final grade*'; +$this->phrasen['tools/gewichteterNotendurchschnittDerZeugnisnote']='Weighted** average of final grade*'; +$this->phrasen['tools/legendeGewichteterNotendurchschnitt']='The weighted average grade is calculated using the grade of the course, multiplied with its ECTS, divided by the sum of all ECTS'; +$this->phrasen['tools/legendeNotendurchschnitt']='Please note that extracurricular courses (eg elective courses) may distort the calculated average grade'; //Zahlungen $this->phrasen['tools/zahlungen']='Payments'; From 6656a0f7357f6472cadf58f95cfde004aa2897a3 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Wed, 29 Aug 2018 11:28:55 +0200 Subject: [PATCH 07/17] Spalte Fixangestellt in lehrauftragsliste_mail MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit + Sortierung der Studiengänge nach Typ und Bezeichnung --- .../statistik/lehrauftragsliste_mail.xls.php | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/content/statistik/lehrauftragsliste_mail.xls.php b/content/statistik/lehrauftragsliste_mail.xls.php index 3a754f915..fc7cf9afa 100644 --- a/content/statistik/lehrauftragsliste_mail.xls.php +++ b/content/statistik/lehrauftragsliste_mail.xls.php @@ -81,7 +81,7 @@ if(count($stg->result)>0) } } //Studiengaenge ermitteln bei denen sich die lektorzuordnung innerhalb der letzten 31 Tage geaendert haben -$qry_stg = "SELECT distinct studiengang_kz +$qry_stg = "SELECT distinct studiengang_kz, typ, kurzbz FROM ( SELECT studiengang_kz @@ -105,10 +105,13 @@ $qry_stg = "SELECT distinct studiengang_kz tbl_projektarbeit.lehreinheit_id = tbl_lehreinheit.lehreinheit_id AND tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id ) as foo + JOIN public.tbl_studiengang USING (studiengang_kz) "; if(count($stg_arr)>0) $qry_stg.=" WHERE studiengang_kz in (".$db->db_implode4SQL($stg_arr).")"; + $qry_stg.=" ORDER BY typ, kurzbz"; + $liste_gesamt = array(); $gesamt =& $workbook->addWorksheet('Gesamt'); @@ -152,6 +155,8 @@ if($result_stg = $db->db_query($qry_stg)) $i=0; $gesamtsheet_row++; + $gesamt->write(0,0,'', $format_colored); + $gesamt->write(0,1,'Kennzeichnet Änderungen am Lehrauftrag innerhalb der letzten 31 Tage', $format_normal); $worksheet->write(0,0,'Erstellt am '.date('d.m.Y').' '.$semester_aktuell.' '.$studiengang->kuerzel, $format_bold); $gesamt->write($gesamtsheet_row,0,'Erstellt am '.date('d.m.Y').' '.$semester_aktuell.' '.$studiengang->kuerzel, $format_bold); $gesamtsheet_row+=2; @@ -166,6 +171,8 @@ if($result_stg = $db->db_query($qry_stg)) $gesamt->write($gesamtsheet_row,$i,"Vorname", $format_bold); $worksheet->write(2,++$i,"Familienname", $format_bold); $gesamt->write($gesamtsheet_row,$i,"Familienname", $format_bold); + $worksheet->write(2,++$i,"Fixangestellt", $format_bold); + $gesamt->write($gesamtsheet_row,$i,"Fixangestellt", $format_bold); $worksheet->write(2,++$i,"LV-Stunden", $format_bold); $gesamt->write($gesamtsheet_row,$i,"LV-Stunden", $format_bold); $worksheet->write(2,++$i,"LV-Kosten", $format_bold); @@ -185,6 +192,7 @@ if($result_stg = $db->db_query($qry_stg)) tbl_mitarbeiter.personalnummer, tbl_person.person_id, tbl_mitarbeiter.mitarbeiter_uid, tbl_lehreinheitmitarbeiter.faktor as faktor, tbl_lehreinheitmitarbeiter.stundensatz as stundensatz, tbl_lehreinheitmitarbeiter.semesterstunden as semesterstunden, + CASE WHEN tbl_mitarbeiter.fixangestellt = true THEN 'Ja' ELSE 'Nein' END as fixangestellt, CASE WHEN COALESCE(tbl_lehreinheitmitarbeiter.updateamum, tbl_lehreinheitmitarbeiter.insertamum)>now()-interval '31 days' THEN 't' ELSE 'f' END as geaendert FROM lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter, public.tbl_mitarbeiter, @@ -228,6 +236,7 @@ if($result_stg = $db->db_query($qry_stg)) $liste[$row->mitarbeiter_uid]['titelpre'] = $row->titelpre; $liste[$row->mitarbeiter_uid]['vorname'] = $row->vorname; $liste[$row->mitarbeiter_uid]['nachname'] = $row->nachname; + $liste[$row->mitarbeiter_uid]['fixangestellt'] = $row->fixangestellt; $liste[$row->mitarbeiter_uid]['betreuergesamtstunden'] = 0; $liste[$row->mitarbeiter_uid]['betreuergesamtkosten'] = 0; if($row->geaendert=='t') @@ -236,7 +245,7 @@ if($result_stg = $db->db_query($qry_stg)) //Alle holen die eine Betreuung aber keinen Lehrauftrag haben $qry = "SELECT - distinct personalnummer, titelpre, vorname, nachname, uid + distinct personalnummer, titelpre, vorname, nachname, uid, CASE WHEN fixangestellt = true THEN 'Ja' ELSE 'Nein' END as fixangestellt FROM lehre.tbl_projektbetreuer, public.tbl_person, public.tbl_benutzer, public.tbl_mitarbeiter, lehre.tbl_projektarbeit, lehre.tbl_lehreinheit, @@ -276,6 +285,7 @@ if($result_stg = $db->db_query($qry_stg)) $liste[$row->uid]['titelpre'] = $row->titelpre; $liste[$row->uid]['vorname'] = $row->vorname; $liste[$row->uid]['nachname'] = $row->nachname; + $liste[$row->uid]['fixangestellt'] = $row->fixangestellt; $liste[$row->uid]['geaendert']=false; $liste[$row->uid]['gesamtstunden'] = 0; $liste[$row->uid]['gesamtkosten'] = 0; @@ -290,7 +300,10 @@ if($result_stg = $db->db_query($qry_stg)) //Betreuungen fuer Projektarbeiten foreach ($liste as $uid=>$arr) { - $qry = "SELECT tbl_projektbetreuer.faktor, tbl_projektbetreuer.stunden, tbl_projektbetreuer.stundensatz, CASE WHEN COALESCE(tbl_projektbetreuer.updateamum, tbl_projektbetreuer.insertamum)>now()-interval '31 days' THEN 't' ELSE 'f' END as geaendert + $qry = "SELECT tbl_projektbetreuer.faktor, + tbl_projektbetreuer.stunden, + tbl_projektbetreuer.stundensatz, + CASE WHEN COALESCE(tbl_projektbetreuer.updateamum, tbl_projektbetreuer.insertamum)>now()-interval '31 days' THEN 't' ELSE 'f' END as geaendert FROM lehre.tbl_projektbetreuer, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, public.tbl_benutzer, lehre.tbl_projektarbeit, campus.vw_student WHERE tbl_projektbetreuer.person_id=tbl_benutzer.person_id AND tbl_benutzer.uid=".$db->db_add_param($uid)." AND @@ -354,6 +367,9 @@ if($result_stg = $db->db_query($qry_stg)) //Nachname $worksheet->write($zeile,++$i,$row['nachname'], $format); $gesamt->write($gesamtsheet_row,$i,$row['nachname'], $format); + //Fixangestellt + $worksheet->write($zeile,++$i,$row['fixangestellt'], $format); + $gesamt->write($gesamtsheet_row,$i,$row['fixangestellt'], $format); //LVStunden $lvstunden = str_replace(',', '.', $row['lvstunden']); $worksheet->write($zeile,++$i,$lvstunden, $format); @@ -401,8 +417,8 @@ if($result_stg = $db->db_query($qry_stg)) } //Gesamtkosten anzeigen - $worksheet->writeNumber($zeile,10,$gesamtkosten, $format_number_bold); - $gesamt->writeNumber($gesamtsheet_row,10,$gesamtkosten, $format_number_bold); + $worksheet->writeNumber($zeile,11,$gesamtkosten, $format_number_bold); + $gesamt->writeNumber($gesamtsheet_row,11,$gesamtkosten, $format_number_bold); } } From 521004f6a42185bfbfc25d6da31bde226558e182 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Wed, 29 Aug 2018 11:30:46 +0200 Subject: [PATCH 08/17] BugFix Personen_Wartung MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Wenn zwei gleiche rt_person Einträge vorhanden sind, wird ein Fehler ausgegeben und abgebrochen - Check, ob Radiobuttons ausgewählt wurden - Neue Funktion checkPersonRtStudienplanExists in reihungstest.class --- include/reihungstest.class.php | 31 ++++++++++++++ vilesci/stammdaten/personen_wartung.php | 56 +++++++++++++++---------- 2 files changed, 66 insertions(+), 21 deletions(-) diff --git a/include/reihungstest.class.php b/include/reihungstest.class.php index aff458aa0..35032a8ef 100644 --- a/include/reihungstest.class.php +++ b/include/reihungstest.class.php @@ -1259,4 +1259,35 @@ class reihungstest extends basis_db return false; } } + + /** + * Prueft ob eine Person-Reihungstest-Studienplan zuteilung existiert (Muss in der DB unique sein) + * @param int $person_id ID der Person. + * @param int $rt_id ID des Reihungstests. + * @param int $studienplan_id Studienplan ID. + * @return boolean true wenn vorhanden, false wenn nicht oder im Fehlerfall + */ + public function checkPersonRtStudienplanExists($person_id, $rt_id, $studienplan_id) + { + $qry = "SELECT + * + FROM + public.tbl_rt_person + WHERE + tbl_rt_person.person_id=".$this->db_add_param($person_id)." + AND tbl_rt_person.rt_id=".$this->db_add_param($rt_id)." + AND tbl_rt_person.studienplan_id=".$this->db_add_param($studienplan_id); + if($result = $this->db_query($qry)) + { + if($this->db_num_rows($result) > 0) + return true; + else + return false; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } } diff --git a/vilesci/stammdaten/personen_wartung.php b/vilesci/stammdaten/personen_wartung.php index 2aca71d66..6a6d7628c 100644 --- a/vilesci/stammdaten/personen_wartung.php +++ b/vilesci/stammdaten/personen_wartung.php @@ -136,6 +136,8 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p $personToDelete_obj = new person(); if ($personToDelete_obj->load($personToDelete)) { + $error = false; + $sql_query_upd1 = "BEGIN;"; $personToKeep_obj = new person(); $personToKeep_obj->load($personToKeep); @@ -145,10 +147,32 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p { $msg_error[] = 'Beide Personen haben eine Sozialversicherungsnummer oder ein Ersatzkennzeichen und können nicht zusammengelegt werden.
Bitte wenden Sie sich an einen Administrator.'; + $error = true; } - else + + // Wenn zwei gleiche rt_person Einträge vorhanden sind, wird ein Fehler ausgegeben und abgebrochen + $reihungstest_personToKeep = new reihungstest(); + $reihungstest_personToKeep->getReihungstestPerson($personToKeep); + $doppelteReihungstestzuordnung = false; + + foreach ($reihungstest_personToKeep->result as $row) + { + $rt_doppelt = new reihungstest(); + if ($rt_doppelt->checkPersonRtStudienplanExists($personToDelete, $row->reihungstest_id, $row->studienplan_id)) + { + $doppelteReihungstestzuordnung = true; + $msg_error[] = "Die Person ".$personToDelete." hat schon eine Reihungstestzuordnung + zu Reihungstest ID ".$row->reihungstest_id." im Studienplan ".$row->studienplan_id.".
+ Sie müssen die Datensätze manuell bereinigen, bevor Sie die Personen zusammenlegen können."; + $error = true; + break; + } + } + if ($doppelteReihungstestzuordnung === false) + $sql_query_upd1 .= "UPDATE public.tbl_rt_person SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; + + if ($error == false) { - $sql_query_upd1 = "BEGIN;"; // Wenn bei einer der Personen das Foto gesperrt ist, dann die Sperre uebernehmen if ($personToDelete_obj->foto_sperre) $sql_query_upd1 .= "UPDATE public.tbl_person SET foto_sperre=true WHERE person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . ";"; @@ -218,8 +242,8 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p } // Bild in tbl_person auf 240x320 skalieren - //$base64_src = resize($base64foto, 240, 320); Auskommentiert bis das auch im Echtsystem geht - $base64_src = $base64foto; + $base64_src = resize($base64foto, 240, 320); + $sql_query_upd1 .= "UPDATE public.tbl_person SET foto=" . $db->db_add_param($base64_src) . " WHERE person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . ";"; } @@ -260,23 +284,6 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p else $zugangscode = $personToKeep_obj->zugangscode; - // Check ob rt_person-zuordnung schon vorhanden ist - // Wenn ja, wird der Eintrag der zu löschenden Person ebenfalls gelöscht - $reihungstest_person = new reihungstest(); - - - //if (!$reihungstest_person->getReihungstestPerson($personToKeep)) - $sql_query_upd1 .= "UPDATE public.tbl_rt_person SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; - /*else - { - $sql_query_upd1 .= "DELETE FROM public.tbl_rt_person WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; - $reihungstest = new reihungstest($reihungstest_person->result[0]->reihungstest_id); - $msg_warning[] = "Das verbliebene Person ".$personToKeep." hat schon eine Reihungstestzuordnung - zu Reihungstest ID".$reihungstest->reihungstest_id." am ".$reihungstest->datum." - für das ".$reihungstest->studiensemester_kurzbz." im Studiengang ".$reihungstest->studiengang_kz." (Studienplan ".$reihungstest_person->result[0]->studienplan_id.")
- Die Reihungstestzuordnung von ".$personToDelete." wurde gelöscht"; - }*/ - $sql_query_upd1 .= "UPDATE addon.tbl_kompetenz SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= "UPDATE lehre.tbl_abschlusspruefung SET pruefer1=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE pruefer1=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= "UPDATE lehre.tbl_abschlusspruefung SET pruefer2=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE pruefer2=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; @@ -928,6 +935,13 @@ function resize($base64, $width, $height) // 828 x 1104 -> 240 x 320 } function checkPersonen() { + // Check, ob jeweils ein Radiobutton ausgewählt wurde + if(!$('input[type=radio][name=radio_1]').is(':checked') || !$('input[type=radio][name=radio_2]').is(':checked')) + { + alert('Bitte wählen Sie auf beiden Seiten einen Radio-Button aus'); + return false; + } + // Wenn die Personen zu unterschiedlich sind, Warnung ausgeben // Prüfen auf Vorname, Nachname, Geburtsdatum var nachnameLinks = $('input[type=radio][name=radio_1]:checked').closest('tr').find('.nachname').text().toLowerCase(); From ddd7cad9da5ae77e7cd0d7ac3f779b0106e94ae3 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Wed, 29 Aug 2018 11:32:13 +0200 Subject: [PATCH 09/17] Bugfix in betriebsmittel.class Check auf db_num_rows in Funktion zutrittskarteAusgegeben --- include/betriebsmittel.class.php | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/include/betriebsmittel.class.php b/include/betriebsmittel.class.php index 6cec84f7b..efd275827 100644 --- a/include/betriebsmittel.class.php +++ b/include/betriebsmittel.class.php @@ -1233,15 +1233,20 @@ class betriebsmittel extends basis_db if($result = $this->db_query($qry)) { - $ausgegeben_am = ''; - while($row = $this->db_fetch_object($result)) - { - if(empty($ausgegeben_am) || (!empty($ausgegeben_am) && $ausgegeben_am < $row->ausgegebenam)) - $ausgegeben_am = $row->ausgegebenam; - } - //return latest issue date - $this->result = $ausgegeben_am; - return true; + if($this->db_num_rows($result) > 0) + { + $ausgegeben_am = ''; + while($row = $this->db_fetch_object($result)) + { + if(empty($ausgegeben_am) || (!empty($ausgegeben_am) && $ausgegeben_am < $row->ausgegebenam)) + $ausgegeben_am = $row->ausgegebenam; + } + //return latest issue date + $this->result = $ausgegeben_am; + return true; + } + else + return false; } else { From 3546fe98859959b831a9353f3f608f445ff9158d Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Wed, 29 Aug 2018 11:33:55 +0200 Subject: [PATCH 10/17] Leerzeile am Anfang entfernt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Um das Excel als Serienbrief-Quelle verwenden zu können, muss sonst immer manuell die erste Zeile entfernt werden --- content/statistik/studentenexportextended.xls.php | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/content/statistik/studentenexportextended.xls.php b/content/statistik/studentenexportextended.xls.php index 46ab8669b..819e49b9c 100644 --- a/content/statistik/studentenexportextended.xls.php +++ b/content/statistik/studentenexportextended.xls.php @@ -94,7 +94,7 @@ $format_title->setAlign('merge'); //Zeilenueberschriften ausgeben $i = 0; -$zeile = 1; +$zeile = 0; $worksheet->write($zeile, $i, "ANREDE", $format_bold); $maxlength[$i] = 6; @@ -108,10 +108,8 @@ $worksheet->write($zeile, ++$i, "TITELPOST", $format_bold); $maxlength[$i] = 9; $worksheet->write($zeile, ++$i, "EMail Privat", $format_bold); $maxlength[$i] = 12; -$worksheet->write($zeile,++$i,"STRASSE", $format_bold); -$maxlength[$i]=7; -$worksheet->write($zeile-1,$i,"Zustelladresse", $format_bold); -$maxlength[$i]=14; +$worksheet->write($zeile,++$i,"STRASSE (Zustelladresse)", $format_bold); +$maxlength[$i]=12; $worksheet->write($zeile,++$i,"PLZ", $format_bold); $maxlength[$i]=3; $worksheet->write($zeile,++$i,"ORT", $format_bold); @@ -158,7 +156,7 @@ $maxlength[$i] = 16; $worksheet->write($zeile, ++$i, "STATUS", $format_bold); $maxlength[$i] = 6; -$worksheet->write($zeile, ++$i, "STATI IN ANDEREN STUDIENGÄNGEN", $format_bold); +$worksheet->write($zeile, ++$i, "STATUS IN ANDEREN STUDIENGÄNGEN", $format_bold); $maxlength[$i] = 8; $worksheet->write($zeile, ++$i, "EMail Intern", $format_bold); $maxlength[$i] = 12; From dbf1dd32985cecadfc3841291e3fe7126d348861 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 30 Aug 2018 16:01:51 +0200 Subject: [PATCH 11/17] Studiengangname is retrieved from Studienordnung for CIS Ansichten Leistungsbeurteilung and Studentenprofil --- cis/private/lehre/notenliste.php | 29 ++++++++++++++++++++++------- cis/private/profile/index.php | 17 ++++++++++++++++- 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/cis/private/lehre/notenliste.php b/cis/private/lehre/notenliste.php index 4e1ae2d95..67ce204ef 100644 --- a/cis/private/lehre/notenliste.php +++ b/cis/private/lehre/notenliste.php @@ -32,9 +32,11 @@ require_once('../../../include/datum.class.php'); require_once('../../../include/note.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/studiengang.class.php'); +require_once('../../../include/studienordnung.class.php'); require_once('../../../include/lehrveranstaltung.class.php'); require_once('../../../include/pruefung.class.php'); require_once('../../../include/benutzerberechtigung.class.php'); +require_once('../../../include/prestudent.class.php'); $sprache = getSprache(); $p = new phrasen($sprache); @@ -47,11 +49,11 @@ echo ' - - - - - + + + + + '.$p->t('tools/leistungsbeurteilung').' @@ -118,7 +120,7 @@ if(!check_student($user)) } else { - $qry = "SELECT vw_student.vorname, vw_student.nachname, tbl_studiengang.studiengang_kz + $qry = "SELECT vw_student.vorname, vw_student.nachname, vw_student.prestudent_id, tbl_studiengang.studiengang_kz FROM public.tbl_studiengang JOIN campus.vw_student USING (studiengang_kz) WHERE campus.vw_student.uid = ".$db->db_add_param($user).";"; @@ -133,6 +135,19 @@ else $stg_obj = new studiengang(); $stg_obj->load($row->studiengang_kz); $stg_name = $stg_obj->bezeichnung_arr[$sprache]; + $prestudent_id = $row->prestudent_id; + $prestudent = new prestudent($prestudent_id); + if ($prestudent->getLastStatus($prestudent_id, $prestudent->studiensemester_kurzbz)) + { + $studienplan_id = $prestudent->studienplan_id; + $studienordnung = new studienordnung(); + if ($studienordnung->getStudienordnungFromStudienplan($studienplan_id)) + { + $studiengangbezeichnung_sto = $sprache === 'English' ? $studienordnung->__get('studiengangbezeichnung_englisch') : $studienordnung->__get('studiengangbezeichnung'); + } + } + + $studiengang_bezeichnung = empty($studiengangbezeichnung_sto) ? $stg_name : $studiengangbezeichnung_sto; } $notenarr=array(); @@ -152,7 +167,7 @@ else echo "
"; echo "".$p->t('global/name').": $vorname $nachname
"; - echo "".$p->t('global/studiengang').": $stg_name
"; + echo "".$p->t('global/studiengang').": $studiengang_bezeichnung
"; echo "".$p->t('global/studiensemester')." \n"; + $htmlstr .= " \n"; + $htmlstr .= " Bezeichnung\n"; + $htmlstr .= " \n"; $htmlstr .= " ValueName\n"; - $htmlstr .= " \n"; + $htmlstr .= " \n"; $htmlstr .= " Type\n"; - $htmlstr .= " \n"; + $htmlstr .= " \n"; $htmlstr .= " ShowValue\n"; $htmlstr .= " \n"; $htmlstr .= " \n"; $htmlstr .= " \n"; $htmlstr .= " SQL\n"; - $htmlstr .= " \n"; + $htmlstr .= " \n"; $htmlstr .= " HTML-Attributes\n"; - $htmlstr .= " \n"; + $htmlstr .= " \n"; $htmlstr .= " \n"; $htmlstr .= " \n"; $htmlstr .= "
\n"; From 926c02dd0d436dc60a465f7c47431ab9ed80e6f0 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 4 Sep 2018 10:03:30 +0200 Subject: [PATCH 17/17] changed field comment for bezeichnung --- include/filter.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/filter.class.php b/include/filter.class.php index 9084015b8..3578d7dcf 100644 --- a/include/filter.class.php +++ b/include/filter.class.php @@ -33,7 +33,7 @@ class filter extends basis_db //Tabellenspalten protected $filter_id; // integer (PK) protected $kurzbz; // varchar(32) unique - protected $bezeichnung; // varchar(32) + protected $bezeichnung; // varchar(64) (label shown before filter dropdown) protected $sql; // text protected $valuename; // varchar(32) protected $showvalue; // boolean (should the value be showed in the input widget