From aa58bd7bee10fb61df581e7a1f884d665f556674 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 24 Sep 2018 17:52:31 +0200 Subject: [PATCH 01/15] - Noten can be marked as not ueberschreibbar - CIS Gesamtnote - marked Noten cannot be overwritten, also no csv import possible --- .../benotungstool/lvgesamtnoteeintragen.php | 22 +++++-- .../benotungstool/lvgesamtnoteverwalten.php | 60 +++++++++++++------ include/note.class.php | 25 +++++--- locale/de-AT/benotungstool.php | 1 + locale/en-US/benotungstool.php | 1 + system/dbupdate_3.3.php | 11 ++++ 6 files changed, 88 insertions(+), 32 deletions(-) diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php b/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php index c3648d4fa..7d75af4bc 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php @@ -82,10 +82,14 @@ $uebung_id = (isset($_GET['uebung_id'])?$_GET['uebung_id']:''); $uid = (isset($_GET['uid'])?$_GET['uid']:''); $noten_anmerkung=array(); +$noten_arr=array(); $note_obj = new note(); $note_obj->getAll(); foreach($note_obj->result as $row) - $noten_anmerkung[$row->anmerkung]=$row->note; +{ + $noten_anmerkung[$row->anmerkung] = $row->note; + $noten_arr[$row->note] = $row; +} //Studiensemester laden $stsem_obj = new studiensemester(); @@ -238,12 +242,20 @@ if (isset($_REQUEST["submit"])) } // Hole Zeugnisnote wenn schon eine eingetragen ist - /* if ($zeugnisnote = new zeugnisnote($lvid, $student_uid, $stsem)) + { $znote = $zeugnisnote->note; - else - $znote = null; - */ + + $notenobj = $noten_arr[$znote]; + + // Note nicht speichern wenn Zeugnisnote nicht überschreibbar + if (!$notenobj->lkt_ueberschreibbar) + { + $response .= "\n".$p->t('benotungstool/noteNichtUeberschreibbar', array($matrikelnummer, $notenobj->bezeichnung)); + continue; + } + } + $val=savenote($db,$lvid, $student_uid, $note, $punkte); if($val!='neu' && $val!='update' && $val!='update_f') $response.=$val; diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php index fa9bdc980..d98d96e2a 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php @@ -181,6 +181,7 @@ foreach ($noten_obj->result as $row) $noten_array[$row->note]['positiv'] = $row->positiv; $noten_array[$row->note]['aktiv'] = $row->aktiv; $noten_array[$row->note]['lehre'] = $row->lehre; + $noten_array[$row->note]['lkt_ueberschreibbar'] = $row->lkt_ueberschreibbar; $noten_array[$row->note]['anmerkung'] = $row->anmerkung; foreach ($sprachen->result AS $s) $noten_array[$row->note]['bezeichnung_mehrsprachig'][$s->sprache] = $row->bezeichnung_mehrsprachig[$s->sprache]; @@ -1249,21 +1250,30 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG action='" . $_SERVER['PHP_SELF'] . "?lvid=$lvid&lehreinheit_id=$lehreinheit_id&stsem=$stsem'> "; - + + // nur überschreibbare Noten können geändert werden + $ueberschreibbar = is_null($znote) || $noten_array[$znote]['lkt_ueberschreibbar']; // Punkte if (CIS_GESAMTNOTE_PUNKTE) { + $htmlstring .= ' '; + size="3"'; + + if ($ueberschreibbar) + $htmlstring .= ' oninput="PunkteEingabe(' . $i . ')"'; + else + $htmlstring .= ' disabled="disabled"'; + + $htmlstring .= '/>'; } - + // Noten DropDown - if ($punkte_vorschlag != '' && CIS_GESAMTNOTE_PUNKTE) + if (($punkte_vorschlag != '' && CIS_GESAMTNOTE_PUNKTE) || $ueberschreibbar == false) $disabled = 'disabled="disabled"'; else $disabled = ''; @@ -1281,10 +1291,13 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG } $htmlstring .= ''; $htmlstring .= " - - - - "; + "; + if ($ueberschreibbar) + { + $htmlstring .= ""; + } + $htmlstring .= " + "; } else { @@ -1370,13 +1383,18 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG $htmlstring .= ' ' . $pr_datum . ' ' . $pr_notenbezeichnung . ' - - '; + if ($ueberschreibbar) + { + $htmlstring .= + ' - - '; + onclick="' . $onclick . '">'; + } + $htmlstring .= + ' + '; } $htmlstring .= ""; $htmlstring .= ""; @@ -1386,12 +1404,16 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG { if (! is_null($note_lv) || ! is_null($znote)) { - $htmlstring .= " - "; + if ($ueberschreibbar) + { + $htmlstring .= + " - "; + onclick='pruefungAnlegen(\"" . $uid . "\",\"\",\"\",\"\",\"\")'>"; + } + $htmlstring .= ""; } else { @@ -1445,7 +1467,7 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG } else { - if (! is_null($note_lv) || ! is_null($znote)) + if ((! is_null($note_lv) || ! is_null($znote)) && $ueberschreibbar) { $htmlstring .= " diff --git a/include/note.class.php b/include/note.class.php index 9936930db..b948f1be9 100644 --- a/include/note.class.php +++ b/include/note.class.php @@ -42,6 +42,7 @@ class note extends basis_db public $aktiv; // boolean public $lehre; // boolean public $offiziell; // boolean + public $lkt_ueberschreibbar; // boolean public $bezeichnung_mehrsprachig; // varchar (64)[] /** @@ -78,7 +79,8 @@ class note extends basis_db notenwert, aktiv, lehre, - offiziell, + offiziell, + lkt_ueberschreibbar, $bezeichnung_mehrsprachig FROM lehre.tbl_note @@ -98,6 +100,7 @@ class note extends basis_db $this->lehre = $this->db_parse_bool($row->lehre); $this->aktiv = $this->db_parse_bool($row->aktiv); $this->offiziell = $this->db_parse_bool($row->offiziell); + $this->lkt_ueberschreibbar = $this->db_parse_bool($row->lkt_ueberschreibbar); $this->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig',$row); return true; } @@ -151,7 +154,7 @@ class note extends basis_db $idx = sprache::$index_arr[$key]; $qry .= " bezeichnung_mehrsprachig[$idx],"; } - $qry .= ' offiziell) VALUES('. + $qry .= ' offiziell, lkt_ueberschreibbar) VALUES('. $this->db_add_param($this->note).', '. $this->db_add_param($this->bezeichnung).', '. $this->db_add_param($this->anmerkung).', '. @@ -163,8 +166,9 @@ class note extends basis_db foreach($this->bezeichnung_mehrsprachig as $key=>$value) $qry .= $this->db_add_param($value).','; - $qry .= $this->db_add_param($this->offiziell, FHC_BOOLEAN).');'; - + $qry .= $this->db_add_param($this->offiziell, FHC_BOOLEAN); + $qry .= $this->db_add_param($this->lkt_ueberschreibbar, FHC_BOOLEAN).');'; + } else @@ -184,7 +188,8 @@ class note extends basis_db $qry .= " bezeichnung_mehrsprachig[$idx]=".$this->db_add_param($value).", "; } - $qry .= ' offiziell='.$this->db_add_param($this->offiziell, FHC_BOOLEAN).' '. + $qry .= ' offiziell='.$this->db_add_param($this->offiziell, FHC_BOOLEAN).', '. + $qry .= ' lkt_ueberschreibbar='.$this->db_add_param($this->lkt_ueberschreibbar, FHC_BOOLEAN).' '. 'WHERE note='.$this->db_add_param($this->note).';'; @@ -218,7 +223,8 @@ class note extends basis_db notenwert, aktiv, lehre, - offiziell, + offiziell, + lkt_ueberschreibbar, $bezeichnung_mehrsprachig FROM lehre.tbl_note "; @@ -242,7 +248,8 @@ class note extends basis_db $n->notenwert = $row->notenwert; $n->aktiv = $this->db_parse_bool($row->aktiv); $n->lehre = $this->db_parse_bool($row->lehre); - $n->offiziell = $this->db_parse_bool($row->lehre); + $n->offiziell = $this->db_parse_bool($row->offiziell); + $n->lkt_ueberschreibbar = $this->db_parse_bool($row->lkt_ueberschreibbar); $n->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row); $this->result[] = $n; @@ -274,6 +281,7 @@ class note extends basis_db aktiv, lehre, offiziell, + lkt_ueberschreibbar, $bezeichnung_mehrsprachig FROM lehre.tbl_note @@ -299,7 +307,8 @@ class note extends basis_db $n->notenwert = $row->notenwert; $n->aktiv = $this->db_parse_bool($row->aktiv); $n->lehre = $this->db_parse_bool($row->lehre); - $n->offiziell = $this->db_parse_bool($row->lehre); + $n->offiziell = $this->db_parse_bool($row->offiziell); + $n->lkt_ueberschreibbar = $this->db_parse_bool($row->lkt_ueberschreibbar); $n->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row); $this->result[] = $n; diff --git a/locale/de-AT/benotungstool.php b/locale/de-AT/benotungstool.php index b8a34b83a..e8ef6d8d6 100644 --- a/locale/de-AT/benotungstool.php +++ b/locale/de-AT/benotungstool.php @@ -149,6 +149,7 @@ $this->phrasen['benotungstool/pruefungAnlegenFuer']='Prüfung anlegen für'; $this->phrasen['benotungstool/kreuzerltool']='Kreuzerltool'; $this->phrasen['benotungstool/studentIstLvNichtZugeordnet']='Der Student %s %s (%s) ist dieser Lehrveranstaltung nicht zugeordnet. Die Note wird nicht uebernommen!'; $this->phrasen['benotungstool/studentMitMatrikelnummerExistiertNicht']='Student mit Matrikelnummer %s existiert nicht.'; +$this->phrasen['benotungstool/noteNichtUeberschreibbar']='Für Student mit Matrikelnummer %s eingetragene Zeugnisote %s ist nicht überschreibbar'; $this->phrasen['benotungstool/fehlerhafteNoteBeiStudent']='Fehlerhafte Note bei Student %s %s'; $this->phrasen['benotungstool/keineKreuzerllistenFuerDieseLehrveranstaltung']='Derzeit gibt es keine Kreuzerllisten für diese Lehrveranstaltung'; $this->phrasen['benotungstool/notenuebersichtFuer']='Notenübersicht für'; diff --git a/locale/en-US/benotungstool.php b/locale/en-US/benotungstool.php index c70524f12..94b0e7891 100644 --- a/locale/en-US/benotungstool.php +++ b/locale/en-US/benotungstool.php @@ -148,6 +148,7 @@ $this->phrasen['benotungstool/pruefungAnlegenFuer']='Create an examination for ' $this->phrasen['benotungstool/kreuzerltool']='"Kreuzerl" tool'; $this->phrasen['benotungstool/studentIstLvNichtZugeordnet']='Student is not assigned to this course. The grade was not accepted!'; $this->phrasen['benotungstool/studentMitMatrikelnummerExistiertNicht']='Student with student ID number %s does not exist.'; +$this->phrasen['benotungstool/noteNichtUeberschreibbar']='Transcript grade %2$s for student with Personal identifier %1$s is not rewritable'; $this->phrasen['benotungstool/fehlerhafteNoteBeiStudent']='Incorrect grade for student %s %s'; $this->phrasen['benotungstool/keineKreuzerllistenFuerDieseLehrveranstaltung']='There are currently no checklists for this course'; $this->phrasen['benotungstool/notenuebersichtFuer']='Grade list for'; diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 581ee4388..a7fba3ba8 100755 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -506,6 +506,17 @@ if(!$result = @$db->db_query("SELECT offiziell FROM lehre.tbl_note LIMIT 1;")) echo '
lehre.tbl_note: Spalte offiziell hinzugefuegt!
'; } +// Spalte lkt_ueberschreibbar in lehre.tbl_note +if(!$result = @$db->db_query("SELECT lkt_ueberschreibbar FROM lehre.tbl_note LIMIT 1;")) +{ + $qry = "ALTER TABLE lehre.tbl_note ADD COLUMN lkt_ueberschreibbar boolean NOT NULL DEFAULT true;"; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_note: '.$db->db_last_error().'
'; + else + echo '
lehre.tbl_note: Spalte lkt_ueberschreibbar hinzugefuegt!
'; +} + // Spalte bezeichnung_mehrsprachig in lehre.tbl_note if(!$result = @$db->db_query("SELECT bezeichnung_mehrsprachig FROM lehre.tbl_note LIMIT 1")) { From 445fe283fc646d2b69467ad7f4c0b722ab4a484f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 25 Sep 2018 14:11:36 +0200 Subject: [PATCH 02/15] Freie Lektoren werden nicht mehr in der Urlaubsliste der Vorgesetzten angezeigt --- cms/menu/menu_addon_urlaub.inc.php | 34 +++++++++++++++--------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/cms/menu/menu_addon_urlaub.inc.php b/cms/menu/menu_addon_urlaub.inc.php index bfcbd83b4..3321e3f47 100644 --- a/cms/menu/menu_addon_urlaub.inc.php +++ b/cms/menu/menu_addon_urlaub.inc.php @@ -19,7 +19,7 @@ */ /** * Menu Addon fuer Urlaube - * + * * Zeigt eine Liste der untergebenen Mitarbeiter mit deren Urlaube */ require_once(dirname(__FILE__).'/menu_addon.class.php'); @@ -33,25 +33,25 @@ class menu_addon_urlaub extends menu_addon public function __construct() { parent::__construct(); - + $sprache = getSprache(); $user = get_uid(); - + $p = new phrasen($sprache); - + //Untergebene holen $mitarbeiter = new mitarbeiter(); $mitarbeiter->getUntergebene($user); $untergebene = ''; - + foreach ($mitarbeiter->untergebene as $u_uid) { if($untergebene!='') $untergebene.=','; - + $untergebene.="'".addslashes($u_uid)."'"; } - + $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); if($rechte->isBerechtigt('mitarbeiter/urlaube', null, 'suid')) @@ -65,14 +65,14 @@ class menu_addon_urlaub extends menu_addon $untergebene.="'".addslashes($row->uid)."'"; } } - + if($untergebene!='') { - $qry = "SELECT * FROM campus.vw_mitarbeiter WHERE uid in($untergebene) AND aktiv ORDER BY nachname, vorname"; + $qry = "SELECT * FROM campus.vw_mitarbeiter WHERE uid in($untergebene) AND aktiv AND fixangestellt ORDER BY nachname, vorname"; $this->linkitem['link']='private/profile/urlaubsfreigabe.php'; $this->linkitem['target']='content'; - + if($result = $this->db_query($qry)) { $this->items[] = array('title'=>$p->t('menu/urlaubAlle'), @@ -80,31 +80,31 @@ class menu_addon_urlaub extends menu_addon 'link'=>'private/profile/urlaubsfreigabe.php', 'name'=>$p->t('menu/urlaubAlle') ); - + while($row = $this->db_fetch_object($result)) { - + $name = $row->nachname.' '.$row->vorname.' '.$row->titelpre.' '.$row->titelpost; $title = $row->nachname.' '.$row->vorname.' '.$row->titelpre.' '.$row->titelpost; - + if($row->fixangestellt=='f') $name = ''.$name.''; - + $this->items[] = array('title'=>$title, 'target'=>'content', 'link'=>'private/profile/urlaubsfreigabe.php?uid='.$row->uid, 'name'=>$name ); - + } } } else $this->link=false; - + $this->output(); } } new menu_addon_urlaub(); -?> \ No newline at end of file +?> From e2fd07aa8492e24edc41974256aed7a9d309b050 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 25 Sep 2018 14:41:13 +0200 Subject: [PATCH 03/15] - Added E-Mail Header Precedence:bulk and Auto-submitted: auto-generated to CI Mail Lib - Sancho Mails are sent now with the new Mail Headers --- application/helpers/hlp_sancho_helper.php | 2 +- application/libraries/MailLib.php | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/application/helpers/hlp_sancho_helper.php b/application/helpers/hlp_sancho_helper.php index c788f1bbf..f063365ec 100644 --- a/application/helpers/hlp_sancho_helper.php +++ b/application/helpers/hlp_sancho_helper.php @@ -66,7 +66,7 @@ function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerIm $body = _parseMailContent('Sancho_Mail_Template', $layout); // Send mail - $ci->maillib->send('sancho@'. DOMAIN, $to, $subject, $body); + $ci->maillib->send('sancho@'. DOMAIN, $to, $subject, $body, $alias = '', $cc = null, $bcc = null, $altMessage = '', $bulk = true, $autogenerated = true); } /** diff --git a/application/libraries/MailLib.php b/application/libraries/MailLib.php index 0871273b5..6d0a48f73 100644 --- a/application/libraries/MailLib.php +++ b/application/libraries/MailLib.php @@ -19,7 +19,7 @@ class MailLib * Class constructor */ public function __construct() - { + { // Set the counter to 0 $this->sended = 0; @@ -46,7 +46,7 @@ class MailLib /** * Sends a single email */ - public function send($from, $to, $subject, $message, $alias = '', $cc = null, $bcc = null, $altMessage = '') + public function send($from, $to, $subject, $message, $alias = '', $cc = null, $bcc = null, $altMessage = '', $bulk = false, $autogenerated = false) { // If from is not specified then use the standard one if (is_null($from) || $from == '') @@ -90,6 +90,11 @@ class MailLib $this->ci->email->message($message); if (!isEmptyString($altMessage)) $this->ci->email->set_alt_message($altMessage); + if($bulk) + $this->ci->email->set_header('Precedence', 'bulk'); + if($autogenerated) + $this->ci->email->set_header('Auto-Submitted', 'auto-generated'); + // Avoid printing on standard output ugly error messages $result = @$this->ci->email->send(); From ddd6abde8cb8e653841d39adfc08141ea424fa5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 25 Sep 2018 14:49:46 +0200 Subject: [PATCH 04/15] =?UTF-8?q?Dokumente=20in=20Kategorien=20mit=20geset?= =?UTF-8?q?zten=20Berechtigungen=20sind=20=C3=BCber=20dms.php=20nicht=20me?= =?UTF-8?q?hr=20zug=C3=A4nglich=20wenn=20die=20Person=20die=20Berechtigung?= =?UTF-8?q?=20nicht=20besitzt=20unabh=C3=A4ngig=20davon=20ob=20diese=20zus?= =?UTF-8?q?=C3=A4tzlich=20=C3=BCber=20eine=20Gruppe=20gesperrt=20ist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cms/admin_dms.php | 49 ++++++++++++++++++++++--------------------- cms/dms.php | 46 +++++++++++++++++++++++++--------------- include/dms.class.php | 20 +++++++++++------- 3 files changed, 67 insertions(+), 48 deletions(-) diff --git a/cms/admin_dms.php b/cms/admin_dms.php index 11d4e3086..6dce630d9 100644 --- a/cms/admin_dms.php +++ b/cms/admin_dms.php @@ -127,7 +127,7 @@ if (isset($_REQUEST['save'])) $dms->gruppe_kurzbz = $_POST['gruppe_kurzbz']; $dms->insertamum = date('Y-m-d H:i:s'); $dms->insertvon = $user; - + if (! $dms->saveGruppeKategorie()) echo '' . $dms->errormsg . ''; else @@ -145,7 +145,7 @@ if (isset($_REQUEST['save'])) { // wenn keine auswahl getroffen wurde $kategorie_auswahl = (($_POST['kategorie_parent'] == 'auswahl') ? null : $_POST['kategorie_parent']); - + if ($kategorieSave->loadKategorie($_POST['kategorie_kurzbz'])) { // Update @@ -184,7 +184,7 @@ if (isset($_REQUEST['save'])) // Löscht eine Kategorie if (isset($_REQUEST['delete'])) { - + if ($method == 'gruppe') { $dms = new dms(); @@ -205,7 +205,7 @@ if (isset($_REQUEST['delete'])) } else echo "keine Kategorie übergeben"; - + $kategorie_kurzbz = ''; } } @@ -270,7 +270,7 @@ switch ($method) case 'gruppe': print_rights($kategorie_kurzbz); break; - + default: drawKategorie($kategorie_kurzbz); break; @@ -287,7 +287,8 @@ function drawKategorie($kategorie_kurzbz) $kategorie_bezeichnung = ''; $disabled = ''; $kategorie_berechtigung = ''; - + $kategorie_oe_kurzbz = ''; + if ($kategorie->loadKategorie($kategorie_kurzbz)) { // Formular zum Editieren bestehender Kategorien @@ -297,7 +298,7 @@ function drawKategorie($kategorie_kurzbz) $kategorie_berechtigung = $kategorie->berechtigung_kurzbz; $kategorie_oe_kurzbz = $kategorie->kategorie_oe_kurzbz; } - + $allKategorien = new dms(); $allKategorien->getAllKategories(); $berechtigungen = new berechtigung(); @@ -305,7 +306,7 @@ function drawKategorie($kategorie_kurzbz) $organisationseinheiten = new organisationseinheit(); $organisationseinheiten->getAll(true, null, 'organisationseinheittyp_kurzbz, bezeichnung'); $oe_typ = ''; - + // var_dump($allKategorien->result); echo '
@@ -341,13 +342,13 @@ function drawKategorie($kategorie_kurzbz) { if ($oe_typ!='') echo ''; - + echo ''; } $selected = ''; if ($oe->oe_kurzbz == $kategorie_oe_kurzbz) $selected = 'selected'; - + echo ''; $oe_typ = $oe->organisationseinheittyp_kurzbz; } @@ -362,7 +363,7 @@ function drawKategorie($kategorie_kurzbz) $selected = ''; if ($recht->berechtigung_kurzbz == $kategorie_berechtigung) $selected = 'selected'; - + echo ''; } echo ' @@ -427,17 +428,17 @@ function print_rights($kategorie_kurzbz) } else echo 'Diese Seite darf von allen angezeigt werden!

