0; if (isPost()) { csrfCheck(); $act = p('_act'); if ($act === 'add_section') { $bid = (int)p('business_id'); $name = ps('sec_name'); if ($bid && $name) { $ord = (int)qval("SELECT COALESCE(MAX(sort_order),0)+1 FROM menu_sections WHERE business_id=?",[$bid]); qrun("INSERT INTO menu_sections(business_id,name,description,sort_order)VALUES(?,?,?,?)",[$bid,$name,ps('sec_desc'),$ord]); flash('Section added!','success'); } go("/admin/menus.php?biz_id=$bid"); } if ($act === 'edit_section') { $sid = (int)p('sid'); qrun("UPDATE menu_sections SET name=?,description=?,sort_order=? WHERE id=?",[ps('sec_name'),ps('sec_desc'),(int)p('sec_order'),$sid]); flash('Section updated!','success'); go("/admin/menus.php?biz_id=$bizId"); } if ($act === 'del_section') { qrun("DELETE FROM menu_sections WHERE id=?",[(int)p('sid')]); flash('Section deleted.','success'); go("/admin/menus.php?biz_id=$bizId"); } if ($act === 'add_item') { $sid = (int)p('section_id'); $name = ps('item_name'); if ($sid && $name) { $imagePath = ''; if ($menuImagesEnabled) { $upload = storeSingleUpload( 'item_image', 'menus', imageExts(), mbToBytes(setting('menu_upload_max_mb','5'), 5), [ 'image_only' => true, 'resize_over_bytes' => mbToBytes(setting('forum_image_resize_threshold_mb','1'), 1), 'image_max_width' => (int)setting('forum_image_max_width','1600'), 'image_quality' => (int)setting('forum_image_quality','82'), ] ); if (!$upload['ok']) { flash($upload['error'], 'error'); go("/admin/menus.php?biz_id=$bizId"); } $imagePath = (string)($upload['path'] ?? ''); } $ord = (int)qval("SELECT COALESCE(MAX(sort_order),0)+1 FROM menu_items WHERE section_id=?",[$sid]); qrun("INSERT INTO menu_items(section_id,name,description,price,image_path,is_available,sort_order)VALUES(?,?,?,?,?,?,?)",[$sid,$name,ps('item_desc'),(float)p('item_price',0),$imagePath,(int)p('is_available',1),$ord]); flash('Item added!','success'); } go("/admin/menus.php?biz_id=$bizId"); } if ($act === 'edit_item') { $iid = (int)p('iid'); $item = qone("SELECT * FROM menu_items WHERE id=?", [$iid]); $imagePath = (string)($item['image_path'] ?? ''); if ($menuImagesEnabled && p('remove_item_image','0') === '1') $imagePath = ''; if ($menuImagesEnabled) { $upload = storeSingleUpload( 'item_image', 'menus', imageExts(), mbToBytes(setting('menu_upload_max_mb','5'), 5), [ 'image_only' => true, 'resize_over_bytes' => mbToBytes(setting('forum_image_resize_threshold_mb','1'), 1), 'image_max_width' => (int)setting('forum_image_max_width','1600'), 'image_quality' => (int)setting('forum_image_quality','82'), ] ); if (!$upload['ok']) { flash($upload['error'], 'error'); go("/admin/menus.php?biz_id=$bizId"); } if (!empty($upload['path'])) $imagePath = (string)$upload['path']; } qrun("UPDATE menu_items SET name=?,description=?,price=?,image_path=?,is_available=?,sort_order=? WHERE id=?",[ps('item_name'),ps('item_desc'),(float)p('item_price',0),$imagePath,(int)p('is_available',1),(int)p('item_order'),$iid]); flash('Item updated!','success'); go("/admin/menus.php?biz_id=$bizId"); } if ($act === 'del_item') { qrun("DELETE FROM menu_items WHERE id=?",[(int)p('iid')]); flash('Item removed.','success'); go("/admin/menus.php?biz_id=$bizId"); } } $bizList = qall("SELECT id,name FROM businesses WHERE is_active=1 ORDER BY name"); if ($biz) { $sections = qall("SELECT * FROM menu_sections WHERE business_id=? ORDER BY sort_order",[$bizId]); $items = []; foreach ($sections as $s) $items[$s['id']] = qall("SELECT * FROM menu_items WHERE section_id=? ORDER BY sort_order",[$s['id']]); } include __DIR__.'/admin_header.php'; ?>
SELECT BUSINESS TO MANAGE MENU

— Menu

View Listing ↗
➕ ADD MENU SECTION
ITEM NAMEIMAGEDESCRIPTIONPRICEAVAIL.ORDER
<?=e($item['name'])?> 0?money($item['price']):'—'?> Yes':'No'?>
➕ Add Item to ""
Optional. One image allowed, max MB.
🍽️

No menu sections yet

Use the form above to add the first section.