[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: leaderboard.php
<?php require_once 'config/database.php'; // Get best students per stage $best_per_stage_stmt = $pdo->query(" SELECT st.name as stage_name, gr.student_name, gr.final_score as best_score, gr.game_type FROM game_results gr JOIN competitions c ON gr.competition_id = c.id JOIN grades g ON c.grade_id = g.id JOIN stages st ON g.stage_id = st.id WHERE gr.final_score > 0 GROUP BY st.id, gr.student_name, gr.final_score, gr.game_type ORDER BY st.id, best_score DESC "); $best_per_stage = $best_per_stage_stmt->fetchAll(); // Group by stage $stages_leaderboard = []; foreach ($best_per_stage as $result) { if (!isset($stages_leaderboard[$result['stage_name']])) { $stages_leaderboard[$result['stage_name']] = []; } $stages_leaderboard[$result['stage_name']][] = $result; } // Get best students per game type $best_per_type_stmt = $pdo->query(" SELECT game_type, student_name, final_score as best_score, group_name FROM game_results WHERE final_score > 0 GROUP BY game_type, student_name, final_score, group_name ORDER BY game_type, best_score DESC "); $best_per_type = $best_per_type_stmt->fetchAll(); // Group by game type $type_leaderboard = []; foreach ($best_per_type as $result) { $type_name = $result['game_type'] == 'group' ? 'مسابقة المجموعات' : 'من سيربح المليون'; if (!isset($type_leaderboard[$type_name])) { $type_leaderboard[$type_name] = []; } $type_leaderboard[$type_name][] = $result; } // Get overall top performers $overall_top = $pdo->query(" SELECT student_name, SUM(final_score) as total_score, COUNT(*) as games_played, AVG(final_score) as avg_score FROM game_results WHERE final_score > 0 GROUP BY student_name ORDER BY total_score DESC LIMIT 20 ")->fetchAll(); // Get top groups $top_groups = $pdo->query(" SELECT group_name, final_score as best_score, COUNT(*) as games_played FROM game_results WHERE final_score > 0 AND group_name IS NOT NULL GROUP BY group_name, final_score ORDER BY best_score DESC LIMIT 15 ")->fetchAll(); ?> <!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> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet"> <link href="assets/css/style.css" rel="stylesheet"> </head> <body> <!-- Navigation --> <nav class="navbar navbar-expand-lg navbar-dark bg-primary"> <div class="container"> <a class="navbar-brand" href="index.php"> <i class="fas fa-trophy me-2"></i> منصة المسابقات التعليمية </a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNav"> <ul class="navbar-nav me-auto"> <li class="nav-item"> <a class="nav-link" href="index.php">الرئيسية</a> </li> <li class="nav-item"> <a class="nav-link active" href="leaderboard.php">لوحة الشرف</a> </li> </ul> <ul class="navbar-nav"> <?php if (isLoggedIn()): ?> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown"> <i class="fas fa-user me-1"></i> <?= sanitize($_SESSION['user_name']) ?> </a> <ul class="dropdown-menu"> <?php if (getUserRole() == 'admin'): ?> <li><a class="dropdown-item" href="admin/dashboard.php">لوحة الإدارة</a></li> <?php elseif (getUserRole() == 'teacher'): ?> <li><a class="dropdown-item" href="teacher/dashboard.php">لوحة المعلم</a></li> <?php endif; ?> <li><hr class="dropdown-divider"></li> <li><a class="dropdown-item" href="auth/logout.php">تسجيل الخروج</a></li> </ul> </li> <?php else: ?> <li class="nav-item"> <a class="nav-link" href="auth/login.php">تسجيل الدخول</a> </li> <li class="nav-item"> <a class="nav-link" href="auth/register.php">إنشاء حساب</a> </li> <?php endif; ?> </ul> </div> </div> </nav> <!-- Hero Section --> <section class="hero-section bg-gradient-primary text-white py-5"> <div class="container"> <div class="row align-items-center"> <div class="col-lg-8"> <h1 class="display-4 fw-bold mb-4"> <i class="fas fa-crown me-3"></i> لوحة الشرف </h1> <p class="lead mb-0">تعرف على أفضل الطلاب والمجموعات في المسابقات التعليمية</p> </div> <div class="col-lg-4 text-center"> <i class="fas fa-medal display-1 text-warning"></i> </div> </div> </div> </section> <!-- Leaderboards Content --> <section class="py-5"> <div class="container"> <!-- Navigation Tabs --> <ul class="nav nav-pills nav-fill mb-4" id="leaderboardTabs" role="tablist"> <li class="nav-item" role="presentation"> <button class="nav-link active" id="overall-tab" data-bs-toggle="pill" data-bs-target="#overall" type="button" role="tab"> <i class="fas fa-star me-2"></i> الأفضل عموماً </button> </li> <li class="nav-item" role="presentation"> <button class="nav-link" id="stages-tab" data-bs-toggle="pill" data-bs-target="#stages" type="button" role="tab"> <i class="fas fa-school me-2"></i> حسب المرحلة </button> </li> <li class="nav-item" role="presentation"> <button class="nav-link" id="games-tab" data-bs-toggle="pill" data-bs-target="#games" type="button" role="tab"> <i class="fas fa-gamepad me-2"></i> حسب نوع اللعبة </button> </li> <li class="nav-item" role="presentation"> <button class="nav-link" id="groups-tab" data-bs-toggle="pill" data-bs-target="#groups" type="button" role="tab"> <i class="fas fa-users me-2"></i> أفضل المجموعات </button> </li> </ul> <!-- Tab Content --> <div class="tab-content" id="leaderboardTabsContent"> <!-- Overall Top Performers --> <div class="tab-pane fade show active" id="overall" role="tabpanel"> <div class="card"> <div class="card-header"> <h5 class="mb-0"> <i class="fas fa-trophy me-2"></i> أفضل الطلاب عموماً </h5> </div> <div class="card-body"> <?php if (empty($overall_top)): ?> <div class="alert alert-info text-center"> <i class="fas fa-info-circle me-2"></i> لا توجد نتائج بعد </div> <?php else: ?> <div class="row"> <?php foreach (array_slice($overall_top, 0, 3) as $index => $student): ?> <div class="col-md-4 mb-4"> <div class="card h-100 border-<?= $index == 0 ? 'warning' : ($index == 1 ? 'secondary' : 'warning') ?> shadow"> <div class="card-body text-center"> <div class="position-relative mb-3"> <?php if ($index == 0): ?> <i class="fas fa-crown fa-3x text-warning"></i> <?php elseif ($index == 1): ?> <i class="fas fa-medal fa-3x text-secondary"></i> <?php else: ?> <i class="fas fa-medal fa-3x text-warning"></i> <?php endif; ?> <span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-primary"> #<?= $index + 1 ?> </span> </div> <h5 class="card-title"><?= sanitize($student['student_name']) ?></h5> <h4 class="text-primary"><?= number_format($student['total_score']) ?> نقطة</h4> <p class="text-muted mb-1"> <i class="fas fa-gamepad me-1"></i> <?= $student['games_played'] ?> مسابقة </p> <p class="text-muted"> <i class="fas fa-chart-line me-1"></i> معدل: <?= number_format($student['avg_score'], 1) ?> نقطة </p> </div> </div> </div> <?php endforeach; ?> </div> <?php if (count($overall_top) > 3): ?> <div class="table-responsive"> <table class="table table-hover"> <thead> <tr> <th>الترتيب</th> <th>اسم الطالب</th> <th>إجمالي النقاط</th> <th>عدد المسابقات</th> <th>المعدل</th> </tr> </thead> <tbody> <?php foreach (array_slice($overall_top, 3) as $index => $student): ?> <tr> <td> <span class="badge bg-primary">#<?= $index + 4 ?></span> </td> <td><?= sanitize($student['student_name']) ?></td> <td><strong><?= number_format($student['total_score']) ?> نقطة</strong></td> <td><?= $student['games_played'] ?> مسابقة</td> <td><?= number_format($student['avg_score'], 1) ?> نقطة</td> </tr> <?php endforeach; ?> </tbody> </table> </div> <?php endif; ?> <?php endif; ?> </div> </div> </div> <!-- Best per Stage --> <div class="tab-pane fade" id="stages" role="tabpanel"> <?php foreach ($stages_leaderboard as $stage_name => $students): ?> <div class="card mb-4"> <div class="card-header"> <h5 class="mb-0"> <i class="fas fa-school me-2"></i> <?= sanitize($stage_name) ?> </h5> </div> <div class="card-body"> <div class="row"> <?php foreach (array_slice($students, 0, 10) as $index => $student): ?> <div class="col-lg-6 mb-3"> <div class="d-flex align-items-center p-3 border rounded"> <div class="me-3"> <?php if ($index < 3): ?> <i class="fas fa-medal fa-2x text-<?= $index == 0 ? 'warning' : ($index == 1 ? 'secondary' : 'warning') ?>"></i> <?php else: ?> <span class="badge bg-primary fs-6">#<?= $index + 1 ?></span> <?php endif; ?> </div> <div class="flex-grow-1"> <h6 class="mb-1"><?= sanitize($student['student_name']) ?></h6> <div class="d-flex justify-content-between"> <span class="text-primary fw-bold"><?= number_format($student['best_score']) ?> نقطة</span> <small class="text-muted"> <?= $student['game_type'] == 'group' ? 'مجموعات' : 'مليونير' ?> </small> </div> </div> </div> </div> <?php endforeach; ?> </div> </div> </div> <?php endforeach; ?> </div> <!-- Best per Game Type --> <div class="tab-pane fade" id="games" role="tabpanel"> <div class="row"> <?php foreach ($type_leaderboard as $type_name => $students): ?> <div class="col-lg-6 mb-4"> <div class="card h-100"> <div class="card-header"> <h5 class="mb-0"> <i class="fas fa-<?= strpos($type_name, 'مجموعات') !== false ? 'users' : 'crown' ?> me-2"></i> <?= sanitize($type_name) ?> </h5> </div> <div class="card-body"> <div class="list-group list-group-flush"> <?php foreach (array_slice($students, 0, 10) as $index => $student): ?> <div class="list-group-item d-flex justify-content-between align-items-center"> <div class="d-flex align-items-center"> <span class="badge bg-<?= $index < 3 ? 'warning' : 'primary' ?> me-2"> #<?= $index + 1 ?> </span> <div> <h6 class="mb-0"><?= sanitize($student['student_name']) ?></h6> <?php if ($student['group_name']): ?> <small class="text-muted"><?= sanitize($student['group_name']) ?></small> <?php endif; ?> </div> </div> <span class="badge bg-success"><?= number_format($student['best_score']) ?> نقطة</span> </div> <?php endforeach; ?> </div> </div> </div> </div> <?php endforeach; ?> </div> </div> <!-- Top Groups --> <div class="tab-pane fade" id="groups" role="tabpanel"> <div class="card"> <div class="card-header"> <h5 class="mb-0"> <i class="fas fa-users me-2"></i> أفضل المجموعات </h5> </div> <div class="card-body"> <?php if (empty($top_groups)): ?> <div class="alert alert-info text-center"> <i class="fas fa-info-circle me-2"></i> لا توجد نتائج مجموعات بعد </div> <?php else: ?> <div class="row"> <?php foreach (array_slice($top_groups, 0, 3) as $index => $group): ?> <div class="col-md-4 mb-4"> <div class="card h-100 border-<?= $index == 0 ? 'warning' : ($index == 1 ? 'secondary' : 'warning') ?> shadow"> <div class="card-body text-center"> <div class="position-relative mb-3"> <i class="fas fa-users fa-3x text-<?= $index == 0 ? 'warning' : ($index == 1 ? 'secondary' : 'warning') ?>"></i> <span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-primary"> #<?= $index + 1 ?> </span> </div> <h5 class="card-title"><?= sanitize($group['group_name']) ?></h5> <h4 class="text-primary"><?= number_format($group['best_score']) ?> نقطة</h4> <p class="text-muted"> <i class="fas fa-gamepad me-1"></i> <?= $group['games_played'] ?> مسابقة </p> </div> </div> </div> <?php endforeach; ?> </div> <?php if (count($top_groups) > 3): ?> <div class="table-responsive"> <table class="table table-hover"> <thead> <tr> <th>الترتيب</th> <th>اسم المجموعة</th> <th>أفضل نتيجة</th> <th>عدد المسابقات</th> </tr> </thead> <tbody> <?php foreach (array_slice($top_groups, 3) as $index => $group): ?> <tr> <td> <span class="badge bg-primary">#<?= $index + 4 ?></span> </td> <td><?= sanitize($group['group_name']) ?></td> <td><strong><?= number_format($group['best_score']) ?> نقطة</strong></td> <td><?= $group['games_played'] ?> مسابقة</td> </tr> <?php endforeach; ?> </tbody> </table> </div> <?php endif; ?> <?php endif; ?> </div> </div> </div> </div> </div> </section> <!-- Footer --> <footer class="bg-dark text-white py-4"> <div class="container"> <div class="row"> <div class="col-md-6"> <h5>منصة المسابقات التعليمية</h5> <p>منصة تفاعلية للتعلم من خلال المسابقات والألعاب التعليمية</p> </div> <div class="col-md-6 text-md-end"> <p>© 2024 جميع الحقوق محفوظة</p> <a href="index.php" class="text-white text-decoration-none"> <i class="fas fa-home me-1"></i> العودة للرئيسية </a> </div> </div> </div> </footer> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script> <script src="assets/js/main.js"></script> <script> $(document).ready(function() { // Add animation to leaderboard items $('.list-group-item, .card').each(function(index) { $(this).css({ 'opacity': '0', 'transform': 'translateY(20px)' }); setTimeout(() => { $(this).animate({ opacity: 1 }, 500).css('transform', 'translateY(0)'); }, index * 50); }); }); </script> </body> </html>
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: premium320.web-hosting.com
Server IP: 66.29.153.54
PHP Version: 8.2.29
Server Software: LiteSpeed
System: Linux premium320.web-hosting.com 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
HDD Total: 97.87 GB
HDD Free: 76.84 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
No
git:
Yes
User Info
Username: aoneqssk
User ID (UID): 1285
Group ID (GID): 1290
Script Owner UID: 1285
Current Dir Owner: 1285