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();