50 lines
3.0 KiB
PHP
50 lines
3.0 KiB
PHP
<?php
|
|
$adminTitle = 'Reviews';
|
|
include __DIR__.'/admin_header.php';
|
|
|
|
if (isPost()) {
|
|
csrfCheck();
|
|
$act = p('_act');
|
|
if ($act === 'approve') { qrun("UPDATE reviews SET is_approved=1 WHERE id=?",[(int)p('id')]); flash('Review approved.','success'); }
|
|
if ($act === 'hide') { qrun("UPDATE reviews SET is_approved=0 WHERE id=?",[(int)p('id')]); flash('Review hidden.','success'); }
|
|
if ($act === 'delete') { qrun("DELETE FROM reviews WHERE id=?",[(int)p('id')]); flash('Review deleted.','success'); }
|
|
go('/admin/reviews.php');
|
|
}
|
|
|
|
$page = max(1,iget('page')); $perPage = 30;
|
|
$total = (int)qval("SELECT COUNT(*) FROM reviews");
|
|
$pages = max(1,(int)ceil($total/$perPage));
|
|
$page = min($page,$pages);
|
|
$offset = ($page-1)*$perPage;
|
|
$reviews = qall("SELECT r.*,u.username,b.name biz_name,b.slug biz_slug FROM reviews r JOIN users u ON u.id=r.user_id JOIN businesses b ON b.id=r.business_id ORDER BY r.created_at DESC LIMIT $perPage OFFSET $offset");
|
|
?>
|
|
<?php adminTitle('Manage Reviews','Approve, hide, or delete user reviews.') ?>
|
|
<div class="tbl-wrap">
|
|
<table class="dtbl">
|
|
<thead><tr><th>BUSINESS</th><th>USER</th><th>RATING</th><th>TITLE</th><th>STATUS</th><th>DATE</th><th>ACTIONS</th></tr></thead>
|
|
<tbody>
|
|
<?php foreach($reviews as $r): ?>
|
|
<tr>
|
|
<td><a href="/business.php?slug=<?=e($r['biz_slug'])?>" target="_blank" class="td-name"><?=e($r['biz_name'])?></a></td>
|
|
<td><?=e($r['username'])?></td>
|
|
<td><?=starDisplay((float)$r['rating'])?></td>
|
|
<td style="font-size:.82rem;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap"><?=e($r['title']?:$r['body'])?></td>
|
|
<td><?=$r['is_approved']?'<span class="badge badge-green">Visible</span>':'<span class="badge badge-gray">Hidden</span>'?></td>
|
|
<td style="font-size:.8rem"><?=ago($r['created_at'])?></td>
|
|
<td>
|
|
<div class="flex-row" style="gap:.3rem">
|
|
<?php if(!$r['is_approved']): ?><form method="POST" style="display:inline"><?=csrfField()?><input type="hidden" name="_act" value="approve"><input type="hidden" name="id" value="<?=$r['id']?>"><button class="btn btn-xs btn-success">Approve</button></form>
|
|
<?php else: ?><form method="POST" style="display:inline"><?=csrfField()?><input type="hidden" name="_act" value="hide"><input type="hidden" name="id" value="<?=$r['id']?>"><button class="btn btn-xs btn-secondary">Hide</button></form><?php endif; ?>
|
|
<form method="POST" style="display:inline"><?=csrfField()?><input type="hidden" name="_act" value="delete"><input type="hidden" name="id" value="<?=$r['id']?>"><button class="btn btn-xs btn-danger" data-confirm="Delete this review?">🗑️</button></form>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<?php if($pages>1): ?>
|
|
<div style="display:flex;gap:.5rem;margin-top:1rem;flex-wrap:wrap"><?php for($i=1;$i<=$pages;$i++): ?><a href="?page=<?=$i?>" class="btn btn-sm<?=$i===$page?' btn-primary':' btn-outline'?>"><?=$i?></a><?php endfor; ?></div>
|
|
<?php endif; ?>
|
|
<?php include __DIR__.'/admin_footer.php'; ?>
|