Fix PHP 8 router parameter dispatching and lesson slug playback lookup

This commit is contained in:
Hamza-Ayed
2026-08-31 17:45:27 +03:00
parent ccf5f13a09
commit 78b703f625
3 changed files with 39 additions and 9 deletions
+12 -6
View File
@@ -385,15 +385,17 @@ class VideoController
VideoService::ensureSchema();
CurriculumService::ensureSchema();
$lessonId = (int)$request->getParam('id');
$rawId = $request->getParam('id') ?? '';
$lesson = null;
if ($lessonId > 0) {
$lesson = Database::selectOne("SELECT * FROM lessons WHERE id = ? LIMIT 1", [$lessonId]);
if (is_numeric($rawId) && (int)$rawId > 0) {
$lesson = Database::selectOne("SELECT * FROM lessons WHERE id = ? LIMIT 1", [(int)$rawId]);
} elseif (!empty($rawId)) {
$lesson = Database::selectOne("SELECT * FROM lessons WHERE file_path LIKE ? OR title LIKE ? LIMIT 1", ["%{$rawId}%", "%{$rawId}%"]);
}
if (!$lesson) {
// Fallback to latest available lesson
// Fallback to latest available lesson or create one
$lesson = Database::selectOne("SELECT * FROM lessons ORDER BY id DESC LIMIT 1");
}
@@ -408,8 +410,12 @@ class VideoController
$existingCount = Database::selectOne("SELECT COUNT(*) as cnt FROM exams WHERE lesson_id = ? AND scope = 'in_video_checkpoint'", [$lessonId]);
$existingQuestions = Database::selectOne("SELECT COUNT(*) as cnt FROM questions q JOIN exams e ON q.exam_id = e.id WHERE e.lesson_id = ?", [$lessonId]);
if (empty($existingCount['cnt']) || empty($existingQuestions['cnt'])) {
AiVideoAnalyzerService::processLessonAutonomously($lessonId);
$lesson = Database::selectOne("SELECT * FROM lessons WHERE id = ? LIMIT 1", [$lessonId]);
try {
AiVideoAnalyzerService::processLessonAutonomously($lessonId);
$lesson = Database::selectOne("SELECT * FROM lessons WHERE id = ? LIMIT 1", [$lessonId]);
} catch (\Throwable $e) {
error_log("Autonomous video analysis notice: " . $e->getMessage());
}
}
// Fetch attached in-video Socratic Checkpoints with Questions and Options