feat(grade10): add chemistry, biology, and earth sciences virtual labs, fix video CDN playback, teacher submissions SQL, and enable authenticated lesson reading

This commit is contained in:
Hamza-Ayed
2026-09-11 17:22:28 +03:00
parent d1bc39604b
commit e61d56c8e1
11 changed files with 2894 additions and 81 deletions
@@ -102,8 +102,10 @@ class StudentAccessControlService
// أما الطلبة المستقلون وحسابات التجربة والتعلم الحر، فيتم تحديث صفهم النشط تلقائياً وفق المحتوى المختار
$isCohortLocked = !empty($student['is_school_sponsored']) || !empty($student['school_id']);
if ($activeStudentGrade !== $normalizedTargetGrade) {
if (!$isCohortLocked && !empty($student['id']) && $allowSideEffects) {
Database::query("UPDATE students SET grade_level = ? WHERE id = ?", [$normalizedTargetGrade, (int)$student['id']]);
if (!$isCohortLocked && !empty($student['id'])) {
if ($allowSideEffects) {
Database::query("UPDATE students SET grade_level = ? WHERE id = ?", [$normalizedTargetGrade, (int)$student['id']]);
}
$activeStudentGrade = $normalizedTargetGrade;
} else {
$targetGradeName = self::getGradeDisplayName($normalizedTargetGrade);
@@ -37,9 +37,9 @@ final class TeacherSubmissionService {
return Database::execute(
"UPDATE video_versions vv JOIN teacher_submissions ts ON ts.id=vv.teacher_submission_id
SET vv.status='uploading', ts.status='uploading'
WHERE vv.uuid=? AND ts.teacher_id=? AND vv.status='draft'",
WHERE vv.uuid=? AND ts.teacher_id=? AND vv.status IN ('draft', 'uploading')",
[$versionUuid, $teacherId]
) === 1;
) >= 1;
}
/** Releases a reservation only when no media was accepted for review. */
public static function releaseUploadReservation(int $teacherId, string $versionUuid): void {