query("SELECT id, name_en, name_ar FROM classes ORDER BY id DESC"); $all_classes = $classes_stmt->fetchAll(PDO::FETCH_ASSOC); if ($_SERVER['REQUEST_METHOD'] === 'POST') { $post_action = $_POST['action'] ?? $action; $post_id = (int)($_POST['id'] ?? $id); if ($post_action === 'delete' && $post_id > 0) { require_permission('subjects', 'delete'); $stmt = db()->prepare("DELETE FROM subjects WHERE id = ?"); $stmt->execute([$post_id]); header('Location: ' . app_url('admin.php', ['page' => 'subjects'])); exit; } if ($post_action === 'edit' || $post_action === 'add') { require_permission('subjects', $post_action === 'add' ? 'add' : 'edit'); $class_id = !empty($_POST['class_id']) ? (int)$_POST['class_id'] : null; $title_en = $_POST['title_en'] ?? ''; $title_ar = $_POST['title_ar'] ?? ''; $summary_en = $_POST['summary_en'] ?? ''; $summary_ar = $_POST['summary_ar'] ?? ''; $status = $_POST['status'] ?? 'active'; if ($post_action === 'edit' && $post_id > 0) { $stmt = db()->prepare("UPDATE subjects SET class_id=?, title_en=?, title_ar=?, summary_en=?, summary_ar=?, status=? WHERE id=?"); $stmt->execute([$class_id, $title_en, $title_ar, $summary_en, $summary_ar, $status, $post_id]); } else { $slug = strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $title_en))); if (empty($slug)) $slug = 'subject'; $slug .= '-' . substr(md5(uniqid()), 0, 5); $stmt = db()->prepare("INSERT INTO subjects (slug, class_id, title_en, title_ar, summary_en, summary_ar, status) VALUES (?, ?, ?, ?, ?, ?, ?)"); $stmt->execute([$slug, $class_id, $title_en, $title_ar, $summary_en, $summary_ar, $status]); } header('Location: ' . app_url('admin.php', ['page' => 'subjects'])); exit; } } // list view $search = $_GET['search'] ?? ''; $filter_class = $_GET['class_id'] ?? ''; $page_num = max(1, (int)($_GET['p'] ?? 1)); $limit = 10; $offset = ($page_num - 1) * $limit; $where_clauses = []; $params = []; if ($search !== '') { $where_clauses[] = "(s.title_en LIKE ? OR s.title_ar LIKE ?)"; $params[] = "%$search%"; $params[] = "%$search%"; } if ($filter_class !== '') { $where_clauses[] = "s.class_id = ?"; $params[] = $filter_class; } $where = ""; if (count($where_clauses) > 0) { $where = "WHERE " . implode(" AND ", $where_clauses); } $total_stmt = db()->prepare("SELECT COUNT(*) FROM subjects s $where"); $total_stmt->execute($params); $total = $total_stmt->fetchColumn(); $pages = ceil($total / $limit); $stmt = db()->prepare(" SELECT s.*, c.name_en AS class_name_en, c.name_ar AS class_name_ar FROM subjects s LEFT JOIN classes c ON s.class_id = c.id $where ORDER BY s.id DESC LIMIT $limit OFFSET $offset "); $stmt->execute($params); $items = $stmt->fetchAll(PDO::FETCH_ASSOC); ?>

ID
-
1): ?>