0) { require_permission('plans', 'delete'); $stmt = db()->prepare("DELETE FROM plans WHERE id = ?"); $stmt->execute([$post_id]); header('Location: ' . app_url('admin.php', ['page' => 'plans'])); exit; } if ($post_action === 'edit' || $post_action === 'add') { require_permission('plans', $post_action === 'add' ? 'add' : 'edit'); $plan_key = $_POST['plan_key'] ?? ''; $name_en = $_POST['name_en'] ?? ''; $name_ar = $_POST['name_ar'] ?? ''; $price_monthly = (float)($_POST['price_monthly'] ?? 0); $price_yearly = (float)($_POST['price_yearly'] ?? 0); $subjects_limit = (int)($_POST['subjects_limit'] ?? 1); $features_en_raw = $_POST['features_en'] ?? ''; $features_ar_raw = $_POST['features_ar'] ?? ''; // Convert multiline text into JSON array $features_en = array_values(array_filter(array_map('trim', explode("\n", $features_en_raw)))); $features_ar = array_values(array_filter(array_map('trim', explode("\n", $features_ar_raw)))); $features_en_json = json_encode($features_en, JSON_UNESCAPED_UNICODE); $features_ar_json = json_encode($features_ar, JSON_UNESCAPED_UNICODE); if ($post_action === 'edit' && $post_id > 0) { $stmt = db()->prepare("UPDATE plans SET plan_key=?, name_en=?, name_ar=?, price_monthly=?, price_yearly=?, subjects_limit=?, features_en=?, features_ar=? WHERE id=?"); $stmt->execute([$plan_key, $name_en, $name_ar, $price_monthly, $price_yearly, $subjects_limit, $features_en_json, $features_ar_json, $post_id]); } else { $stmt = db()->prepare("INSERT INTO plans (plan_key, name_en, name_ar, price_monthly, price_yearly, subjects_limit, features_en, features_ar) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"); $stmt->execute([$plan_key, $name_en, $name_ar, $price_monthly, $price_yearly, $subjects_limit, $features_en_json, $features_ar_json]); } header('Location: ' . app_url('admin.php', ['page' => 'plans'])); exit; } } // list view $search = $_GET['search'] ?? ''; $page_num = max(1, (int)($_GET['p'] ?? 1)); $limit = 10; $offset = ($page_num - 1) * $limit; $where = ""; $params = []; if ($search !== '') { $where = "WHERE name_en LIKE ? OR name_ar LIKE ? OR plan_key LIKE ?"; $params[] = "%$search%"; $params[] = "%$search%"; $params[] = "%$search%"; } $total_stmt = db()->prepare("SELECT COUNT(*) FROM plans $where"); $total_stmt->execute($params); $total = $total_stmt->fetchColumn(); $pages = ceil($total / $limit); $stmt = db()->prepare("SELECT * FROM plans $where ORDER BY id DESC LIMIT $limit OFFSET $offset"); $stmt->execute($params); $items = $stmt->fetchAll(PDO::FETCH_ASSOC); ?>
| ID | = h(t('Key', 'المفتاح')) ?> | = h(t('Name', 'الاسم')) ?> | = h(t('Monthly', 'شهري')) ?> | = h(t('Yearly', 'سنوي')) ?> | = h(t('Subjects', 'المواد')) ?> | = h(t('Actions', 'إجراءات')) ?> |
|---|---|---|---|---|---|---|
| = h((string)$row['id']) ?> | = h($row['plan_key']) ?> |
= h(current_lang() === 'ar' ? $row['name_ar'] : $row['name_en']) ?>
|
= h(format_price((float)$row['price_monthly'])) ?> | = h(format_price((float)$row['price_yearly'])) ?> | = h((string)$row['subjects_limit']) ?> | |
| = h(t('No plans found.', 'لا توجد خطط.')) ?> | ||||||