diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index c5818ebb3..b08d977e8 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -995,6 +995,18 @@ if(!$error) { $new_status_datum = isset($_POST['datum']) ? $_POST['datum'] : date('Y-m-d'); + $bismeldestichtag = new bismeldestichtag(); + + $meldestichtag_erreicht = $bismeldestichtag->checkMeldestichtagErreicht($studiensemester, $new_status_datum); + + if ($meldestichtag_erreicht === true) + { + $return = false; + $error = true; + $errormsg .= 'Studentstatus mit Datum oder Semesterende vor erreichtem Meldestichtag können nicht hinzugefügt werden.'; + $anzahl_fehler++; + } + $check_statusaenderung_result = checkStatusaenderung( $prestudent_id, $_POST['status_kurzbz'], @@ -1205,13 +1217,24 @@ if(!$error) if(isset($_POST['studiensemester_kurzbz']) && isset($_POST['status_kurzbz']) && isset($_POST['prestudent_id']) && is_numeric($_POST['prestudent_id']) && - isset($_POST['ausbildungssemester']) && is_numeric($_POST['ausbildungssemester'])) + isset($_POST['ausbildungssemester']) && is_numeric($_POST['ausbildungssemester']) && + isset($_POST['datum'])) { - if($_POST['status_kurzbz']=='Student' && !$rechte->isBerechtigt('admin', null, 'suid') && !$rechte->isBerechtigt('student/keine_studstatuspruefung', null, 'suid')) + $erweiterteBerechtigungen = $rechte->isBerechtigt('admin', null, 'suid') || $rechte->isBerechtigt('student/keine_studstatuspruefung', null, 'suid'); + + $bismeldestichtag = new bismeldestichtag(); + $meldestichtag_erreicht = $bismeldestichtag->checkMeldestichtagErreicht($_POST['studiensemester_kurzbz'], $_POST['datum']); + + if($_POST['status_kurzbz']=='Student' && !$erweiterteBerechtigungen) { $return = false; $errormsg = 'Studentenrolle kann nur durch den Administrator geloescht werden'; } + elseif ($meldestichtag_erreicht && !$erweiterteBerechtigungen) + { + $return = false; + $errormsg = 'Studentstatus mit Datum oder Semesterende vor erreichtem Meldestichtag können nicht gelöscht werden.'; + } else { $qry = "SELECT count(*) as anzahl FROM public.tbl_prestudentstatus WHERE prestudent_id=".$db->db_add_param($_POST['prestudent_id'], FHC_INTEGER); @@ -1531,6 +1554,17 @@ if(!$error) $error = true; $errormsg = isset($check_statusaenderung_result['errormsg']) ? $check_statusaenderung_result['errormsg'] : ''; } + + // Prüfung, ob Meldestichtag erreicht ist + $bismeldestichtag = new bismeldestichtag(); + $meldestichtag_erreicht = $bismeldestichtag->checkMeldestichtagErreicht($_POST['studiensemester_kurzbz'], $_POST['datum']); + + if ($meldestichtag_erreicht === true) + { + $return = false; + $error = true; + $errormsg = 'Studentstatus mit Datum oder Semesterende vor erreichtem Meldestichtag können nicht hinzugefügt werden.'; + } } if(!$error) diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php index d9686d5e3..f2dffc041 100644 --- a/content/student/studentoverlay.js.php +++ b/content/student/studentoverlay.js.php @@ -2000,6 +2000,7 @@ function StudentPrestudentRolleDelete() var studiensemester_kurzbz = getTreeCellText(tree, 'student-prestudent-tree-rolle-studiensemester_kurzbz', tree.currentIndex); var prestudent_id = getTreeCellText(tree, 'student-prestudent-tree-rolle-prestudent_id', tree.currentIndex); var ausbildungssemester = getTreeCellText(tree, 'student-prestudent-tree-rolle-ausbildungssemester', tree.currentIndex); + var datum = getTreeCellText(tree, 'student-prestudent-tree-rolle-datum', tree.currentIndex); studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value; if(confirm('Diese Rolle wirklich loeschen?')) @@ -2028,6 +2029,7 @@ function StudentPrestudentRolleDelete() req.add('studiensemester_kurzbz', studiensemester_kurzbz); req.add('ausbildungssemester', ausbildungssemester); req.add('studiengang_kz', studiengang_kz); + req.add('datum', datum); var response = req.executePOST(); @@ -2059,6 +2061,7 @@ function StudentPrestudentRolleDelete() req.add('studiensemester_kurzbz', studiensemester_kurzbz); req.add('ausbildungssemester', ausbildungssemester); req.add('studiengang_kz', studiengang_kz); + req.add('datum', datum); var response = req.executePOST(); @@ -2151,8 +2154,9 @@ function StudentRolleBearbeiten() var studiensemester_kurzbz = getTreeCellText(tree, 'student-prestudent-tree-rolle-studiensemester_kurzbz', tree.currentIndex); var prestudent_id = getTreeCellText(tree, 'student-prestudent-tree-rolle-prestudent_id', tree.currentIndex); var ausbildungssemester = getTreeCellText(tree, 'student-prestudent-tree-rolle-ausbildungssemester', tree.currentIndex); + var datum = getTreeCellText(tree, 'student-prestudent-tree-rolle-datum', tree.currentIndex); - window.open('content/student/studentrolledialog.xul.php?prestudent_id='+prestudent_id+'&status_kurzbz='+status_kurzbz+'&studiensemester_kurzbz='+studiensemester_kurzbz+'&ausbildungssemester='+ausbildungssemester,"Status","status=no, width=500, height=450, centerscreen, resizable"); + window.open('content/student/studentrolledialog.xul.php?prestudent_id='+prestudent_id+'&status_kurzbz='+status_kurzbz+'&studiensemester_kurzbz='+studiensemester_kurzbz+'&ausbildungssemester='+ausbildungssemester+'&datum='+datum,"Status","status=no, width=500, height=450, centerscreen, resizable"); } // **** @@ -2210,7 +2214,7 @@ function StudentRolleSpeichern(dialog, studiensemester_old, ausbildungssemester_ timepart_arr[i] = '00'; } } - + arr = datepart.split('.'); if(arr[0].length==1) diff --git a/content/student/studentrolledialog.xul.php b/content/student/studentrolledialog.xul.php index ef2c0919a..37ec0e983 100644 --- a/content/student/studentrolledialog.xul.php +++ b/content/student/studentrolledialog.xul.php @@ -31,6 +31,7 @@ require_once('../../include/person.class.php'); require_once('../../include/prestudent.class.php'); require_once('../../include/studienplan.class.php'); require_once('../../include/benutzerberechtigung.class.php'); +require_once('../../include/bismeldestichtag.class.php'); echo ''."\n"; @@ -58,6 +59,11 @@ if(isset($_GET['ausbildungssemester'])) else $ausbildungssemester=''; +if(isset($_GET['datum'])) + $datum=$_GET['datum']; +else + $datum=''; + $vorname = ''; $nachname = ''; if($prestudent_id!='') @@ -67,6 +73,10 @@ if($prestudent_id!='') $vorname = $prestudent->vorname; $nachname = $prestudent->nachname; + + // Prüfen, ob Studnetrolle vor dem aktuellen Meldestichtag ist. In diesem Fall darf die Rolle nicht mehr bearbeitet werden. + $bismeldestichtag = new bismeldestichtag(); + $disabled = $bismeldestichtag->checkMeldestichtagErreicht($studiensemester_kurzbz, $datum) ? ' disabled="true"' : ''; } $db = new basis_db(); $user=get_uid(); @@ -112,7 +122,7 @@ $user=get_uid();