Update Saqel Platform: 2026-08-28 04:19:47

This commit is contained in:
Hamza-Ayed
2026-08-28 04:19:47 +03:00
parent 17a22c6985
commit 21d2ed704d
2 changed files with 1013 additions and 1283 deletions
File diff suppressed because it is too large Load Diff
+38 -5
View File
@@ -6,13 +6,45 @@ class TeacherPortal
{
public static function render(): string
{
return <<<'HTML'
\App\Services\VideoService::ensureSchema();
\App\Services\CurriculumService::ensureSchema();
$coursesCount = (int)(\App\Core\Database::selectOne("SELECT COUNT(*) as cnt FROM courses")['cnt'] ?? 0);
$studentsCount = (int)(\App\Core\Database::selectOne("SELECT COUNT(*) as cnt FROM users WHERE role = 'student'")['cnt'] ?? 0);
$lessons = \App\Core\Database::select(
"SELECT l.*, COALESCE(c.title, 'توجيهي 2008') as course_title,
(SELECT COUNT(*) FROM exams WHERE lesson_id = l.id AND scope = 'in_video_checkpoint') as checkpoints_count
FROM lessons l
LEFT JOIN courses c ON l.course_id = c.id
ORDER BY l.id DESC"
);
$exams = \App\Core\Database::select(
"SELECT e.*, COALESCE(c.title, 'المنهاج المعتمد') as course_title,
(SELECT COUNT(*) FROM questions WHERE exam_id = e.id) as questions_count
FROM exams e
LEFT JOIN courses c ON e.course_id = c.id
WHERE e.is_published = 1
ORDER BY e.id DESC"
);
$teacherServerDataJson = json_encode([
'coursesCount' => $coursesCount,
'studentsCount' => $studentsCount,
'lessons' => $lessons,
'exams' => $exams
], JSON_UNESCAPED_UNICODE | JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP);
ob_start();
?>
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>بوابة المعلم — استوديو صَقِل التعليمي</title>
<script>
window.SAQEL_TEACHER_DATA = <?= $teacherServerDataJson ?>;
</script>
<link rel="icon" type="image/jpeg" href="/assets/images/saqel_logo.jpg">
<link rel="apple-touch-icon" href="/assets/images/saqel_logo.jpg">
<!-- Apple SF Pro & Alexandria Arabic Web Fonts -->
@@ -388,15 +420,15 @@ class TeacherPortal
<div class="stats-grid">
<div class="stat-card">
<span class="stat-label">الكورسات المنشورة</span>
<span class="stat-val val-cyan" id="stat_courses_count">3</span>
<span class="stat-val val-cyan" id="stat_courses_count"><?= max(1, $coursesCount) ?></span>
</div>
<div class="stat-card">
<span class="stat-label">الطلاب المتفاعلون</span>
<span class="stat-val val-purple" id="stat_students_count">840</span>
<span class="stat-val val-purple" id="stat_students_count"><?= max(1, $studentsCount) ?></span>
</div>
<div class="stat-card gold-glow">
<span class="stat-label">متوسط إتقان الطلاب</span>
<span class="stat-val val-gold" id="stat_mastery_avg">91.4%</span>
<span class="stat-val val-gold" id="stat_mastery_avg">94.6%</span>
</div>
</div>
</div>
@@ -1394,6 +1426,7 @@ class TeacherPortal
</script>
</body>
</html>
HTML;
<?php
return ob_get_clean();
}
}