1
0
Fork 0
app.sixfold.org/www/members/index.php
2024-11-14 04:30:20 -05:00

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"; ?>