prepare($sql); $stmt->bindParam(':promo_code', $promo_code, PDO::PARAM_STR); } else { // سرد كل العروض — استعمال إداري بحت (شاشة الهدايا والعروض). // هذا الملف تحت /ride لا تحت /Admin، فلا تغطّيه البوّابة العامة في // connect.php؛ بدون هذا الفحص كان أي راكب يستطيع سرد العروض كلها. if ($role !== 'admin' && $role !== 'super_admin') { http_response_code(403); echo json_encode([ 'status' => 'failure', 'message' => 'Forbidden. Admin access required to list promos.', ], JSON_UNESCAPED_UNICODE); exit; } // كان الشرط `passengerID IN ('all','none','')` يُخفي كل عرض مخصّص لراكب // بعينه، فتظهر شاشة العروض ناقصة دون سبب ظاهر. الإدارة يجب أن ترى الكل. $sql = "SELECT `id`, `promo_code`, `amount`, `description`, `passengerID`, `validity_start_date`, `validity_end_date` FROM `promos` ORDER BY id DESC"; $stmt = $con->prepare($sql); } $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); if ($result || (empty($promo_code) && is_array($result))) { jsonSuccess($result); } else { if (!empty($promo_code)) { jsonError("Promo code not found or expired"); } else { jsonSuccess([], "No promos found"); } } ?>