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') {
|
||||
$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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user