[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: subjects.php
<?php /** * Subjects Management Page * This page allows admin to add, edit, and delete subjects and assign them to grades */ require_once '../config/config.php'; requireLogin('admin'); $database = new Database(); $conn = $database->getConnection(); $message = ''; $message_type = ''; // Handle form submissions if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['action'])) { switch ($_POST['action']) { case 'add': $name = trim($_POST['name']); if (!empty($name)) { $query = "INSERT INTO subjects (name) VALUES (:name)"; $stmt = $conn->prepare($query); $stmt->bindParam(':name', $name); if ($stmt->execute()) { $message = 'تم إضافة المادة بنجاح'; $message_type = 'success'; } else { $message = 'حدث خطأ أثناء إضافة المادة'; $message_type = 'danger'; } } else { $message = 'يرجى إدخال اسم المادة'; $message_type = 'danger'; } break; case 'edit': $id = $_POST['id']; $name = trim($_POST['name']); if (!empty($name) && !empty($id)) { $query = "UPDATE subjects SET name = :name WHERE id = :id"; $stmt = $conn->prepare($query); $stmt->bindParam(':name', $name); $stmt->bindParam(':id', $id); if ($stmt->execute()) { $message = 'تم تحديث المادة بنجاح'; $message_type = 'success'; } else { $message = 'حدث خطأ أثناء تحديث المادة'; $message_type = 'danger'; } } else { $message = 'يرجى إدخال جميع البيانات المطلوبة'; $message_type = 'danger'; } break; case 'delete': $id = $_POST['id']; // Check if subject has groups $check_query = "SELECT COUNT(*) as count FROM groups WHERE subject_id = :id"; $check_stmt = $conn->prepare($check_query); $check_stmt->bindParam(':id', $id); $check_stmt->execute(); $count = $check_stmt->fetch(PDO::FETCH_ASSOC)['count']; if ($count > 0) { $message = 'لا يمكن حذف المادة لأنها مرتبطة بمجموعات'; $message_type = 'danger'; } else { $query = "DELETE FROM subjects WHERE id = :id"; $stmt = $conn->prepare($query); $stmt->bindParam(':id', $id); if ($stmt->execute()) { $message = 'تم حذف المادة بنجاح'; $message_type = 'success'; } else { $message = 'حدث خطأ أثناء حذف المادة'; $message_type = 'danger'; } } break; case 'assign_grades': $subject_id = $_POST['subject_id']; $grade_ids = $_POST['grade_ids'] ?? []; // Delete existing assignments $delete_query = "DELETE FROM grade_subjects WHERE subject_id = :subject_id"; $delete_stmt = $conn->prepare($delete_query); $delete_stmt->bindParam(':subject_id', $subject_id); $delete_stmt->execute(); // Insert new assignments if (!empty($grade_ids)) { $insert_query = "INSERT INTO grade_subjects (grade_id, subject_id) VALUES (:grade_id, :subject_id)"; $insert_stmt = $conn->prepare($insert_query); foreach ($grade_ids as $grade_id) { $insert_stmt->bindParam(':grade_id', $grade_id); $insert_stmt->bindParam(':subject_id', $subject_id); $insert_stmt->execute(); } } $message = 'تم تحديث تخصيص المادة للصفوف بنجاح'; $message_type = 'success'; break; } } } // Get all subjects with assigned grades count $query = "SELECT s.*, COUNT(gs.grade_id) as grades_count FROM subjects s LEFT JOIN grade_subjects gs ON s.id = gs.subject_id GROUP BY s.id ORDER BY s.name"; $stmt = $conn->query($query); $subjects = $stmt->fetchAll(PDO::FETCH_ASSOC); // Get all grades for assignment $grades_query = "SELECT g.*, st.name as stage_name FROM grades g JOIN stages st ON g.stage_id = st.id ORDER BY st.name, g.name"; $grades_stmt = $conn->query($grades_query); $grades = $grades_stmt->fetchAll(PDO::FETCH_ASSOC); $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-user-shield me-2"></i> لوحة المدير </h4> <small>مرحباً <?php echo $_SESSION['admin_username']; ?></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" href="stages.php"> <i class="fas fa-layer-group me-2"></i>المراحل الدراسية </a> <a class="nav-link" href="grades.php"> <i class="fas fa-graduation-cap me-2"></i>الصفوف الدراسية </a> <a class="nav-link active" href="subjects.php"> <i class="fas fa-book me-2"></i>المواد الدراسية </a> <a class="nav-link" href="teachers.php"> <i class="fas fa-chalkboard-teacher me-2"></i>إدارة المعلمين </a> <a class="nav-link" href="whatsapp_setup.php"> <i class="fab fa-whatsapp 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> <button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#addSubjectModal"> <i class="fas fa-plus me-2"></i>إضافة مادة جديدة </button> </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; ?> <!-- Subjects Table --> <div class="card"> <div class="card-header"> <h5 class="mb-0">قائمة المواد الدراسية</h5> </div> <div class="card-body"> <div class="table-responsive"> <table class="table table-striped"> <thead> <tr> <th>الرقم</th> <th>اسم المادة</th> <th>عدد الصفوف المخصصة</th> <th>تاريخ الإنشاء</th> <th>الإجراءات</th> </tr> </thead> <tbody> <?php foreach ($subjects as $index => $subject): ?> <tr> <td><?php echo $index + 1; ?></td> <td><?php echo htmlspecialchars($subject['name']); ?></td> <td> <span class="badge bg-info"><?php echo $subject['grades_count']; ?> صف</span> </td> <td><?php echo date('Y/m/d', strtotime($subject['created_at'])); ?></td> <td> <button class="btn btn-sm btn-success me-1" onclick="assignGrades(<?php echo $subject['id']; ?>, '<?php echo htmlspecialchars($subject['name']); ?>')"> <i class="fas fa-link"></i> تخصيص </button> <button class="btn btn-sm btn-warning me-1" onclick="editSubject(<?php echo $subject['id']; ?>, '<?php echo htmlspecialchars($subject['name']); ?>')"> <i class="fas fa-edit"></i> </button> <button class="btn btn-sm btn-danger" onclick="deleteSubject(<?php echo $subject['id']; ?>)"> <i class="fas fa-trash"></i> </button> </td> </tr> <?php endforeach; ?> </tbody> </table> </div> </div> </div> </div> </div> </div> <!-- Add Subject Modal --> <div class="modal fade" id="addSubjectModal" tabindex="-1"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">إضافة مادة دراسية جديدة</h5> <button type="button" class="btn-close" data-bs-dismiss="modal"></button> </div> <form method="POST" action=""> <div class="modal-body"> <input type="hidden" name="action" value="add"> <div class="mb-3"> <label for="subjectName" class="form-label">اسم المادة</label> <input type="text" class="form-control" id="subjectName" name="name" required placeholder="مثال: الرياضيات"> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">إلغاء</button> <button type="submit" class="btn btn-primary"> <i class="fas fa-save me-2"></i>حفظ </button> </div> </form> </div> </div> </div> <!-- Edit Subject Modal --> <div class="modal fade" id="editSubjectModal" tabindex="-1"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">تعديل المادة الدراسية</h5> <button type="button" class="btn-close" data-bs-dismiss="modal"></button> </div> <form method="POST" action=""> <div class="modal-body"> <input type="hidden" id="editSubjectId" name="id"> <input type="hidden" name="action" value="edit"> <div class="mb-3"> <label for="editSubjectName" class="form-label">اسم المادة</label> <input type="text" class="form-control" id="editSubjectName" name="name" required> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">إلغاء</button> <button type="submit" class="btn btn-warning"> <i class="fas fa-save me-2"></i>حفظ التغييرات </button> </div> </form> </div> </div> </div> <!-- Delete Subject Modal --> <div class="modal fade" id="deleteSubjectModal" tabindex="-1"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">حذف المادة</h5> <button type="button" class="btn-close" data-bs-dismiss="modal"></button> </div> <form method="POST" action=""> <div class="modal-body"> <input type="hidden" id="deleteSubjectId" name="id"> <input type="hidden" name="action" value="delete"> <p>هل أنت متأكد من حذف هذه المادة؟</p> <p class="text-danger">سيتم حذف جميع التخصيصات المرتبطة بها.</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">إلغاء</button> <button type="submit" class="btn btn-danger"> <i class="fas fa-trash me-2"></i>حذف </button> </div> </form> </div> </div> </div> <!-- Assign Grades Modal --> <div class="modal fade" id="assignGradesModal" tabindex="-1"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">تخصيص المادة للصفوف</h5> <button type="button" class="btn-close" data-bs-dismiss="modal"></button> </div> <form method="POST" action=""> <div class="modal-body"> <input type="hidden" id="assignSubjectId" name="subject_id"> <input type="hidden" name="action" value="assign_grades"> <p>اختر الصفوف التي تريد تخصيص المادة لها:</p> <div class="row"> <?php $current_stage = ''; foreach ($grades as $grade): if ($current_stage != $grade['stage_name']): if ($current_stage != '') echo '</div>'; $current_stage = $grade['stage_name']; echo '<div class="col-md-6 mb-3">'; echo '<h6 class="text-primary">' . htmlspecialchars($current_stage) . '</h6>'; endif; ?> <div class="form-check"> <input class="form-check-input grade-checkbox" type="checkbox" name="grade_ids[]" value="<?php echo $grade['id']; ?>" id="grade_<?php echo $grade['id']; ?>"> <label class="form-check-label" for="grade_<?php echo $grade['id']; ?>"> <?php echo htmlspecialchars($grade['name']); ?> </label> </div> <?php endforeach; ?> </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">إلغاء</button> <button type="submit" class="btn btn-success"> <i class="fas fa-link me-2"></i>حفظ التخصيص </button> </div> </form> </div> </div> </div> <script> function editSubject(id, name) { $('#editSubjectId').val(id); $('#editSubjectName').val(name); $('#editSubjectModal').modal('show'); } function deleteSubject(id) { $('#deleteSubjectId').val(id); $('#deleteSubjectModal').modal('show'); } function assignGrades(id, name) { $('#assignSubjectId').val(id); $('#assignGradesModal .modal-title').text('تخصيص المادة: ' + name); // Clear all checkboxes $('.grade-checkbox').prop('checked', false); // Load current assignments via AJAX $.get('get_subject_grades.php', {subject_id: id}, function(response) { if (response.success) { response.grade_ids.forEach(function(gradeId) { $('#grade_' + gradeId).prop('checked', true); }); } }, 'json'); $('#assignGradesModal').modal('show'); } </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