105 lines
3.7 KiB
PHP
105 lines
3.7 KiB
PHP
<?php
|
|
|
|
$title = 'Members';
|
|
$description = "View a list of our members.";
|
|
|
|
$member_count = $db['data']->query('SELECT COUNT(*) FROM members', PDO::FETCH_COLUMN, 0)->fetch();
|
|
|
|
$page = intval($_GET['page'] ?? 1);
|
|
$per_page = intval($_GET['per_page'] ?? 50);
|
|
$num_pages = ceil($member_count / $per_page) + ($member_count % $per_page > 0 ? 1 : 0);
|
|
$has_next_page = $page < $num_pages;
|
|
|
|
$sql = "SELECT
|
|
id,
|
|
name,
|
|
email,
|
|
handle,
|
|
links,
|
|
created_at
|
|
FROM members
|
|
ORDER BY created_at DESC
|
|
LIMIT :per_page
|
|
OFFSET :offset";
|
|
|
|
$stmt = $db['data']->prepare($sql);
|
|
$stmt->execute([
|
|
'per_page' => ($per_page > 500) ? 500 : $per_page,
|
|
'offset' => ($page - 1) * $per_page,
|
|
]);
|
|
|
|
include "partials/head.php"; ?>
|
|
<body>
|
|
<?php include "partials/header.php" ?>
|
|
<main id="main" class="flow">
|
|
<header>
|
|
<h1><?= $title ?></h1>
|
|
</header>
|
|
<?php if ($per_page > 500) { ?><p><em>Results are limited to 500 per page.</em></p><?php } ?>
|
|
<div role="region" aria-labelledby="members-caption" tabindex="0">
|
|
<table>
|
|
<caption id="members-caption">Sixfold Member List (<?= $member_count ?> members)</caption>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col">Handle</th>
|
|
<th scope="col">Name</th>
|
|
<th scope="col">Date Joined</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php foreach ($stmt->fetchAll() as $member) {
|
|
// set empty names
|
|
// $stmt2 = $db['data']->prepare('UPDATE members SET name = :name WHERE name = " "');
|
|
// $stmt2->execute([
|
|
// 'name' => NULL
|
|
// ]);
|
|
|
|
// fix broken encodings
|
|
// $stmt2 = $db['data']->prepare('UPDATE members SET name = :name WHERE id = :id');
|
|
// $stmt2->execute([
|
|
// 'id' => $member['id'],
|
|
// 'name' => mb_convert_encoding($member['name'], 'Windows-1252','utf-8'),
|
|
// ]);
|
|
|
|
// fix null handles
|
|
// $stmt2 = $db['data']->prepare('UPDATE members SET handle = :handle WHERE id = :id');
|
|
// $stmt2->execute([
|
|
// 'id' => $member['id'],
|
|
// 'handle' => 'member-' . $member['id']
|
|
// ]);
|
|
//
|
|
// set empty bio
|
|
$stmt2 = $db['data']->prepare('UPDATE members SET biography = :bio WHERE biography = ""');
|
|
$stmt2->execute([
|
|
'bio' => NULL
|
|
]);
|
|
|
|
// fix links
|
|
$stmt2 = $db['data']->prepare('UPDATE members SET links = :links WHERE id = :id');
|
|
$stmt2->execute([
|
|
'links' => str_replace('", url:', '", "url":', $member['links']),
|
|
'id' => $member['id']
|
|
]);
|
|
?>
|
|
<tr>
|
|
<th scope="row"><a href="/members/<?= $member['handle'] ?>"><?= $member['handle'] ?></a></th>
|
|
<td><?= $member['name'] ?? 'Anonymous' ?></td>
|
|
<?php $created_at = new DateTime($member['created_at']); ?>
|
|
<td><?= $created_at->format("j F Y") ?></td>
|
|
</tr>
|
|
<?php } ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<ul>
|
|
<li>
|
|
<?php if ($page > 1) { ?>
|
|
<a href="/members?page=<?= $page - 1 ?>&per_page=<?= $per_page ?>">Previous page</a>
|
|
<?php } else { ?>
|
|
<a disabled>Previous page</a>
|
|
<?php } ?>
|
|
</li>
|
|
<?php if ($has_next_page) { ?><li><a href="/members?page=<?= $page + 1 ?>&per_page=<?= $per_page ?>">Next page</a></li><?php } ?>
|
|
</ul>
|
|
</main>
|
|
<?php include "partials/footer.php"; ?>
|