polygon-website-foss/browse.php

72 lines
3.0 KiB
PHP

<?php
require $_SERVER['DOCUMENT_ROOT'].'/api/private/core.php';
users::requireLogin();
$keyword = $_GET['SearchTextBox'] ?? false;
$page = $_GET['PageNumber'] ?? 1;
$keyword_sql = "%$keyword%";
$query = $pdo->prepare("SELECT COUNT(*) FROM users WHERE username LIKE :keywd AND NOT (SELECT COUNT(*) FROM bans WHERE userId = users.id AND NOT isDismissed)");
$query->bindParam(":keywd", $keyword_sql, PDO::PARAM_STR);
$query->execute();
$pages = ceil($query->fetchColumn()/15);
if($page > $pages) $page = $pages;
if(!is_numeric($page) || $page < 1) $page = 1;
$offset = ($page - 1)*15;
$query = $pdo->prepare("SELECT * FROM users WHERE username LIKE :keywd AND NOT (SELECT COUNT(*) FROM bans WHERE userId = users.id AND NOT isDismissed) ORDER BY lastonline DESC LIMIT 15 OFFSET $offset");
$query->bindParam(":keywd", $keyword_sql, PDO::PARAM_STR);
$query->execute();
function buildURL($page)
{
global $keyword;
$url = "?";
if($keyword) $url .= "SearchTextBox=$keyword&";
$url .= "PageNumber=$page";
return $url;
}
pageBuilder::$pageConfig["title"] = "Browse People";
pageBuilder::buildHeader();
?>
<form>
<div class="form-group row">
<label for="SearchTextBox" class="col-sm-1 col-form-label">Search: </label>
<input type="text" class="form-control col-sm-7 mx-2" name="SearchTextBox" id="SearchTextBox" value="<?=htmlspecialchars($keyword)?>">
<button class="btn btn-light">Search Users</button>
</div>
<?php if($query->rowCount()) { ?>
<table class="table table-hover">
<thead class="table-bordered bg-light">
<tr>
<th class="font-weight-normal py-2" scope="col" style="width:5%">Avatar</th>
<th class="font-weight-normal py-2" scope="col" style="width:20%">Name</th>
<th class="font-weight-normal py-2" scope="col" style="width:50%">Blurb</th>
<th class="font-weight-normal py-2" scope="col" style="width:20%">Location / Last Seen</th>
</tr>
</thead>
<tbody>
<?php while($row = $query->fetch(PDO::FETCH_OBJ)) { $status = users::getOnlineStatus($row->id); ?>
<tr>
<td><img src="<?=Thumbnails::GetAvatar($row->id, 100, 100)?>" title="<?=$row->username?>" alt="<?=$row->username?>" width="63" height="63"></td>
<td><a href="/user?ID=<?=$row->id?>"><?=$row->username?></a></td>
<td class="text-break"><?=polygon::filterText($row->blurb)?></td>
<td><span<?=$status["attributes"]?:''?>><?=$status["text"]?></span></td>
</tr>
<?php } ?>
</tbody>
</table>
<?php } else { ?>
<p class="text-center">No results matched your search query</p>
<?php } if($pages > 1) { ?>
<div class="pagination form-inline justify-content-center">
<a class="btn btn-light back<?=$page<=1?' disabled':'" href="'.buildURL($page-1)?>"><h5 class="mb-0"><i class="fal fa-caret-left"></i></h5></a>
<span class="px-3">Page <?=$page?> of <?=$pages?></span>
<a class="btn btn-light next<?=$page>=$pages?' disabled':'" href="'.buildURL($page+1)?>"><h5 class="mb-0"><i class="fal fa-caret-right"></i></h5></a>
</div>
<?php } ?>
</form>
<?php pageBuilder::buildFooter(); ?>