archive-ccc8458/video/index.php 2.3 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
<?php
declare(strict_types=1);
require_once __DIR__ . '/lib/hash.php';

const PER_PAGE = 16;
$page = max(1, (int)($_GET['page'] ?? 1));
$result = paginate_videos(false, ($page - 1) * PER_PAGE, PER_PAGE);
$videos = $result['videos'];
$totalPages = max(1, (int) ceil($result['total'] / PER_PAGE));
// Clamp out-of-range page requests back to the last real page.
if ($page > $totalPages) {
    header('Location: /video/?page=' . $totalPages, true, 302);
    exit;
}

function rel_time(int $epoch): string {
    if ($epoch <= 0) return '';
    $d = time() - $epoch;
    if ($d < 60)        return 'just now';
    if ($d < 3600)      return floor($d / 60) . 'm ago';
    if ($d < 86400)     return floor($d / 3600) . 'h ago';
    if ($d < 2592000)   return floor($d / 86400) . 'd ago';
    return date('j M Y', $epoch);
}
?><!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Sianel</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="/video/sianel.css">
</head>
<body class="page-index">
<header>
  <a href="/video/"><img class="logo" src="/video/sianel_logo.png" alt="Sianel"></a>
  <a href="/video/admin">Admin</a>
</header>
<main>
<?php if (empty($videos)): ?>
  <p class="empty">No videos yet.</p>
<?php else: ?>
  <div class="grid">
    <?php foreach ($videos as $v): ?>
      <a class="tile" href="<?= htmlspecialchars($v['url']) ?>">
        <?php if ($v['thumbnail']): ?>
          <img class="thumb" src="<?= htmlspecialchars($v['thumbnail']) ?>" alt="" loading="lazy">
        <?php else: ?>
          <div class="ph" aria-label="No thumbnail">&#9654;</div>
        <?php endif; ?>
        <div class="cap"><?= htmlspecialchars(rel_time((int) $v['uploaded'])) ?></div>
      </a>
    <?php endforeach; ?>
  </div>
  <?php if ($totalPages > 1): ?>
    <nav class="pager">
      <?php if ($page > 1): ?>
        <a href="/video/?page=<?= $page - 1 ?>" rel="prev">← Prev</a>
      <?php else: ?>
        <span class="btn disabled">← Prev</span>
      <?php endif; ?>
      <span class="count">Page <?= $page ?> of <?= $totalPages ?></span>
      <?php if ($page < $totalPages): ?>
        <a href="/video/?page=<?= $page + 1 ?>" rel="next">Next →</a>
      <?php else: ?>
        <span class="btn disabled">Next →</span>
      <?php endif; ?>
    </nav>
  <?php endif; ?>
<?php endif; ?>
</main>
</body>
</html>