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