ps('name'), 'slug' => ps('slug') ?: makeSlug(ps('name')), 'category_id' => (int)p('category_id'), 'subcategory' => ps('subcategory'), 'description' => ps('description'), 'address' => ps('address'), 'phone' => ps('phone'), 'email' => ps('email'), 'website' => ps('website'), 'lat' => (float)p('lat', 39.4364), 'lng' => (float)p('lng', -78.9762), 'is_active' => (int)p('is_active', 1), 'is_featured' => (int)p('is_featured', 0), ]; // Build hours JSON $days = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun']; $hrs = []; foreach ($days as $d) { $v = ps("hours_$d"); if ($v) $hrs[$d] = $v; } $fields['hours'] = json_encode($hrs); if (!$fields['name']) { flash('Business name is required.','error'); go('/admin/businesses.php'); } if ($act === 'add') { // Ensure unique slug $base = $fields['slug']; $i = 0; while (qval("SELECT id FROM businesses WHERE slug=?",[$fields['slug'].($i?"-$i":"")])) $i++; $fields['slug'] .= $i ? "-$i" : ""; qrun("INSERT INTO businesses(name,slug,category_id,subcategory,description,address,phone,email,website,hours,lat,lng,is_active,is_featured)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)",array_values($fields)); flash('Business added!','success'); } else { $id = (int)p('id'); // Check slug uniqueness excluding self $base = $fields['slug']; $i = 0; while (qval("SELECT id FROM businesses WHERE slug=? AND id!=?",[$fields['slug'].($i?"-$i":""),$id])) $i++; $fields['slug'] .= $i ? "-$i" : ""; qrun("UPDATE businesses SET name=?,slug=?,category_id=?,subcategory=?,description=?,address=?,phone=?,email=?,website=?,hours=?,lat=?,lng=?,is_active=?,is_featured=? WHERE id=?",array_merge(array_values($fields),[$id])); flash('Business updated!','success'); } go('/admin/businesses.php'); } if ($act === 'delete') { $id = (int)p('id'); qrun("DELETE FROM businesses WHERE id=?",[$id]); flash('Business deleted.','success'); go('/admin/businesses.php'); } if ($act === 'toggle') { $id = (int)p('id'); qrun("UPDATE businesses SET is_active = 1 - is_active WHERE id=?",[$id]); go('/admin/businesses.php'); } } $editId = iget('edit'); $editing = $editId ? qone("SELECT * FROM businesses WHERE id=?",[$editId]) : null; $cats = qall("SELECT * FROM categories ORDER BY sort_order"); $q = gs('q'); $page = max(1,iget('page')); $perPage = 25; $where = $q ? "WHERE b.name LIKE ? OR b.address LIKE ?" : ""; $params = $q ? ["%$q%","%$q%"] : []; $total = (int)qval("SELECT COUNT(*) FROM businesses b $where",$params); $pages = max(1,(int)ceil($total/$perPage)); $page = min($page,$pages); $offset = ($page-1)*$perPage; $bizs = qall("SELECT b.*,c.name cat FROM businesses b LEFT JOIN categories c ON c.id=b.category_id $where ORDER BY b.name LIMIT $perPage OFFSET $offset",$params); $days = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun']; ?>
| NAME | CATEGORY | PHONE | STATUS | FEATURED | ACTIONS |
|---|---|---|---|---|---|
| =e($b['name'])?> | =e($b['cat']??'—')?> | =e($b['phone'])?> | =$b['is_active']?'Active':'Inactive'?> | =$b['is_featured']?'★':'—'?> |