[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: add_group_questions.php
<?php require_once '../config/database.php'; requireRole('teacher'); $teacher_id = getUserId(); $competition_id = $_GET['id'] ?? null; if (!$competition_id) { header('Location: dashboard.php'); exit; } // Verify teacher owns this competition $stmt = $pdo->prepare("SELECT * FROM competitions WHERE id = ? AND teacher_id = ?"); $stmt->execute([$competition_id, $teacher_id]); $competition = $stmt->fetch(); if (!$competition) { header('Location: dashboard.php'); exit; } $message = ''; $error = ''; // Handle form submissions if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (isset($_POST['add_question'])) { $question_type = $_POST['question_type'] ?? 'normal'; $question_text = $_POST['question_text']; $answer1 = sanitize($_POST['answer1']); $answer2 = sanitize($_POST['answer2']); $answer3 = sanitize($_POST['answer3']); $answer4 = sanitize($_POST['answer4']); $correct_answer = $_POST['correct_answer']; $question_image = ''; // Handle image upload if (isset($_FILES['question_image']) && $_FILES['question_image']['error'] == 0) { $question_image = uploadImage($_FILES['question_image']); } if (empty($question_text) || empty($answer1) || empty($answer2) || empty($answer3) || empty($answer4)) { $error = 'جميع الحقول مطلوبة'; } else { $stmt = $pdo->prepare(" INSERT INTO group_questions (competition_id, question_text, answer1, answer2, answer3, answer4, correct_answer, question_image, card_type, question_type) VALUES (?, ?, ?, ?, ?, ?, ?, ?, 'question', ?) "); if ($stmt->execute([$competition_id, $question_text, $answer1, $answer2, $answer3, $answer4, $correct_answer, $question_image, $question_type])) { $message = 'تم إضافة السؤال بنجاح'; } else { $error = 'حدث خطأ في إضافة السؤال'; } } } elseif (isset($_POST['add_special_card'])) { $card_type = $_POST['card_type']; $points_value = intval($_POST['points_value']); $stmt = $pdo->prepare(" INSERT INTO group_questions (competition_id, card_type, points_value) VALUES (?, ?, ?) "); if ($stmt->execute([$competition_id, $card_type, $points_value])) { $message = 'تم إضافة البطاقة الخاصة بنجاح'; } else { $error = 'حدث خطأ في إضافة البطاقة'; } } elseif (isset($_POST['finish_competition'])) { $stmt = $pdo->prepare("UPDATE competitions SET status = 'active' WHERE id = ?"); if ($stmt->execute([$competition_id])) { header('Location: my_competitions.php'); exit; } } } // Get existing questions $questions = $pdo->prepare("SELECT * FROM group_questions WHERE competition_id = ? ORDER BY created_at"); $questions->execute([$competition_id]); $existing_questions = $questions->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-success"> <div class="container-fluid"> <a class="navbar-brand" href="../index.php"> <i class="fas fa-trophy me-2"></i> منصة المسابقات التعليمية </a> <div class="navbar-nav me-auto"> <span class="navbar-text"> <i class="fas fa-chalkboard-teacher me-1"></i> مرحباً، <?= sanitize($_SESSION['user_name']) ?> </span> </div> <div class="navbar-nav"> <a class="nav-link" href="../auth/logout.php"> <i class="fas fa-sign-out-alt me-1"></i> تسجيل الخروج </a> </div> </div> </nav> <div class="container-fluid py-4"> <div class="row"> <div class="col-lg-8"> <div class="d-flex justify-content-between align-items-center mb-4"> <h1 class="h3">إضافة أسئلة وبطاقات المسابقة</h1> <div> <a href="my_competitions.php" class="btn btn-outline-secondary me-2"> <i class="fas fa-arrow-right me-1"></i> العودة </a> <?php if (count($existing_questions) > 0): ?> <form method="POST" class="d-inline"> <button type="submit" name="finish_competition" class="btn btn-success"> <i class="fas fa-check me-1"></i> إنهاء وتفعيل المسابقة </button> </form> <?php endif; ?> </div> </div> <?php if ($message): ?> <div class="alert alert-success alert-dismissible fade show"> <i class="fas fa-check-circle me-2"></i> <?= $message ?> <button type="button" class="btn-close" data-bs-dismiss="alert"></button> </div> <?php endif; ?> <?php if ($error): ?> <div class="alert alert-danger alert-dismissible fade show"> <i class="fas fa-exclamation-circle me-2"></i> <?= $error ?> <button type="button" class="btn-close" data-bs-dismiss="alert"></button> </div> <?php endif; ?> <!-- Competition Info --> <div class="card mb-4"> <div class="card-body"> <h5><?= sanitize($competition['title']) ?></h5> <p class="text-muted mb-0">مسابقة المجموعات - <?= $competition['num_groups'] ?> مجموعات</p> </div> </div> <!-- Add Question Form --> <div class="card mb-4"> <div class="card-header"> <h5 class="mb-0"> <i class="fas fa-question-circle me-2"></i> إضافة سؤال جديد </h5> </div> <div class="card-body"> <form method="POST" enctype="multipart/form-data"> <div class="mb-3"> <label for="question_type" class="form-label">نوع السؤال</label> <select class="form-select" id="question_type" name="question_type" required> <option value="normal">سؤال عادي</option> <option value="speed">سؤال سرعة</option> <option value="essay">سؤال مقالي</option> <option value="essay">سؤال مقالي</option> </select> <div class="form-text"> <i class="fas fa-info-circle me-1"></i> أسئلة السرعة: المجموعة الأسرع تحصل على النقاط | أسئلة مقالية: المعلم يحدد صحة الإجابة | أسئلة عادية: اختيار من متعدد </div> </div> <div class="mb-3"> <label for="question_text" class="form-label">نص السؤال</label> <div class="rich-text-editor"> <div class="editor-toolbar mb-2"> <button type="button" class="btn btn-sm btn-outline-secondary" onclick="formatText('bold')"> <i class="fas fa-bold"></i> </button> <button type="button" class="btn btn-sm btn-outline-secondary" onclick="formatText('italic')"> <i class="fas fa-italic"></i> </button> <button type="button" class="btn btn-sm btn-outline-secondary" onclick="formatText('underline')"> <i class="fas fa-underline"></i> </button> <input type="file" id="imageUpload" accept="image/*" style="display: none;" onchange="insertImage(this)"> <button type="button" class="btn btn-sm btn-outline-secondary" onclick="document.getElementById('imageUpload').click()"> <i class="fas fa-image"></i> </button> </div> <div class="form-control rich-text-content" id="question_text_editor" contenteditable="true" style="min-height: 120px; font-size: 1.2rem; line-height: 1.6;" placeholder="يمكنك لصق السؤال من Word مع الاحتفاظ بالتنسيق والصور، أو كتابة السؤال مباشرة"></div> <textarea name="question_text" id="question_text" style="display: none;"></textarea> </div> </div> <div class="row" id="answersSection"> <div class="col-md-6 mb-3"> <label for="answer1" class="form-label">الإجابة الأولى</label> <input type="text" class="form-control large-text" id="answer1" name="answer1" style="font-size: 1.1rem;" required> </div> <div class="col-md-6 mb-3"> <label for="answer2" class="form-label">الإجابة الثانية</label> <input type="text" class="form-control large-text" id="answer2" name="answer2" style="font-size: 1.1rem;" required> </div> </div> <div class="row"> <div class="col-md-6 mb-3"> <label for="answer3" class="form-label">الإجابة الثالثة</label> <input type="text" class="form-control large-text" id="answer3" name="answer3" style="font-size: 1.1rem;" required> </div> <div class="col-md-6 mb-3"> <label for="answer4" class="form-label">الإجابة الرابعة</label> <input type="text" class="form-control large-text" id="answer4" name="answer4" style="font-size: 1.1rem;" required> </div> </div> <div class="row" id="correctAnswerSection"> <div class="col-md-6 mb-3"> <label for="correct_answer" class="form-label">الإجابة الصحيحة</label> <select class="form-select" id="correct_answer" name="correct_answer" required> <option value="">اختر الإجابة الصحيحة</option> <option value="1">الإجابة الأولى</option> <option value="2">الإجابة الثانية</option> <option value="3">الإجابة الثالثة</option> <option value="4">الإجابة الرابعة</option> </select> </div> <div class="col-md-6 mb-3"> <label for="question_image" class="form-label">صورة السؤال (اختيارية)</label> <input type="file" class="form-control" id="question_image" name="question_image" accept="image/*"> </div> </div> <button type="submit" name="add_question" class="btn btn-primary"> <i class="fas fa-plus me-1"></i> إضافة السؤال </button> </form> </div> </div> <!-- Add Special Card Form --> <div class="card mb-4"> <div class="card-header"> <h5 class="mb-0"> <i class="fas fa-star me-2"></i> إضافة بطاقة خاصة </h5> </div> <div class="card-body"> <form method="POST"> <div class="row"> <div class="col-md-6 mb-3"> <label for="card_type" class="form-label">نوع البطاقة</label> <select class="form-select" id="card_type" name="card_type" required> <option value="">اختر نوع البطاقة</option> <option value="bonus">بطاقة مكافأة</option> <option value="deduction">بطاقة خصم</option> <option value="steal">بطاقة سرقة</option> </select> </div> <div class="col-md-6 mb-3"> <label for="points_value" class="form-label">قيمة النقاط</label> <input type="number" class="form-control" id="points_value" name="points_value" min="5" max="50" value="10"> </div> </div> <button type="submit" name="add_special_card" class="btn btn-warning"> <i class="fas fa-plus me-1"></i> إضافة البطاقة الخاصة </button> </form> </div> </div> </div> <!-- Existing Questions Sidebar --> <div class="col-lg-4"> <div class="card"> <div class="card-header"> <h6 class="mb-0"> <i class="fas fa-list me-2"></i> الأسئلة والبطاقات المضافة (<?= count($existing_questions) ?>) </h6> </div> <div class="card-body" style="max-height: 600px; overflow-y: auto;"> <?php if (empty($existing_questions)): ?> <p class="text-muted">لم يتم إضافة أي أسئلة بعد</p> <?php else: ?> <?php foreach ($existing_questions as $index => $q): ?> <div class="border rounded p-2 mb-2"> <div class="d-flex justify-content-between align-items-start"> <small class="text-muted">#<?= $index + 1 ?></small> <?php if ($q['card_type'] == 'question'): ?> <span class="badge bg-primary">سؤال</span> <?php elseif ($q['card_type'] == 'bonus'): ?> <span class="badge bg-success">مكافأة</span> <?php elseif ($q['card_type'] == 'deduction'): ?> <span class="badge bg-warning">خصم</span> <?php else: ?> <span class="badge bg-danger">سرقة</span> <?php endif; ?> </div> <?php if ($q['card_type'] == 'question'): ?> <p class="mb-1 small"><?= mb_substr(strip_tags($q['question_text']), 0, 50) ?>...</p> <?php if (isset($q['question_type']) && $q['question_type'] == 'speed'): ?> <span class="badge bg-info">سرعة</span> <?php endif; ?> <?php else: ?> <p class="mb-1 small"> <?= $q['card_type'] == 'bonus' ? 'مكافأة' : ($q['card_type'] == 'deduction' ? 'خصم' : 'سرقة') ?> - <?= $q['points_value'] ?> نقطة </p> <?php endif; ?> </div> <?php endforeach; ?> <?php endif; ?> </div> </div> </div> </div> </div> <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() { // Rich text editor functionality $('#question_text_editor').on('input paste', function() { // Update hidden textarea $('#question_text').val($(this).html()); }); // Handle question type change $('#question_type').change(function() { const questionType = $(this).val(); if (questionType === 'essay') { // Hide answers and correct answer for essay questions $('#answersSection').hide(); $('#correctAnswerSection').hide(); $('#essayQuestionNote').show(); // Remove required attribute $('#answer1, #answer2, #answer3, #answer4, #correct_answer').removeAttr('required'); // Set default values for essay questions $('#answer1').val('إجابة مفتوحة'); $('#answer2').val('إجابة مفتوحة'); $('#answer3').val('إجابة مفتوحة'); $('#answer4').val('إجابة مفتوحة'); $('#correct_answer').val('1'); } else { // Show answers and correct answer for other question types $('#answersSection').show(); $('#correctAnswerSection').show(); $('#essayQuestionNote').hide(); // Add required attribute back $('#answer1, #answer2, #answer3, #answer4, #correct_answer').attr('required', 'required'); // Clear default values if ($('#answer1').val() === 'إجابة مفتوحة') { $('#answer1, #answer2, #answer3, #answer4').val(''); $('#correct_answer').val(''); } } }); // Handle form submission $('form').on('submit', function() { $('#question_text').val($('#question_text_editor').html()); }); }); function formatText(command) { document.execCommand(command, false, null); $('#question_text_editor').focus(); } function insertImage(input) { if (input.files && input.files[0]) { const reader = new FileReader(); reader.onload = function(e) { const img = `<img src="${e.target.result}" style="max-width: 100%; height: auto; margin: 10px 0;" class="img-fluid">`; document.execCommand('insertHTML', false, img); }; reader.readAsDataURL(input.files[0]); } } </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.87 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