Aufgabe beenden: class_modules zuruecksetzen (Bug: Schueler sah Aufgabe weiter)
stop setzt class_modules teacher_started -> free (paused=0, started_at=NULL), sonst liest die Schueler-Ansicht (class_modules) die beendete Aufgabe weiter. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -82,10 +82,24 @@ if ($method === 'POST') {
|
|||||||
if ($action === 'stop') {
|
if ($action === 'stop') {
|
||||||
$assignmentId = (int)($body['assignmentId'] ?? 0);
|
$assignmentId = (int)($body['assignmentId'] ?? 0);
|
||||||
if (!$assignmentId) Response::error('assignmentId erforderlich');
|
if (!$assignmentId) Response::error('assignmentId erforderlich');
|
||||||
|
// Zugehörige Klasse+Modul holen (für die class_modules-Bereinigung)
|
||||||
|
$row = $db->fetchOne(
|
||||||
|
'SELECT class_id, module_id FROM class_assignments WHERE id = ? AND teacher_id = ?',
|
||||||
|
[$assignmentId, $teacherId]
|
||||||
|
);
|
||||||
$db->execute(
|
$db->execute(
|
||||||
'UPDATE class_assignments SET active = 0, ends_at = NOW() WHERE id = ? AND teacher_id = ?',
|
'UPDATE class_assignments SET active = 0, ends_at = NOW() WHERE id = ? AND teacher_id = ?',
|
||||||
[$assignmentId, $teacherId]
|
[$assignmentId, $teacherId]
|
||||||
);
|
);
|
||||||
|
// Auftrag beenden = class_modules aus 'teacher_started' zurück auf 'free',
|
||||||
|
// sonst sieht die Schüler-Ansicht (liest class_modules) die Aufgabe weiter.
|
||||||
|
if ($row) {
|
||||||
|
$db->execute(
|
||||||
|
"UPDATE class_modules SET mode = 'free', paused = 0, started_at = NULL
|
||||||
|
WHERE class_id = ? AND module_id = ? AND mode = 'teacher_started'",
|
||||||
|
[(int)$row['class_id'], $row['module_id']]
|
||||||
|
);
|
||||||
|
}
|
||||||
Response::ok();
|
Response::ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user