From a9f610fc602537a4609a3937acbe866c8123bc67 Mon Sep 17 00:00:00 2001 From: Greg Sarjeant Date: Thu, 31 Jul 2025 01:30:25 +0000 Subject: [PATCH] Make home page similar to feeds. Simplify tick retrieval. (#37) Reviewed-on: https://gitea.subcultureofone.org/greg/tkr/pulls/37 Co-authored-by: Greg Sarjeant Co-committed-by: Greg Sarjeant --- .../FeedController/FeedController.php | 2 +- .../HomeController/HomeController.php | 6 +++--- src/Model/TickModel/TickModel.php | 10 ++-------- .../HomeView.php => TicksView/TicksView.php} | 17 +++++++++++++---- 4 files changed, 19 insertions(+), 16 deletions(-) rename src/View/{HomeView/HomeView.php => TicksView/TicksView.php} (75%) diff --git a/src/Controller/FeedController/FeedController.php b/src/Controller/FeedController/FeedController.php index a1e415b..dbaa787 100644 --- a/src/Controller/FeedController/FeedController.php +++ b/src/Controller/FeedController/FeedController.php @@ -6,7 +6,7 @@ class FeedController extends Controller { public function __construct(){ $this->config = ConfigModel::load(); $tickModel = new TickModel(); - $this->ticks = iterator_to_array($tickModel->stream($this->config->itemsPerPage)); + $this->ticks = $tickModel->getPage($this->config->itemsPerPage); Log::debug("Loaded " . count($this->ticks) . " ticks for feeds"); } diff --git a/src/Controller/HomeController/HomeController.php b/src/Controller/HomeController/HomeController.php index bd1ed88..e0f8c1e 100644 --- a/src/Controller/HomeController/HomeController.php +++ b/src/Controller/HomeController/HomeController.php @@ -10,10 +10,10 @@ class HomeController extends Controller { $tickModel = new TickModel(); $limit = $config->itemsPerPage; $offset = ($page - 1) * $limit; - $ticks = iterator_to_array($tickModel->stream($limit, $offset)); + $ticks = $tickModel->getPage($limit, $offset); - $view = new HomeView(); - $tickList = $view->renderTicksSection($config->siteDescription, $ticks, $page, $limit); + $view = new TicksView($config, $ticks, $page); + $tickList = $view->getHtml(); $vars = [ 'config' => $config, diff --git a/src/Model/TickModel/TickModel.php b/src/Model/TickModel/TickModel.php index 577c16e..be947a3 100644 --- a/src/Model/TickModel/TickModel.php +++ b/src/Model/TickModel/TickModel.php @@ -1,18 +1,12 @@ prepare("SELECT id, timestamp, tick FROM tick ORDER BY timestamp DESC LIMIT ? OFFSET ?"); $stmt->execute([$limit, $offset]); - while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { - yield [ - 'id' => $row['id'], - 'timestamp' => $row['timestamp'], - 'tick' => $row['tick'], - ]; - } + return $stmt->fetchAll(PDO::FETCH_ASSOC); } public function insert(string $tick, ?DateTimeImmutable $datetime = null): void { diff --git a/src/View/HomeView/HomeView.php b/src/View/TicksView/TicksView.php similarity index 75% rename from src/View/HomeView/HomeView.php rename to src/View/TicksView/TicksView.php index 836f340..166bafa 100644 --- a/src/View/HomeView/HomeView.php +++ b/src/View/TicksView/TicksView.php @@ -1,7 +1,16 @@ html = $this->render($config, $ticks, $page); + } + + public function getHtml(): string { + return $this->html; + } + + private function render(ConfigModel $config, array $ticks, int $page): string{ ob_start(); ?> @@ -22,7 +31,7 @@ class HomeView { strictAccessibility): ?>tabindex="0" href="?page=">« Newer - + itemsPerPage): ?> strictAccessibility): ?>tabindex="0" href="?page=">Older »