From a3c5753cd750e0249cf739e947f03d3684ba4731 Mon Sep 17 00:00:00 2001 From: Thomas Date: Fri, 24 Jul 2026 02:45:35 +0200 Subject: [PATCH] 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 --- App/php/api/assignments.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/App/php/api/assignments.php b/App/php/api/assignments.php index 90b368c..a5d612d 100644 --- a/App/php/api/assignments.php +++ b/App/php/api/assignments.php @@ -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(); }