qval("SELECT COUNT(*) FROM businesses WHERE is_active=1"),
'Users' => qval("SELECT COUNT(*) FROM users"),
'Reviews' => qval("SELECT COUNT(*) FROM reviews"),
'Events' => qval("SELECT COUNT(*) FROM events WHERE status='approved'"),
'Pending Events' => qval("SELECT COUNT(*) FROM events WHERE status='pending'"),
'Pending Claims' => qval("SELECT COUNT(*) FROM business_claim_requests WHERE status='pending'"),
'Pending Edits' => qval("SELECT COUNT(*) FROM business_edit_requests WHERE status='pending'"),
'Forum Topics' => qval("SELECT COUNT(*) FROM forum_topics"),
'Open Reports' => qval("SELECT COUNT(*) FROM reports WHERE status='open'"),
'Active Alerts' => qval("SELECT COUNT(*) FROM alerts WHERE is_active=1"),
];
$recentBiz = qall("SELECT * FROM businesses ORDER BY created_at DESC LIMIT 5");
$recentUsers = qall("SELECT * FROM users ORDER BY created_at DESC LIMIT 5");
$pendingEvts = qall("SELECT e.*,u.username FROM events e LEFT JOIN users u ON u.id=e.submitted_by WHERE e.status='pending' ORDER BY e.created_at DESC LIMIT 5");
$openReports = qall("SELECT r.*,b.name biz,u.username reporter FROM reports r JOIN businesses b ON b.id=r.business_id JOIN users u ON u.id=r.user_id WHERE r.status='open' ORDER BY r.created_at DESC LIMIT 5");
$pendingClaims = qall("
SELECT bcr.*, b.name biz_name, b.slug biz_slug, u.username, u.email
FROM business_claim_requests bcr
JOIN businesses b ON b.id = bcr.business_id
JOIN users u ON u.id = bcr.user_id
WHERE bcr.status = 'pending'
ORDER BY bcr.created_at DESC
LIMIT 10
");
$pendingEdits = qall("
SELECT ber.*, b.name biz_name, b.slug biz_slug, b.id biz_id, u.username
FROM business_edit_requests ber
JOIN businesses b ON b.id = ber.business_id
JOIN users u ON u.id = ber.user_id
WHERE ber.status = 'pending'
ORDER BY ber.created_at DESC
LIMIT 10
");
$recentForumTopics = qall("
SELECT ft.*, fc.name category_name, u.username,
(SELECT COUNT(*) FROM forum_replies fr WHERE fr.topic_id=ft.id) reply_count
FROM forum_topics ft
JOIN forum_categories fc ON fc.id=ft.category_id
JOIN users u ON u.id=ft.user_id
ORDER BY datetime(ft.updated_at) DESC
LIMIT 5
");
?>
🔑 BUSINESS PAGE CLAIM REQUESTS (=count($pendingClaims)?>)
| BUSINESS | REQUESTED BY | CONTACT PHONE | SUBMITTED | |
| =e($claim['biz_name'])?> |
=e($claim['username'])?>
=e($claim['email'])?>
|
=e($claim['contact_phone'])?> |
=ago($claim['created_at'] ?? '')?> |
Verify |
✏️ PENDING OWNER EDIT REQUESTS (=count($pendingEdits)?>)
| BUSINESS | FIELD | SUBMITTED BY | PROPOSED VALUE | SUBMITTED | |
'Description','address'=>'Address','phone'=>'Phone',
'email'=>'Email','website'=>'Website','video_url'=>'Video','hours'=>'Hours','is_active'=>'Status'];
foreach ($pendingEdits as $pe):
$preview = $pe['field'] === 'hours'
? '(hours update)'
: ($pe['field'] === 'is_active'
? ($pe['new_value']==='1' ? 'Open/Active' : 'Closed/Inactive')
: substr($pe['new_value'], 0, 60).(strlen($pe['new_value'])>60?'…':''));
?>
| =e($pe['biz_name'])?> |
=e($fieldLabels[$pe['field']] ?? $pe['field'])?> |
=e($pe['username'] ?? '')?> |
=e($preview)?> |
=ago($pe['created_at'] ?? '')?> |
Review |
View All Edit Requests
⏳ PENDING EVENTS (=count($pendingEvts)?>)
| EVENT | SUBMITTED BY | DATE | |
| =e($ev['title'])?> |
=e($ev['username']??'—')?> |
=fdate($ev['event_date']??'')?> |
Review |
🚩 OPEN REPORTS (=count($openReports)?>)
| BUSINESS | TYPE | FROM | |
| =e($r['biz'])?> |
=e($r['type'])?> |
=e($r['reporter'])?> |
View |
FORUM ACTIVITY
| TOPIC | CATEGORY | BY | REPLIES | |
| =e($topic['title'])?> =ago($topic['updated_at'])?> |
=e($topic['category_name'])?> |
=e($topic['username'])?> |
=$topic['reply_count']?> |
Moderate |
👥 RECENT USERS
| USERNAME | JOINED | |
| =e($u['username'])?>=$u['is_admin']?' ADMIN':''?> |
=fdate($u['created_at']??'')?> |
Edit |
Manage All Users