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:
2026-07-24 02:45:35 +02:00
parent 031ca87daf
commit a3c5753cd7
+14
View File
@@ -82,10 +82,24 @@ if ($method === 'POST') {
if ($action === 'stop') {
$assignmentId = (int)($body['assignmentId'] ?? 0);
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(
'UPDATE class_assignments SET active = 0, ends_at = NOW() WHERE id = ? AND teacher_id = ?',
[$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();
}