- v1.1.0 - Redesign

This commit is contained in:
Ty Clifford
2026-06-18 12:50:44 -04:00
parent f1844abad5
commit 66f93757b6
14 changed files with 2107 additions and 387 deletions
+74
View File
@@ -16,6 +16,23 @@ if (isPost()) {
qrun("DELETE FROM business_owners WHERE user_id=? AND business_id=?",[(int)p('user_id'),(int)p('business_id')]);
flash('Owner removed.','success');
}
if ($act === 'approve_claim') {
$claimId = (int)p('claim_id');
$claim = qone("SELECT * FROM business_claim_requests WHERE id=? AND status='pending'", [$claimId]);
if ($claim) {
qrun("INSERT OR IGNORE INTO business_owners(user_id,business_id)VALUES(?,?)", [(int)$claim['user_id'], (int)$claim['business_id']]);
qrun("UPDATE business_claim_requests SET status='approved', reviewed_at=datetime('now') WHERE id=?", [$claimId]);
flash('Business claim approved and owner assigned.', 'success');
}
go('/admin/owners.php#claims');
}
if ($act === 'reject_claim') {
$claimId = (int)p('claim_id');
qrun("UPDATE business_claim_requests SET status='rejected', admin_notes=?, reviewed_at=datetime('now') WHERE id=? AND status='pending'",
[ps('admin_notes'), $claimId]);
flash('Business claim rejected.', 'info');
go('/admin/owners.php#claims');
}
go('/admin/owners.php'.($_GET?'?'.http_build_query($_GET):''));
}
@@ -24,9 +41,66 @@ $filterBiz = iget('business_id');
$users = qall("SELECT id,username FROM users WHERE is_active=1 ORDER BY username");
$bizs = qall("SELECT id,name FROM businesses WHERE is_active=1 ORDER BY name");
$owners = qall("SELECT bo.*,u.username,b.name biz_name FROM business_owners bo JOIN users u ON u.id=bo.user_id JOIN businesses b ON b.id=bo.business_id ORDER BY b.name,u.username");
$claims = qall("
SELECT bcr.*, u.username, u.email, b.name biz_name, b.slug biz_slug
FROM business_claim_requests bcr
JOIN users u ON u.id=bcr.user_id
JOIN businesses b ON b.id=bcr.business_id
WHERE bcr.status='pending'
ORDER BY bcr.created_at DESC
");
?>
<?php adminTitle('Assign Business Owners','Link user accounts to businesses so they can manage listings, post alerts, and update menus.') ?>
<div id="claims" class="admin-sec-title">PENDING BUSINESS CLAIMS (<?=count($claims)?>)</div>
<?php if($claims): ?>
<div class="tbl-wrap" style="margin-bottom:2rem">
<table class="dtbl">
<thead><tr><th>BUSINESS</th><th>REQUESTED BY</th><th>CONTACT PHONE</th><th>PENDING EDITS</th><th>SUBMITTED</th><th>ACTIONS</th></tr></thead>
<tbody>
<?php foreach($claims as $claim): ?>
<?php $editCount = (int)qval("SELECT COUNT(*) FROM business_edit_requests WHERE business_id=? AND user_id=? AND status='pending'", [$claim['business_id'], $claim['user_id']]); ?>
<tr>
<td><a href="/business.php?slug=<?=e($claim['biz_slug'])?>" target="_blank" class="td-name"><?=e($claim['biz_name'])?></a></td>
<td>
<div class="td-name"><?=e($claim['username'])?></div>
<?php if($claim['email']): ?><div style="font-size:.76rem;color:var(--text-d)"><?=e($claim['email'])?></div><?php endif; ?>
</td>
<td style="color:var(--text)"><?=e($claim['contact_phone'])?></td>
<td>
<?php if($editCount): ?>
<a href="/admin/biz_edits.php?biz_id=<?=$claim['business_id']?>" class="badge badge-gold"><?=$editCount?> edit<?=$editCount!==1?'s':''?></a>
<?php else: ?>
<span style="color:var(--text-d)">None</span>
<?php endif; ?>
</td>
<td style="font-size:.78rem;color:var(--text-d)"><?=ago($claim['created_at'] ?? '')?></td>
<td>
<div class="flex-row" style="gap:.35rem">
<form method="POST" style="display:inline">
<?=csrfField()?>
<input type="hidden" name="_act" value="approve_claim">
<input type="hidden" name="claim_id" value="<?=$claim['id']?>">
<button class="btn btn-xs btn-success" data-confirm="Approve this claim and assign <?=e($claim['username'])?> as owner of <?=e($claim['biz_name'])?>?">Approve</button>
</form>
<form method="POST" style="display:flex;gap:.35rem;align-items:center">
<?=csrfField()?>
<input type="hidden" name="_act" value="reject_claim">
<input type="hidden" name="claim_id" value="<?=$claim['id']?>">
<input type="text" name="admin_notes" class="finput" style="width:150px;font-size:.75rem;padding:.25rem .45rem" placeholder="Reason">
<button class="btn btn-xs btn-danger">Reject</button>
</form>
</div>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php else: ?>
<div class="empty" style="padding:1.75rem;margin-bottom:2rem"><div class="empty-ico">🔑</div><h3>No pending business claims</h3></div>
<?php endif; ?>
<div class="ibox" style="border-color:var(--gold-d);margin-bottom:2rem">
<div class="ibox-title">🔑 ASSIGN OWNER TO BUSINESS</div>
<form method="POST">