'; - + $gruppe = new gruppe(); $gruppe->getgruppe(null, null, null, null, true); - + // Sortieren der Gruppen nach kurzbz - function sortGruppen($a, $b) - { - return strcasecmp($a->gruppe_kurzbz, $b->gruppe_kurzbz); + function sortGruppen($a, $b) + { + return strcasecmp($a->gruppe_kurzbz, $b->gruppe_kurzbz); } - usort($gruppe->result, "sortGruppen"); - + usort($gruppe->result, "sortGruppen"); + // function sortDocuments($a, $b) // { // $c = $a->anzahl_akten_formal_geprueft - $b->anzahl_akten_formal_geprueft; @@ -449,7 +450,7 @@ function print_rights($kategorie_kurzbz) // } // if ($dokumente_abzugeben) // usort($dokumente_abzugeben, "sortDocuments"); - + echo ''; echo 'Gruppe
diff --git a/cms/dms.php b/cms/dms.php index ad7a102d6..6548dc1e3 100644 --- a/cms/dms.php +++ b/cms/dms.php @@ -43,37 +43,37 @@ else $akte_id =''; //if(!isset($_GET['version'])) -// die('Version muss uebergeben werden'); - +// die('Version muss uebergeben werden'); + $id = $_GET['id']; -$version = isset($_GET['version'])?$_GET['version']:null; +$version = isset($_GET['version'])?$_GET['version']:null; if(!is_numeric($id)) die('ID ist ungueltig'); - + if($version!='' && !is_numeric($version)) - die('Version ist ungueltig'); - + die('Version ist ungueltig'); + $doc = new dms(); if(!$doc->load($id,$version)) die('Dieses Dokument existiert nicht mehr'); if($doc->isLocked($id)) { - //Wenn person_id aus Session und akte_id uebergeben wurde - //und person_id Besitzer des Dokuments ist (person_id aus tbl_akte) + //Wenn person_id aus Session und akte_id uebergeben wurde + //und person_id Besitzer des Dokuments ist (person_id aus tbl_akte) //und das Dokument in der Onlinebewerbung hochgeladen werden kann //darf das Dokument heruntergeladen werden if($person_id!='' && $akte_id!='') - { + { $akte = new akte(); $akte->load($akte_id); $akte_person = $akte->person_id; $akte_dokument_kurzbz = $akte->dokument_kurzbz; - + $dokumente_person = new dokument(); $dokumente_person->getAllDokumenteForPerson($person_id, true); - + $dokumente_arr = array(); foreach ($dokumente_person->result AS $row) $dokumente_arr[] .= $row->dokument_kurzbz; @@ -90,11 +90,23 @@ if($doc->isLocked($id)) { //Dokument erfordert Authentifizierung $user = get_uid(); + + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($user); + if(!$doc->isBerechtigt($id, $user)) { + // Wenn eine Berechtigung an der Kategorie haengt + // dann darf nur mit diesem Recht darauf zugegriffen werden + $kategorie = new dms(); + $kategorie->loadKategorie($doc->kategorie_kurzbz); + if($kategorie->berechtigung_kurzbz!='') + { + if(!$rechte->isBerechtigt($kategorie->berechtigung_kurzbz)) + die('Sie haben keinen Zugriff auf dieses Dokument'); + } + //Globales DMS recht pruefen - $rechte = new benutzerberechtigung(); - $rechte->getBerechtigungen($user); if(!$rechte->isBerechtigt('basis/dms')) die('Sie haben keinen Zugriff auf dieses Dokument'); } @@ -111,12 +123,12 @@ if(file_exists($filename)) { if($doc->mimetype=='') $doc->mimetype='application/octetstream'; - + header('Content-type: '.$doc->mimetype); header('Content-Disposition: inline; filename="'.$doc->name.'"'); header('Content-Length: ' .filesize($filename)); - - while (!feof($handle)) + + while (!feof($handle)) { echo fread($handle, 8192); } @@ -127,4 +139,4 @@ if(file_exists($filename)) } else echo 'Die Datei existiert nicht'; -?> \ No newline at end of file +?> diff --git a/include/dms.class.php b/include/dms.class.php index f16580c85..98cfbdd9a 100644 --- a/include/dms.class.php +++ b/include/dms.class.php @@ -1179,9 +1179,7 @@ class dms extends basis_db */ function isLocked($dms_id) { - $qry = "SELECT 1 FROM - ( - WITH RECURSIVE kategorien(parent_kategorie_kurzbz) as + $qry = "WITH RECURSIVE kategorien(parent_kategorie_kurzbz) as ( SELECT parent_kategorie_kurzbz FROM campus.tbl_dms_kategorie WHERE kategorie_kurzbz=(SELECT kategorie_kurzbz FROM campus.tbl_dms WHERE dms_id=".$this->db_add_param($dms_id, FHC_INTEGER).") @@ -1192,12 +1190,20 @@ class dms extends basis_db WHERE k.kategorie_kurzbz=kategorien.parent_kategorie_kurzbz ) - SELECT parent_kategorie_kurzbz - FROM kategorien - ) a - JOIN campus.tbl_dms_kategorie_gruppe ON(a.parent_kategorie_kurzbz=kategorie_kurzbz) + SELECT + 1 + FROM + kategorien + JOIN campus.tbl_dms_kategorie_gruppe ON(kategorien.parent_kategorie_kurzbz=kategorie_kurzbz) UNION SELECT 1 FROM fue.tbl_projekt_dokument WHERE dms_id=".$this->db_add_param($dms_id, FHC_INTEGER)." + UNION + SELECT + 1 + FROM + kategorien + JOIN campus.tbl_dms_kategorie ON(kategorien.parent_kategorie_kurzbz=kategorie_kurzbz) + WHERE berechtigung_kurzbz is not null ;"; if($result = $this->db_query($qry)) From 3986d7a89fa7f89d35ef83440a047fc7cbdd6596 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 26 Sep 2018 07:44:49 +0200 Subject: [PATCH 05/15] =?UTF-8?q?Zus=C3=A4tzliche=20Pr=C3=BCfung=20hinzuge?= =?UTF-8?q?f=C3=BCgt=20beim=20Download=20von=20Notizdokumenten=20ob=20dies?= =?UTF-8?q?e=20auch=20tats=C3=A4chlich=20an=20einer=20Notiz=20h=C3=A4ngen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/notizdokdownload.php | 19 +++--- include/notiz.class.php | 113 +++++++++++++++++++++-------------- 2 files changed, 80 insertions(+), 52 deletions(-) diff --git a/content/notizdokdownload.php b/content/notizdokdownload.php index 90fde00d0..227149a0d 100644 --- a/content/notizdokdownload.php +++ b/content/notizdokdownload.php @@ -22,9 +22,10 @@ * oder im Filesystem, in diesem Fall ist die Akte mit einer DMS ID verknuepft in welcher der Dateiname steht. */ require_once('../config/vilesci.config.inc.php'); -require_once('../include/dms.class.php'); +require_once('../include/dms.class.php'); require_once('../include/benutzerberechtigung.class.php'); require_once('../include/functions.inc.php'); +require_once('../include/notiz.class.php'); $user = get_uid(); $rechte = new benutzerberechtigung(); @@ -34,11 +35,15 @@ if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('assistenz') && !$r if(isset($_GET['id']) && is_numeric($_GET['id'])) { - $dms = new dms(); - if(!$dms->load($_GET['id'])) - die('Kein Dokument vorhanden'); + $notiz = new notiz(); + if(!$notiz->isNotizDokument($_GET['id'])) + die('Dokument wurde nicht gefunden oder haengt nicht an einer Notiz'); - $filename=DMS_PATH.$dms->filename; + $dms = new dms(); + if(!$dms->load($_GET['id'])) + die('Kein Dokument vorhanden'); + + $filename=DMS_PATH.$dms->filename; if(!isset($_GET['notimeupdate'])) $dms->touch($dms->dms_id, $dms->version); @@ -54,7 +59,7 @@ if(isset($_GET['id']) && is_numeric($_GET['id'])) header('Content-Disposition: inline; filename="'.$dms->name.'"'); header('Content-Length: ' .filesize($filename)); - while (!feof($handle)) + while (!feof($handle)) { echo fread($handle, 8192); } @@ -71,4 +76,4 @@ else echo "Ungueltige DMS-ID"; } -?> \ No newline at end of file +?> diff --git a/include/notiz.class.php b/include/notiz.class.php index 08ba10e41..63f15638d 100644 --- a/include/notiz.class.php +++ b/include/notiz.class.php @@ -24,7 +24,7 @@ class notiz extends basis_db { public $new; public $result=array(); - public $dokumente=array(); + public $dokumente=array(); //Tabellenspalten public $notiz_id; @@ -40,15 +40,15 @@ class notiz extends basis_db public $updateamum; public $updatevon; - public $projekt_kurzbz; - public $projektphase_id; - public $projekttask_id; - public $uid; - public $person_id; - public $prestudent_id; - public $bestellung_id; - public $lehreinheit_id; - public $anrechnung_id; + public $projekt_kurzbz; + public $projektphase_id; + public $projekttask_id; + public $uid; + public $person_id; + public $prestudent_id; + public $bestellung_id; + public $lehreinheit_id; + public $anrechnung_id; /** * Konstruktor @@ -93,7 +93,7 @@ class notiz extends basis_db $this->insertvon=$row->insertvon; $this->updateamum=$row->updateamum; $this->updatevon=$row->updatevon; - $this->getDokumente($row->notiz_id); + $this->getDokumente($row->notiz_id); return true; } @@ -123,17 +123,17 @@ class notiz extends basis_db return false; } - // Dokumente der Notiz löschen - $this->getDokumente($notiz_id); - if(!empty($this->dokumente)) - { - $dms = new dms(); + // Dokumente der Notiz löschen + $this->getDokumente($notiz_id); + if(!empty($this->dokumente)) + { + $dms = new dms(); - foreach($this->dokumente as $dms_id) - { - $dms->deleteDms($dms_id); - } - } + foreach($this->dokumente as $dms_id) + { + $dms->deleteDms($dms_id); + } + } $qry = "Delete FROM public.tbl_notiz WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); @@ -267,14 +267,14 @@ class notiz extends basis_db } } - /** - * Speichert ein Dokument zur Notiz - * @param int $dms_id - * @return boolean - */ - public function saveDokument($dms_id) - { - $qry = "INSERT INTO public.tbl_notiz_dokument(notiz_id, dms_id) VALUES(". + /** + * Speichert ein Dokument zur Notiz + * @param int $dms_id + * @return boolean + */ + public function saveDokument($dms_id) + { + $qry = "INSERT INTO public.tbl_notiz_dokument(notiz_id, dms_id) VALUES(". $this->db_add_param($this->notiz_id, FHC_INTEGER).','. $this->db_add_param($dms_id, FHC_INTEGER).');'; @@ -287,7 +287,7 @@ class notiz extends basis_db $this->errormsg = 'Fehler beim Speichern der Daten'; return false; } - } + } /** * @@ -377,7 +377,7 @@ class notiz extends basis_db $obj->insertvon=$row->insertvon; $obj->updateamum=$row->updateamum; $obj->updatevon=$row->updatevon; - $obj->getDokumente($row->notiz_id); + $obj->getDokumente($row->notiz_id); $this->result[] = $obj; } @@ -404,9 +404,9 @@ class notiz extends basis_db public.tbl_notiz LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) WHERE person_id = ' . $this->db_add_param($person_id, FHC_INTEGER) . - ' AND (insertvon = ' . $this->db_add_param('online') .' OR insertvon = ' . $this->db_add_param('online_notiz').') + ' AND (insertvon = ' . $this->db_add_param('online') .' OR insertvon = ' . $this->db_add_param('online_notiz').') - ORDER BY notiz_id'; + ORDER BY notiz_id'; if($result = $this->db_query($qry)) { @@ -444,7 +444,7 @@ class notiz extends basis_db * (Name und Adresse der besuchten Schule) in eine Notiz mit * insertvon = online_ausbildung gespeichert. * Wird auf UDF umgebaut! - * + * * Laedt die Notizen zur Ausbilund vom Bewerbungstool * @param $person_id int * @return boolean @@ -457,8 +457,8 @@ class notiz extends basis_db public.tbl_notiz LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) WHERE person_id = ' . $this->db_add_param($person_id, FHC_INTEGER) . - ' AND insertvon = ' . $this->db_add_param('online_ausbildung') . - ' ORDER BY notiz_id'; + ' AND insertvon = ' . $this->db_add_param('online_ausbildung') . + ' ORDER BY notiz_id'; if($result = $this->db_query($qry)) { @@ -564,13 +564,13 @@ class notiz extends basis_db } } - /** - * Laedt die Dokumente der Notiz - * @return boolean - */ - public function getDokumente($notiz_id) - { - $qry = "SELECT dms_id FROM public.tbl_notiz_dokument WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); + /** + * Laedt die Dokumente der Notiz + * @return boolean + */ + public function getDokumente($notiz_id) + { + $qry = "SELECT dms_id FROM public.tbl_notiz_dokument WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); if($this->db_query($qry)) { @@ -579,12 +579,35 @@ class notiz extends basis_db $this->dokumente[] = $row->dms_id; } - return true; + return true; } else { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } - } + } + + /** + * Prueft ob das Dokument an einer Notiz haengt + * @param $dms_id DMS id des Dokuments. + * @return boolean true wenn das Dokument an einer Notiz hängt, sonst false. + */ + public function isNotizDokument($dms_id) + { + $qry = "SELECT * FROM public.tbl_notiz_dokument WHERE dms_id=".$this->db_add_param($dms_id, FHC_INTEGER); + + 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; + } + } } From 2f14e08cefc2ada3e8ef27d519fe2a1a7a01a11d Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 26 Sep 2018 10:15:31 +0200 Subject: [PATCH 06/15] - disabled overwriting non-ueberschreibbar grades in FAS --- content/student/studentDBDML.php | 49 +++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index 50d3a7612..c6c546654 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -2835,12 +2835,22 @@ if(!$error) //Die Daten werden per POST uebermittelt. Es wird ein Feld Anzahl mituebergeben //mit der Anzahl der Felder. Die Felder sind durchnummeriert zB lehreinheit_id_0, lehreinheit_id_1, ... $errormsg = ''; - $angerechnet=false; + $ueberschreibbar=true; + $nueberschreibbarbez=array(); for($i=0;$i<$_POST['anzahl'];$i++) { $lvgesamtnote = new lvgesamtnote(); $zeugnisnote = new zeugnisnote(); + $noten_ueberschreibbar = array(); + $noten_bezeichnung = array(); + $note_obj = new note(); + $note_obj->getAll(); + foreach($note_obj->result as $row) + { + $noten_ueberschreibbar[$row->note] = $row->lkt_ueberschreibbar; + $noten_bezeichnung[$row->note] = $row->bezeichnung; + } //Berechtigung pruefen $qry = "SELECT studiengang_kz FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id=".$db->db_add_param($_POST['lehrveranstaltung_id_'.$i], FHC_INTEGER); @@ -2902,10 +2912,13 @@ if(!$error) $zeugnisnote->new = false; $zeugnisnote->updateamum = date('Y-m-d H:i:s'); $zeugnisnote->updatevon = $user; - //Angerechnete Noten werden nicht ueberschrieben - if($zeugnisnote->note=='6') //Angerechnet + // Noten wie "angerechnet", "nicht erforderlich" werden nicht ueberschrieben + if(isset($zeugnisnote->note) && !$noten_ueberschreibbar[$zeugnisnote->note]) { - $angerechnet=true; + $notenbez = '"'.$noten_bezeichnung[$zeugnisnote->note].'"'; + if (!in_array($notenbez, $nueberschreibbarbez)) + $nueberschreibbarbez[] = $notenbez; + $ueberschreibbar = false; continue; } } @@ -2944,9 +2957,9 @@ if(!$error) } } } - if($angerechnet) + if(!$ueberschreibbar) { - $errormsg.="\nAngerechnete Noten wurden nicht ueberschrieben"; + $errormsg.="\nNote(n) ".implode(', ', $nueberschreibbarbez)." waren nicht ueberschreibbar"; } if($errormsg=='') @@ -2961,13 +2974,20 @@ if(!$error) //Die Felder sind durchnummeriert zB matrikelnummer_0, matrikelnummer_1, ... //Die Anzahl der Gesamten Daten wird auch als Parameter uebergeben $errormsg = ''; - $angerechnet=false; + $ueberschreibbar=true; + $nueberschreibbarbez=array(); $noten_anmerkung_arr=array(); + $noten_ueberschreibbar = array(); + $noten_bezeichnung = array(); $note_obj = new note(); $note_obj->getAll(); foreach($note_obj->result as $row) - $noten_anmerkung_arr[$row->anmerkung]=$row->note; + { + $noten_ueberschreibbar[$row->note] = $row->lkt_ueberschreibbar; + $noten_bezeichnung[$row->note] = $row->bezeichnung; + $noten_anmerkung_arr[$row->anmerkung] = $row->note; + } for($i=0;$i<$_POST['anzahl'];$i++) { @@ -3045,10 +3065,13 @@ if(!$error) $zeugnisnote->new = false; $zeugnisnote->updateamum = date('Y-m-d H:i:s'); $zeugnisnote->updatevon = $user; - //Angerechnete Noten werden nicht ueberschrieben - if($zeugnisnote->note=='6') //Angerechnet + // Noten wie "angerechnet", "nicht erforderlich" werden nicht ueberschrieben + if(isset($zeugnisnote->note) && !$noten_ueberschreibbar[$zeugnisnote->note]) { - $angerechnet=true; + $notenbez = '"'.$noten_bezeichnung[$zeugnisnote->note].'"'; + if (!in_array($notenbez, $nueberschreibbarbez)) + $nueberschreibbarbez[] = $notenbez; + $ueberschreibbar = false; continue; } } @@ -3100,9 +3123,9 @@ if(!$error) } } } - if($angerechnet) + if(!$ueberschreibbar) { - $errormsg.="\nAngerechnete Noten wurden nicht ueberschrieben"; + $errormsg.="\nNote(n) ".implode(', ', $nueberschreibbarbez)." waren nicht ueberschreibbar"; } if($errormsg=='') From 7299e9396954ce80a051e3d2595ff082b0674b55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 26 Sep 2018 11:48:36 +0200 Subject: [PATCH 07/15] Fixed creation of Studienblatt if there is an ampersand in the name of the Degree program --- rdf/studienblatt.xml.php | 238 +++++++++++++++++++-------------------- 1 file changed, 119 insertions(+), 119 deletions(-) diff --git a/rdf/studienblatt.xml.php b/rdf/studienblatt.xml.php index a3da0ea05..163b2749a 100644 --- a/rdf/studienblatt.xml.php +++ b/rdf/studienblatt.xml.php @@ -42,13 +42,13 @@ $studiensemester = (isset($_REQUEST['ss'])?$_REQUEST['ss']:null); $uid_arr = explode(";",$uid_arr); -echo "\n"; +echo "\n"; echo "\n"; $uid = isset($uid_arr[1])?$uid_arr[1]:$uid_arr[0]; $konto = new konto(); -$student_help = new student(); +$student_help = new student(); // an 2ter stelle da im Aufruf vom FAS ;; der erste immer '' ist if($student_help->load($uid)) { @@ -57,36 +57,36 @@ if($student_help->load($uid)) switch($studiengang->typ) { case 'b': - $studTyp = 'Bachelor'; - $titel_kurzbz = 'BSc'; - break; - case 'm': - $studTyp = 'Master'; - $titel_kurzbz ='MSc'; - break; + $studTyp = 'Bachelor'; + $titel_kurzbz = 'BSc'; + break; + case 'm': + $studTyp = 'Master'; + $titel_kurzbz ='MSc'; + break; case 'd': - $studTyp = 'Diplom'; + $studTyp = 'Diplom'; break; case 'l': - $studTyp = 'Lehrgang'; + $studTyp = 'Lehrgang'; break; case 'k': - $studTyp = 'Kurzstudium'; + $studTyp = 'Kurzstudium'; break; - default: - $studTyp =''; - $titel_kurzbz = ''; + default: + $studTyp =''; + $titel_kurzbz = ''; } echo "\t".$studTyp."\n"; - echo "\t".$studiengang->bezeichnung."\n"; + echo "\tbezeichnung."]]>\n"; } foreach($uid_arr as $uid) { if($uid=='') continue; - - echo "\t\n"; + + echo "\t\n"; $student = new student(); if($student->load($uid)) @@ -103,161 +103,161 @@ foreach($uid_arr as $uid) $studienplan->loadStudienplan($prestudent->studienplan_id); $staatsbuergerschaft = new nation(); $staatsbuergerschaft->load($student->staatsbuergerschaft); - - - $svnr = ($student->svnr == '')?'Ersatzkennzeichen: '.$student->ersatzkennzeichen:$student->svnr; - + + + $svnr = ($student->svnr == '')?'Ersatzkennzeichen: '.$student->ersatzkennzeichen:$student->svnr; + switch($student->geschlecht) { case 'm': - $geschlecht = 'Männlich'; + $geschlecht = 'Männlich'; + break; + case 'w': + $geschlecht = 'Weiblich'; break; - case 'w': - $geschlecht = 'Weiblich'; - break; case 'u': - $geschlecht = 'Unbekannt'; - break; - default: - $geschlecht =''; + $geschlecht = 'Unbekannt'; + break; + default: + $geschlecht =''; } - + //Wenn Lehrgang, dann Erhalter-KZ vor die Studiengangs-Kz hängen if ($studienordnung->studiengang_kz<0) { $stg = new studiengang(); $stg->load($studienordnung->studiengang_kz); - + $studiengang_kz = sprintf("%03s", $stg->erhalter_kz).sprintf("%04s", abs($studienordnung->studiengang_kz)); } else $studiengang_kz = sprintf("%04s", abs($studienordnung->studiengang_kz)); - - echo "\t\t1\n"; + + echo "\t\t1\n"; echo "\t\t".$uid."\n"; echo "\t\t".$geschlecht."\n"; - echo "\t\t".$student->anrede."\n"; - echo "\t\t".$student->vorname." ".$student->vornamen."\n"; - echo "\t\t".$student->vornamen."\n"; - echo "\t\t".$student->nachname."\n"; - echo "\t\t".$student->titelpre."\n"; - echo "\t\t".$student->titelpost."\n"; + echo "\t\tanrede."]]>\n"; + echo "\t\tvorname." ".$student->vornamen."]]>\n"; + echo "\t\tvornamen."]]>\n"; + echo "\t\tnachname."]]>\n"; + echo "\t\ttitelpre."]]>\n"; + echo "\t\ttitelpost."]]>\n"; echo "\t\t".$gebdatum."\n"; - echo "\t\t".$student->gebort."\n"; - echo "\t\t".$staatsbuergerschaft->langtext."\n"; + echo "\t\tgebort."]]>\n"; + echo "\t\tlangtext."]]>\n"; echo "\t\t".$svnr."\n"; echo "\t\t".trim($student->matr_nr)."\n"; echo "\t\t".trim($student->matrikelnr)."\n"; - echo "\t\t".$studienordnung->studiengangbezeichnung."\n"; - echo "\t\t".$studienordnung->studiengangbezeichnung_englisch."\n"; - echo "\t\t".$studienordnung->studiengangkurzbzlang."\n"; - echo "\t\t".$studiengang_kz."\n"; - echo "\t\t".$studienplan->sprache.""; - echo "\t\t".$studienordnung->ects.""; + echo "\t\tstudiengangbezeichnung."]]>\n"; + echo "\t\tstudiengangbezeichnung_englisch."]]>\n"; + echo "\t\tstudiengangkurzbzlang."]]>\n"; + echo "\t\t\n"; + echo "\t\tsprache."]]>"; + echo "\t\t".$studienordnung->ects.""; echo "\t\t".($studienplan->regelstudiendauer!=0?$studienordnung->ects/$studienplan->regelstudiendauer:0).""; - - echo "\t\t".date('Y').""; - + + echo "\t\t".date('Y').""; + echo "\t\t".$prestudent->ausbildungssemester.""; - + $studiensemester_aktuell = new studiensemester(); $studiensemester_aktuell->load($studiensemester); - - echo "\t\t".$studiensemester_aktuell->bezeichnung.""; - + + echo "\t\tbezeichnung."]]>"; + // check ob Oeh-Beitrag bezahlt wurde $oehbeitrag = $konto->getOehBeitragGesamt($uid, $studiensemester_aktuell->studiensemester_kurzbz); echo "\t\t".str_replace('.', ',', $oehbeitrag).""; - + // check ob Quereinsteiger - $ausbildungssemester = ($prestudent->getFirstStatus($student->prestudent_id, 'Student'))?$prestudent->ausbildungssemester:''; + $ausbildungssemester = ($prestudent->getFirstStatus($student->prestudent_id, 'Student'))?$prestudent->ausbildungssemester:''; echo "\t\t".$ausbildungssemester.""; - + $studiensemester_beginn = new studiensemester(); $studienbeginn = ($prestudent->getFirstStatus($student->prestudent_id, 'Student'))?$prestudent->studiensemester_kurzbz:''; $studiensemester_beginn->load($studienbeginn); - + echo "\t\t".$studiensemester_beginn->bezeichnung.""; echo "\t\t".date('d.m.Y',strtotime($studiensemester_beginn->start)).""; - + $prestudent->getLastStatus($student->prestudent_id,$studiensemester); $studiensemester_abschluss = new studiensemester(); $abschluss = $studiensemester_abschluss->jump($prestudent->studiensemester_kurzbz, $studienplan->regelstudiendauer-$prestudent->ausbildungssemester); $studiensemester_abschluss->load($abschluss); echo "\t\t".$studiensemester_abschluss->bezeichnung.""; echo "\t\t".date('d.m.Y',strtotime($studiensemester_abschluss->ende)).""; - + $studiensemester_endedatum = new studiensemester(); $studiensemester_endedatum->load($studiensemester_endedatum->getaktorNext(1)); - + echo "\t\t".date('d.m.Y',strtotime($studiensemester_endedatum->ende)).""; - + $status_aktuell = ($prestudent->getLastStatus($student->prestudent_id,null,null))?$prestudent->status_kurzbz:''; - + switch($status_aktuell) { case 'Student': - $studierendenstatus_aktuell = 'Aktive/r StudentIn'; + $studierendenstatus_aktuell = 'Aktive/r StudentIn'; + break; + case 'Unterbrecher': + $studierendenstatus_aktuell = 'UnterbrecherIn'; break; - case 'Unterbrecher': - $studierendenstatus_aktuell = 'UnterbrecherIn'; - break; case 'Absolvent': - $studierendenstatus_aktuell = 'AbsolventIn'; + $studierendenstatus_aktuell = 'AbsolventIn'; break; case 'Diplomand': - $studierendenstatus_aktuell = 'DiplomandIn'; - break; + $studierendenstatus_aktuell = 'DiplomandIn'; + break; case 'Abbrecher': $studierendenstatus_aktuell = 'AbbrecherIn'; break; - default: - $studierendenstatus_aktuell =''; + default: + $studierendenstatus_aktuell =''; } - + echo "\t\t".$studierendenstatus_aktuell."\n"; echo "\t\t".$prestudent->zgvdatum."\n"; $zgv = new zgv($prestudent->zgv_code); - echo "\t\t".$zgv->zgv_kurzbz."\n"; - echo "\t\t".$studienplan->bezeichnung."\n"; + echo "\t\tzgv_kurzbz."]]>\n"; + echo "\t\tbezeichnung."]]>\n"; echo "\t\tanmerkung]]>\n"; - + $titel_kurzbz = ''; switch($studiengang->typ) { case 'b': - $studTyp = 'Bachelor'; - $titel_kurzbz = 'BSc'; + $studTyp = 'Bachelor'; + $titel_kurzbz = 'BSc'; + break; + case 'm': + $studTyp = 'Master'; + $titel_kurzbz ='MSc'; break; - case 'm': - $studTyp = 'Master'; - $titel_kurzbz ='MSc'; - break; case 'd': - $studTyp = 'Diplom'; - break; + $studTyp = 'Diplom'; + break; case 'l': - $studTyp = 'Lehrgang'; + $studTyp = 'Lehrgang'; break; case 'k': - $studTyp = 'Kurzstudium'; + $studTyp = 'Kurzstudium'; break; - default: - $studTyp =''; - $titel_kurzbz = ''; + default: + $studTyp =''; + $titel_kurzbz = ''; } - - echo "\t\t".$titel_kurzbz."\n"; - echo "\t\t".$studTyp."\n"; - echo "\t\t".$studienplan->sprache."\n"; + + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\tsprache."]]>\n"; echo "\t\t".$studienplan->regelstudiendauer."\n"; - + $akadgrad = new akadgrad(); $akadgrad->getAkadgradStudent($student->uid); - - echo "\t\t".$akadgrad->titel."\n"; - echo "\t\t".$akadgrad->akadgrad_kurzbz."\n"; - + + echo "\t\ttitel."]]>\n"; + echo "\t\takadgrad_kurzbz."]]>\n"; + //für ao. Studierende wird die StgKz der Lehrveranstaltungen benötigt, die sie besuchen $lv_studiengang_kz=''; $lv_studiengang_bezeichnung=''; @@ -272,26 +272,26 @@ foreach($uid_arr as $uid) $lv_studiengang=new studiengang(); $lv_studiengang->load($lv_studiengang_kz); $lv_studiengang_bezeichnung=$lv_studiengang->bezeichnung; - $stg_typ->getStudiengangTyp($lv_studiengang->typ); + $stg_typ->getStudiengangTyp($lv_studiengang->typ); $lv_studiengang_typ=$stg_typ->bezeichnung; } - + echo "\t\t".sprintf('%04s', $lv_studiengang_kz).""; - echo "\t\t$lv_studiengang_typ"; - echo "\t\t$lv_studiengang_bezeichnung"; - + echo "\t\t"; + echo "\t\t"; + echo "\t\t".$datum_aktuell."\n"; $adresse = new adresse(); $adresse->load_pers($student->person_id); - + foreach($adresse->result as $row_adresse) { if($row_adresse->zustelladresse) { echo "\t\tstrasse]]>\n"; - echo "\t\t".$row_adresse->plz." ".$row_adresse->ort."\n"; - echo "\t\t".$row_adresse->nation."\n"; + echo "\t\tplz." ".$row_adresse->ort."]]>\n"; + echo "\t\tnation."]]>\n"; break; } } @@ -300,25 +300,25 @@ foreach($uid_arr as $uid) if($row_adresse->heimatadresse) { echo "\t\tstrasse]]>\n"; - echo "\t\t".$row_adresse->plz." ".$row_adresse->ort."\n"; - echo "\t\t".$row_adresse->nation."\n"; + echo "\t\tplz." ".$row_adresse->ort."]]>\n"; + echo "\t\tnation."]]>\n"; break; } } $prestudent = new prestudent(); $prestudent->getLastStatus($student->prestudent_id, null); - + if($prestudent->orgform_kurzbz!='') $orgform = $prestudent->orgform_kurzbz; else $orgform = $studienplan->orgform_kurzbz; - + $orgform_bez = new organisationsform(); $orgform_bez->load($orgform); - - echo "\t\t".$orgform."\n"; - echo "\t\t".$orgform_bez->bezeichnung."\n"; - + + echo "\t\t\n"; + echo "\t\tbezeichnung."]]>\n"; + //Studiengangsleiter auslesen $stg_oe_obj = new studiengang($studienordnung->studiengang_kz); if ($studienordnung->studiengang_kz=='') @@ -331,11 +331,11 @@ foreach($uid_arr as $uid) $stgl_ma = new mitarbeiter($stgleiter_uid); $stgl .= trim($stgl_ma->titelpre.' '.$stgl_ma->vorname.' '.$stgl_ma->nachname.' '.$stgl_ma->titelpost); } - - echo "\t\t$stgl\n"; - } + + echo "\t\t\n"; + } echo "\t\n"; } -echo ""; +echo ""; ?> From 4a384c17cbd2cc7a7c7cf7cbf05f173aa6b0f2f9 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 26 Sep 2018 17:52:07 +0200 Subject: [PATCH 08/15] - Fixed Projektliste bug concerning rounding difference (now no difference with casetime list) --- cis/private/tools/zeitaufzeichnung_projektliste.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung_projektliste.php b/cis/private/tools/zeitaufzeichnung_projektliste.php index 391167186..8ba79d9d1 100644 --- a/cis/private/tools/zeitaufzeichnung_projektliste.php +++ b/cis/private/tools/zeitaufzeichnung_projektliste.php @@ -271,12 +271,12 @@ for ($i = 0; $i < count($ztaufdata); $i++) $projectlines[$day]->arbeitszeit -= $projectlines[$day]->arbeitszeit - 6; } - $projectlines[$day]->arbeitszeit = floor($projectlines[$day]->arbeitszeit * 100) / 100; + $projectlines[$day]->arbeitszeit = round($projectlines[$day]->arbeitszeit, 2); foreach ($projectlines[$day]->projekte as $name => $project) { $projecthours =& $projectlines[$day]->projekte[$name]->stunden; - $projecthours = floor($projecthours * 100) / 100; + $projecthours = round($projecthours, 2); if (array_key_exists($name, $monthsums)) $monthsums[$name] += $projecthours; else From 70a80cd84c408f70c53d45c5b33f2d730438d711 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 27 Sep 2018 14:46:58 +0200 Subject: [PATCH 09/15] =?UTF-8?q?-=20type-safe=20comparison=20f=C3=BCr=20?= =?UTF-8?q?=C3=BCberschreibbare=20noten=20(default=20true)=20-=20null-chec?= =?UTF-8?q?ks=20=C3=BCberschreibbare=20noten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lehre/benotungstool/lvgesamtnoteeintragen.php | 15 +++++++++------ .../lehre/benotungstool/lvgesamtnoteverwalten.php | 6 +++++- content/student/studentDBDML.php | 4 ++-- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php b/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php index 7d75af4bc..3c9985a8b 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php @@ -246,13 +246,16 @@ if (isset($_REQUEST["submit"])) { $znote = $zeugnisnote->note; - $notenobj = $noten_arr[$znote]; - - // Note nicht speichern wenn Zeugnisnote nicht überschreibbar - if (!$notenobj->lkt_ueberschreibbar) + if (!empty($znote) && array_key_exists($znote, $noten_arr)) { - $response .= "\n".$p->t('benotungstool/noteNichtUeberschreibbar', array($matrikelnummer, $notenobj->bezeichnung)); - continue; + $notenobj = $noten_arr[$znote]; + + // Note nicht speichern wenn Zeugnisnote nicht überschreibbar + if ($notenobj->lkt_ueberschreibbar === false) + { + $response .= "\n".$p->t('benotungstool/noteNichtUeberschreibbar', array($matrikelnummer, $notenobj->bezeichnung)); + continue; + } } } diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php index d98d96e2a..a41e362fd 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php @@ -1252,7 +1252,11 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG "; // nur überschreibbare Noten können geändert werden - $ueberschreibbar = is_null($znote) || $noten_array[$znote]['lkt_ueberschreibbar']; + $ueberschreibbar = true; + + if (isset($noten_array[$znote]['lkt_ueberschreibbar']) && $noten_array[$znote]['lkt_ueberschreibbar'] === false) + $ueberschreibbar = false; + // Punkte if (CIS_GESAMTNOTE_PUNKTE) { diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index c6c546654..aa7294576 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -2913,7 +2913,7 @@ if(!$error) $zeugnisnote->updateamum = date('Y-m-d H:i:s'); $zeugnisnote->updatevon = $user; // Noten wie "angerechnet", "nicht erforderlich" werden nicht ueberschrieben - if(isset($zeugnisnote->note) && !$noten_ueberschreibbar[$zeugnisnote->note]) + if(isset($zeugnisnote->note) && array_key_exists($zeugnisnote->note, $noten_ueberschreibbar) && $noten_ueberschreibbar[$zeugnisnote->note] === false) { $notenbez = '"'.$noten_bezeichnung[$zeugnisnote->note].'"'; if (!in_array($notenbez, $nueberschreibbarbez)) @@ -3066,7 +3066,7 @@ if(!$error) $zeugnisnote->updateamum = date('Y-m-d H:i:s'); $zeugnisnote->updatevon = $user; // Noten wie "angerechnet", "nicht erforderlich" werden nicht ueberschrieben - if(isset($zeugnisnote->note) && !$noten_ueberschreibbar[$zeugnisnote->note]) + if(isset($zeugnisnote->note) && array_key_exists($zeugnisnote->note, $noten_ueberschreibbar) && $noten_ueberschreibbar[$zeugnisnote->note] === false) { $notenbez = '"'.$noten_bezeichnung[$zeugnisnote->note].'"'; if (!in_array($notenbez, $nueberschreibbarbez)) From fa99863f85d1dea7b4934c11ca1ec57472ce61da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 27 Sep 2018 15:40:02 +0200 Subject: [PATCH 10/15] =?UTF-8?q?Gegencheck=20f=C3=BCr=20Spalte=20lkt=5Fue?= =?UTF-8?q?berschreibbar=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- system/dbupdate_3.3.php | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index a7fba3ba8..f75120b0c 100755 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -506,17 +506,6 @@ if(!$result = @$db->db_query("SELECT offiziell FROM lehre.tbl_note LIMIT 1;")) echo '
lehre.tbl_note: Spalte offiziell hinzugefuegt!
'; } -// Spalte lkt_ueberschreibbar in lehre.tbl_note -if(!$result = @$db->db_query("SELECT lkt_ueberschreibbar FROM lehre.tbl_note LIMIT 1;")) -{ - $qry = "ALTER TABLE lehre.tbl_note ADD COLUMN lkt_ueberschreibbar boolean NOT NULL DEFAULT true;"; - - if(!$db->db_query($qry)) - echo 'lehre.tbl_note: '.$db->db_last_error().'
'; - else - echo '
lehre.tbl_note: Spalte lkt_ueberschreibbar hinzugefuegt!
'; -} - // Spalte bezeichnung_mehrsprachig in lehre.tbl_note if(!$result = @$db->db_query("SELECT bezeichnung_mehrsprachig FROM lehre.tbl_note LIMIT 1")) { @@ -2393,6 +2382,18 @@ if(!$result = @$db->db_query("SELECT updateaktivam FROM campus.vw_mitarbeiter LI else echo '
campus.vw_mitarbeiter: Spalte updateaktivam, updateaktivon, lastupdate hinzugefuegt'; } + +// Spalte lkt_ueberschreibbar in lehre.tbl_note +if(!$result = @$db->db_query("SELECT lkt_ueberschreibbar FROM lehre.tbl_note LIMIT 1;")) +{ + $qry = "ALTER TABLE lehre.tbl_note ADD COLUMN lkt_ueberschreibbar boolean NOT NULL DEFAULT true;"; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_note: '.$db->db_last_error().'
'; + else + echo '
lehre.tbl_note: Spalte lkt_ueberschreibbar hinzugefuegt!
'; +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -2514,7 +2515,7 @@ $tabellen=array( "lehre.tbl_notenschluessel" => array("notenschluessel_kurzbz","bezeichnung"), "lehre.tbl_notenschluesselaufteilung" => array("notenschluesselaufteilung_id","notenschluessel_kurzbz","note","punkte"), "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"), + "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_projekttyp" => array("projekttyp_kurzbz","bezeichnung"), From f907cd72924ac6fc119fd88281a2c08832f9c502 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 28 Sep 2018 17:03:26 +0200 Subject: [PATCH 11/15] - Benutzerfunktionen can be retrieved recursively by oe (oe and all oes below) --- .../education/Lehrveranstaltung_model.php | 10 ++--- .../models/person/Benutzerfunktion_model.php | 43 ++++++++++++++++--- 2 files changed, 41 insertions(+), 12 deletions(-) diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php index c042c2e0a..0a76df4b9 100644 --- a/application/models/education/Lehrveranstaltung_model.php +++ b/application/models/education/Lehrveranstaltung_model.php @@ -14,11 +14,11 @@ class Lehrveranstaltung_model extends DB_Model /** * Gets unique Groupstrings for Lehrveranstaltungen, e.g. WS2018_BIF_1_PRJM_VZ_LV12345 - * @param $studiensemester_kurzbz - * @param null $ausbildungssemester - * @param null $studiengang_kz - * @param null $lehrveranstaltung_ids - * @return StdClass + * @param string $studiensemester_kurzbz + * @param string $ausbildungssemester + * @param string $studiengang_kz + * @param string|array $lehrveranstaltung_ids + * @return array|null */ public function getLehrveranstaltungGroupNames($studiensemester_kurzbz, $ausbildungssemester = null, $studiengang_kz = null, $lehrveranstaltung_ids = null) { diff --git a/application/models/person/Benutzerfunktion_model.php b/application/models/person/Benutzerfunktion_model.php index e6f030e7f..02a27e87a 100644 --- a/application/models/person/Benutzerfunktion_model.php +++ b/application/models/person/Benutzerfunktion_model.php @@ -25,13 +25,14 @@ class Benutzerfunktion_model extends DB_Model /** * Gets all Benutzer for a given OE and specified Benutzerfunktionen - * @param $funktion_kurzbz string with one benutzerfunktionname or array with one or more - * @param $oe_kurzbz - * @param bool $activeoeonly if true, retrieve only active Organisationseinheiten - * @param bool $activebenonly if true, retrieve only active Benutzer + * @param string $funktion_kurzbz String with one benutzerfunktionname or array with one or more. + * @param string $oe_kurzbz + * @param bool $activeoeonly If true, retrieve only active Organisationseinheiten. + * @param bool $activebenonly If true, retrieve only active Benutzer. + * @param bool $oerecursive If true, retrieve all oes under given oe_kurzbz recursively. * @return array|null */ - public function getBenutzerFunktionen($funktion_kurzbz, $oe_kurzbz = null, $activeoeonly = false, $activebenonly = false) + public function getBenutzerFunktionen($funktion_kurzbz, $oe_kurzbz = null, $activeoeonly = false, $activebenonly = false, $oerecursive = false) { $parametersArray = array(); @@ -57,7 +58,35 @@ class Benutzerfunktion_model extends DB_Model if (is_string($oe_kurzbz)) { - $query .= " AND tbl_benutzerfunktion.oe_kurzbz = ?"; + if ($oerecursive === true) + { + $query .= + " AND oe_kurzbz IN + ( + WITH RECURSIVE oes(oe_kurzbz, oe_parent_kurzbz, aktiv) as + ( + SELECT oe_kurzbz, oe_parent_kurzbz, aktiv FROM public.tbl_organisationseinheit + WHERE oe_kurzbz=?"; + + if ($activeoeonly === true) + $query .= " AND aktiv=true"; + + $query .= + " UNION ALL + SELECT o.oe_kurzbz, o.oe_parent_kurzbz, o.aktiv FROM public.tbl_organisationseinheit o, oes + WHERE o.oe_parent_kurzbz=oes.oe_kurzbz + ) + SELECT oe_kurzbz + FROM oes"; + if ($activeoeonly === true) + { + $query .= " WHERE aktiv=true"; + } + $query .= " GROUP BY oe_kurzbz)"; + } + else + $query .= " AND tbl_benutzerfunktion.oe_kurzbz = ?"; + $parametersArray[] = $oe_kurzbz; } @@ -71,7 +100,7 @@ class Benutzerfunktion_model extends DB_Model $query .= " AND tbl_organisationseinheit.aktiv"; } - $query .= " ORDER BY funktion_kurzbz, oe_kurzbz, uid"; + $query .= " ORDER BY oe_kurzbz, funktion_kurzbz, uid"; return $this->execQuery($query, $parametersArray); } From 597ed8a16ef360efedd26a0568fa04af4a859e50 Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 2 Oct 2018 16:23:57 +0200 Subject: [PATCH 12/15] Added "zeitaufzeichnungspflichtig" to FAS and DB The field 'zeitaufzeichnungspflichtig' indicates the obligation of an employee to record working times. (-> monthlists should then be created) . added column to tbl_bisverwendung and value true for all employees, who are fix angestellt . added FAS GUI in popup window when creating new contract of employment -- by default checkbox is checked when employee is fix angestellt, otherwise unchecked. --- content/mitarbeiter/mitarbeiterDBDML.php | 6 +++ content/mitarbeiter/mitarbeiteroverlay.js.php | 2 + .../mitarbeiterverwendungdialog.js.php | 28 +++++++++++++ .../mitarbeiterverwendungdialog.xul.php | 4 ++ include/bisverwendung.class.php | 24 ++++++++++-- rdf/bisverwendung.rdf.php | 8 +++- system/dbupdate_3.3.php | 39 ++++++++++++++++++- 7 files changed, 106 insertions(+), 5 deletions(-) diff --git a/content/mitarbeiter/mitarbeiterDBDML.php b/content/mitarbeiter/mitarbeiterDBDML.php index 63235d960..6bb1513d0 100644 --- a/content/mitarbeiter/mitarbeiterDBDML.php +++ b/content/mitarbeiter/mitarbeiterDBDML.php @@ -169,6 +169,12 @@ if(!$error) $verwendung->updatevon = $user; $verwendung->dv_art = $_POST['dv_art']; $verwendung->inkludierte_lehre = $_POST['inkludierte_lehre']; + if($_POST['zeitaufzeichnungspflichtig']=='true') + $verwendung->zeitaufzeichnungspflichtig = true; + elseif($_POST['zeitaufzeichnungspflichtig']=='false') + $verwendung->zeitaufzeichnungspflichtig = false; + else + $verwendung->zeitaufzeichnungspflichtig = ''; if($verwendung->save()) { diff --git a/content/mitarbeiter/mitarbeiteroverlay.js.php b/content/mitarbeiter/mitarbeiteroverlay.js.php index c5340614d..9acde5c9b 100644 --- a/content/mitarbeiter/mitarbeiteroverlay.js.php +++ b/content/mitarbeiter/mitarbeiteroverlay.js.php @@ -1209,6 +1209,7 @@ function MitarbeiterVerwendungSpeichern(dialog, bisverwendung_id, mitarbeiter_ui vertragsstunden = dialog.getElementById('mitarbeiter-verwendung-detail-textbox-vertragsstunden').value; dv_art = dialog.getElementById('mitarbeiter-verwendung-detail-textbox-dv_art').value; inkludierte_lehre = dialog.getElementById('mitarbeiter-verwendung-detail-textbox-inkludierte_lehre').value; + zeitaufzeichnungspflichtig = dialog.getElementById('mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig').checked; if(verwendung_code=='1' || verwendung_code=='5' || verwendung_code=='6') { @@ -1266,6 +1267,7 @@ function MitarbeiterVerwendungSpeichern(dialog, bisverwendung_id, mitarbeiter_ui req.add('vertragsstunden', vertragsstunden); req.add('dv_art', dv_art); req.add('inkludierte_lehre', inkludierte_lehre); + req.add('zeitaufzeichnungspflichtig', zeitaufzeichnungspflichtig); var response = req.executePOST(); diff --git a/content/mitarbeiter/mitarbeiterverwendungdialog.js.php b/content/mitarbeiter/mitarbeiterverwendungdialog.js.php index 0a0894756..2b3bcfafd 100644 --- a/content/mitarbeiter/mitarbeiterverwendungdialog.js.php +++ b/content/mitarbeiter/mitarbeiterverwendungdialog.js.php @@ -69,9 +69,25 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id) vertragsstunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertragsstunden" )); dv_art = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#dv_art" )); inkludierte_lehre = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#inkludierte_lehre" )); + zeitaufzeichnungspflichtig = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zeitaufzeichnungspflichtig" )); } else { + //Laden der Daten + //Daten holen + var url = 'rdf/personal.rdf.php?uid='+MitarbeiterVerwendungDetailMitarbeiterUid+'&'+gettimestamp(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. + getService(Components.interfaces.nsIRDFService); + + var dsource = rdfService.GetDataSourceBlocking(url); + + var subject = rdfService.GetResource("http://www.technikum-wien.at/mitarbeiter/" + MitarbeiterVerwendungDetailMitarbeiterUid); + + var predicateNS = "http://www.technikum-wien.at/mitarbeiter/rdf"; + + fixangestellt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#fixangestellt" )); + //neuer Datensatz wird angelegt MitarbeiterVerwendungDetailNeu='true'; @@ -88,6 +104,14 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id) vertragsstunden='38.5'; dv_art=''; inkludierte_lehre=''; + if (fixangestellt=='Ja') + { + zeitaufzeichnungspflichtig='Ja'; + } + else + { + zeitaufzeichnungspflichtig='Nein'; + } } document.getElementById('mitarbeiter-verwendung-detail-menulist-beschart1').value=ba1code; @@ -110,6 +134,10 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id) document.getElementById('mitarbeiter-verwendung-detail-textbox-vertragsstunden').value=vertragsstunden; document.getElementById('mitarbeiter-verwendung-detail-textbox-dv_art').value=dv_art; document.getElementById('mitarbeiter-verwendung-detail-textbox-inkludierte_lehre').value=inkludierte_lehre; + if(zeitaufzeichnungspflichtig=='Ja') + document.getElementById('mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig').checked=true; + else + document.getElementById('mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig').checked=false; MitarbeiterVerwendungDetailToggleHauptberuf(); MitarbeiterVerwendungVerwendungChange(); diff --git a/content/mitarbeiter/mitarbeiterverwendungdialog.xul.php b/content/mitarbeiter/mitarbeiterverwendungdialog.xul.php index 9a5231b61..bc87a097d 100644 --- a/content/mitarbeiter/mitarbeiterverwendungdialog.xul.php +++ b/content/mitarbeiter/mitarbeiterverwendungdialog.xul.php @@ -162,6 +162,10 @@ echo '