[ 'order_online' => 'اطلب عبر الإنترنت', 'my_profile_points' => 'ملفي الشخصي والنقاط', 'table' => 'طاولة', 'all' => 'الكل', 'add_to_cart' => 'أضف إلى السلة', 'options' => 'الخيارات', 'view_cart' => 'عرض السلة', 'review_order' => 'مراجعة الطلب', 'name' => 'الاسم', 'your_name' => 'اسمك', 'phone' => 'رقم الهاتف', 'your_phone' => 'رقم هاتفك', 'car_plate' => 'رقم لوحة السيارة (اختياري)', 'car_plate_placeholder' => 'مثال: 1234 أ', 'ready_in' => 'وقت التحضير', 'ready_asap' => 'في أسرع وقت', 'ready_10m' => 'بعد 10 دقائق', 'ready_15m' => 'بعد 15 دقيقة', 'ready_20m' => 'بعد 20 دقيقة', 'ready_30m' => 'بعد 30 دقيقة', 'register_to_earn' => 'سجل لكسب النقاط وعرض السجل', 'subtotal' => 'المجموع الفرعي', 'total' => 'المجموع', 'place_order' => 'تأكيد الطلب', 'please_select_option' => 'يرجى تحديد خيار', 'please_enter_details' => 'يرجى إدخال اسمك ورقم هاتفك.', 'order_placed_success' => 'تم الطلب بنجاح!', 'error' => 'خطأ:', 'failed_to_place' => 'فشل في إتمام الطلب. يرجى المحاولة مرة أخرى.', 'all_rights_reserved' => 'جميع الحقوق محفوظة.', 'not_found' => 'لم يتم العثور على الطاولة. يرجى الاتصال بالموظفين.', 'language' => 'English' ], 'en' => [ 'order_online' => 'Order Online', 'my_profile_points' => 'My Profile & Points', 'table' => 'Table', 'all' => 'All', 'add_to_cart' => 'Add to Cart', 'options' => 'Options', 'view_cart' => 'View Cart', 'review_order' => 'Review Order', 'name' => 'Name', 'your_name' => 'Your Name', 'phone' => 'Phone', 'your_phone' => 'Your Phone Number', 'car_plate' => 'Car Plate No. (Optional)', 'car_plate_placeholder' => 'e.g. 1234 A', 'ready_in' => 'Ready In', 'ready_asap' => 'ASAP', 'ready_10m' => 'After 10 mins', 'ready_15m' => 'After 15 mins', 'ready_20m' => 'After 20 mins', 'ready_30m' => 'After 30 mins', 'register_to_earn' => 'Register to earn points and view history', 'subtotal' => 'Subtotal', 'total' => 'Total', 'place_order' => 'Place Order', 'please_select_option' => 'Please select an option', 'please_enter_details' => 'Please enter your name and phone number.', 'order_placed_success' => 'Order placed successfully!', 'error' => 'Error:', 'failed_to_place' => 'Failed to place order. Please try again.', 'all_rights_reserved' => 'All rights reserved.', 'not_found' => 'Table not found. Please contact staff.', 'language' => 'عربي' ] ]; function tt($key) { global $translations, $lang; return $translations[$lang][$key] ?? $key; } $pdo = db(); $settings = get_company_settings(); $table_id = isset($_GET['table_id']) ? (int)$_GET['table_id'] : (isset($_GET['table']) ? (int)$_GET['table'] : 0); $table_info = null; if ($table_id === 0 && isset($_GET['table_number'])) { $stmt = $pdo->prepare('SELECT id FROM `tables` WHERE table_number = ? AND is_deleted = 0 LIMIT 1'); $stmt->execute([$_GET['table_number']]); $table_id = (int)$stmt->fetchColumn(); } if ($table_id > 0) { try { $stmt = $pdo->prepare(" SELECT t.id, t.table_number AS table_name, a.outlet_id, o.name AS outlet_name, o.name_ar AS outlet_name_ar FROM `tables` t JOIN areas a ON t.area_id = a.id JOIN outlets o ON a.outlet_id = o.id WHERE t.id = ? "); $stmt->execute([$table_id]); $table_info = $stmt->fetch(); if (!$table_info) { die(tt('not_found')); } } catch (PDOException $e) { die("Database error: " . $e->getMessage()); } } $outlet_id = (int)($table_info['outlet_id'] ?? 0); $categories = $pdo->query("SELECT * FROM categories WHERE is_deleted = 0 ORDER BY sort_order")->fetchAll(); $all_products = $pdo->query("SELECT p.*, c.name as category_name, c.name_ar as category_name_ar FROM products p JOIN categories c ON p.category_id = c.id WHERE p.is_deleted = 0 AND p.show_in_qorder = 1 AND c.is_deleted = 0")->fetchAll(); // Fetch variants $variants_raw = $pdo->query("SELECT * FROM product_variants WHERE is_deleted = 0 ORDER BY price_adjustment ASC")->fetchAll(); $variants_by_product = []; foreach ($variants_raw as $v) { $variants_by_product[$v['product_id']][] = $v; } // Build translated structures for JS $js_products = array_map(function($p) use ($is_ar) { $p['display_name'] = ($is_ar && !empty($p['name_ar'])) ? $p['name_ar'] : $p['name']; return $p; }, $all_products); $js_variants = []; foreach ($variants_by_product as $pid => $vars) { $js_variants[$pid] = array_map(function($v) use ($is_ar) { $v['display_name'] = ($is_ar && !empty($v['name_ar'])) ? $v['name_ar'] : $v['name']; return $v; }, $vars); } ?> <?= htmlspecialchars($settings['company_name'] ?? tt('order_online')) ?>

<?= htmlspecialchars($p['display_name']) ?>

0 0.00