[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: subjects_grades.php
<?php /** * Teacher Subjects and Grades Selection Page * This page allows teachers to select which grades and subjects they teach */ require_once '../config/config.php'; requireLogin('teacher'); $database = new Database(); $conn = $database->getConnection(); $teacher_id = $_SESSION['teacher_id']; $message = ''; $message_type = ''; // Handle form submissions if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['action']) && $_POST['action'] === 'save_assignments') { $assignments = $_POST['assignments'] ?? []; // Delete existing assignments $delete_query = "DELETE FROM teacher_assignments WHERE teacher_id = :teacher_id"; $delete_stmt = $conn->prepare($delete_query); $delete_stmt->bindParam(':teacher_id', $teacher_id); $delete_stmt->execute(); // Insert new assignments if (!empty($assignments)) { $insert_query = "INSERT INTO teacher_assignments (teacher_id, grade_id, subject_id) VALUES (:teacher_id, :grade_id, :subject_id)"; $insert_stmt = $conn->prepare($insert_query); foreach ($assignments as $assignment) { $parts = explode('_', $assignment); if (count($parts) === 2) { $grade_id = $parts[0]; $subject_id = $parts[1]; $insert_stmt->bindParam(':teacher_id', $teacher_id); $insert_stmt->bindParam(':grade_id', $grade_id); $insert_stmt->bindParam(':subject_id', $subject_id); $insert_stmt->execute(); } } } $message = 'تم حفظ التخصيصات بنجاح'; $message_type = 'success'; } } // Get all grades with their stages and available subjects $query = "SELECT g.id as grade_id, g.name as grade_name, s.id as stage_id, s.name as stage_name, sub.id as subject_id, sub.name as subject_name FROM grades g JOIN stages s ON g.stage_id = s.id JOIN grade_subjects gs ON g.id = gs.grade_id JOIN subjects sub ON gs.subject_id = sub.id ORDER BY s.name, g.name, sub.name"; $stmt = $conn->query($query); $grade_subjects = $stmt->fetchAll(PDO::FETCH_ASSOC); // Get current teacher assignments $current_query = "SELECT grade_id, subject_id FROM teacher_assignments WHERE teacher_id = :teacher_id"; $current_stmt = $conn->prepare($current_query); $current_stmt->bindParam(':teacher_id', $teacher_id); $current_stmt->execute(); $current_assignments = $current_stmt->fetchAll(PDO::FETCH_ASSOC); // Create array of current assignments for easy checking $assigned = []; foreach ($current_assignments as $assignment) { $assigned[$assignment['grade_id'] . '_' . $assignment['subject_id']] = true; } // Group data by stage and grade $grouped_data = []; foreach ($grade_subjects as $item) { $stage_name = $item['stage_name']; $grade_id = $item['grade_id']; $grade_name = $item['grade_name']; if (!isset($grouped_data[$stage_name])) { $grouped_data[$stage_name] = []; } if (!isset($grouped_data[$stage_name][$grade_id])) { $grouped_data[$stage_name][$grade_id] = [ 'name' => $grade_name, 'subjects' => [] ]; } $grouped_data[$stage_name][$grade_id]['subjects'][] = [ 'id' => $item['subject_id'], 'name' => $item['subject_name'] ]; } $page_title = 'اختيار المواد والصفوف'; include '../includes/header.php'; ?> <div class="container-fluid"> <div class="row"> <!-- Sidebar --> <div class="col-lg-3 col-md-4 sidebar p-0"> <div class="d-flex flex-column h-100"> <div class="p-3 text-white"> <h4 class="mb-0"> <i class="fas fa-chalkboard-teacher me-2"></i> لوحة المعلم </h4> <small>مرحباً <?php echo $_SESSION['teacher_name']; ?></small> </div> <nav class="nav nav-pills flex-column p-3"> <a class="nav-link" href="dashboard.php"> <i class="fas fa-tachometer-alt me-2"></i>الرئيسية </a> <a class="nav-link active" href="subjects_grades.php"> <i class="fas fa-book me-2"></i>المواد والصفوف </a> <a class="nav-link" href="groups.php"> <i class="fas fa-users me-2"></i>المجموعات </a> <a class="nav-link" href="students.php"> <i class="fas fa-user-graduate me-2"></i>الطلاب </a> <a class="nav-link" href="attendance.php"> <i class="fas fa-clipboard-check me-2"></i>تسجيل الحضور </a> <a class="nav-link" href="makeup_sessions.php"> <i class="fas fa-redo me-2"></i>حصص التعويض </a> <a class="nav-link" href="reports.php"> <i class="fas fa-chart-bar me-2"></i>التقارير </a> <div class="mt-auto"> <a class="nav-link text-light" href="../logout.php"> <i class="fas fa-sign-out-alt me-2"></i>تسجيل الخروج </a> </div> </nav> </div> </div> <!-- Main Content --> <div class="col-lg-9 col-md-8 main-content p-4"> <div class="d-flex justify-content-between align-items-center mb-4"> <h2>اختيار المواد والصفوف التي تدرسها</h2> </div> <!-- Messages --> <?php if (!empty($message)): ?> <div class="alert alert-<?php echo $message_type; ?> alert-dismissible fade show" role="alert"> <i class="fas fa-<?php echo $message_type == 'success' ? 'check-circle' : 'exclamation-triangle'; ?> me-2"></i> <?php echo $message; ?> <button type="button" class="btn-close" data-bs-dismiss="alert"></button> </div> <?php endif; ?> <!-- Instructions --> <div class="alert alert-info mb-4"> <i class="fas fa-info-circle me-2"></i> اختر المواد والصفوف التي تدرسها. يمكنك اختيار عدة مواد لنفس الصف أو نفس المادة لعدة صفوف. </div> <!-- Subjects and Grades Selection --> <form method="POST" action=""> <input type="hidden" name="action" value="save_assignments"> <?php foreach ($grouped_data as $stage_name => $grades): ?> <div class="card mb-4"> <div class="card-header"> <h5 class="mb-0 text-primary"> <i class="fas fa-layer-group me-2"></i> <?php echo htmlspecialchars($stage_name); ?> </h5> </div> <div class="card-body"> <div class="row"> <?php foreach ($grades as $grade_id => $grade_data): ?> <div class="col-lg-6 mb-4"> <div class="border rounded p-3"> <h6 class="text-success mb-3"> <i class="fas fa-graduation-cap me-2"></i> <?php echo htmlspecialchars($grade_data['name']); ?> </h6> <?php foreach ($grade_data['subjects'] as $subject): ?> <div class="form-check mb-2"> <input class="form-check-input assignment-checkbox" type="checkbox" name="assignments[]" value="<?php echo $grade_id . '_' . $subject['id']; ?>" id="assignment_<?php echo $grade_id . '_' . $subject['id']; ?>" <?php echo isset($assigned[$grade_id . '_' . $subject['id']]) ? 'checked' : ''; ?>> <label class="form-check-label" for="assignment_<?php echo $grade_id . '_' . $subject['id']; ?>"> <?php echo htmlspecialchars($subject['name']); ?> </label> </div> <?php endforeach; ?> </div> </div> <?php endforeach; ?> </div> </div> </div> <?php endforeach; ?> <div class="text-center"> <button type="submit" class="btn btn-success btn-lg"> <i class="fas fa-save me-2"></i>حفظ التخصيصات </button> </div> </form> <!-- Current Assignments Summary --> <?php if (!empty($current_assignments)): ?> <div class="card mt-4"> <div class="card-header"> <h5 class="mb-0">التخصيصات الحالية</h5> </div> <div class="card-body"> <div class="row"> <?php // Get current assignments with names $summary_query = "SELECT g.name as grade_name, s.name as stage_name, sub.name as subject_name FROM teacher_assignments ta JOIN grades g ON ta.grade_id = g.id JOIN stages s ON g.stage_id = s.id JOIN subjects sub ON ta.subject_id = sub.id WHERE ta.teacher_id = :teacher_id ORDER BY s.name, g.name, sub.name"; $summary_stmt = $conn->prepare($summary_query); $summary_stmt->bindParam(':teacher_id', $teacher_id); $summary_stmt->execute(); $summary_assignments = $summary_stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($summary_assignments as $assignment): ?> <div class="col-md-4 mb-2"> <span class="badge bg-primary p-2"> <?php echo htmlspecialchars($assignment['stage_name'] . ' - ' . $assignment['grade_name'] . ' - ' . $assignment['subject_name']); ?> </span> </div> <?php endforeach; ?> </div> </div> </div> <?php endif; ?> </div> </div> </div> <script> $(document).ready(function() { // Add visual feedback when checkboxes are changed $('.assignment-checkbox').on('change', function() { const label = $(this).next('label'); if ($(this).is(':checked')) { label.addClass('text-primary fw-bold'); } else { label.removeClass('text-primary fw-bold'); } }); // Initialize visual state $('.assignment-checkbox:checked').each(function() { $(this).next('label').addClass('text-primary fw-bold'); }); }); </script> <?php include '../includes/footer.php'; ?>
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