]> git.bts.cx Git - cx.git/commitdiff
Basic support for pagination mainline
authorBen Sherratt <redacted>
Sun, 17 Mar 2024 21:58:18 +0000 (21:58 +0000)
committerBen Sherratt <redacted>
Sun, 17 Mar 2024 21:58:18 +0000 (21:58 +0000)
cx/cx.php
cx/lib/posts.php
cx/lib/site.php
cx/templates/public/list.php

index a47714b63cfe2929e0a80bb602d2789b1e01d05d..2c71761dd179e4ba3e6c3f7c6b8a207af7cb8e27 100644 (file)
--- a/cx/cx.php
+++ b/cx/cx.php
@@ -66,6 +66,7 @@ function cx_route($path) {
 
        if (count($path_components) == 0) {
                $template = 'list';
+               $template_variables['page_number'] = 0;
        } else if (count($path_components) >= 1 && $path_components[0] == 'feed') {
                header('Content-type: application/atom+xml;');
                $template = 'atom';
@@ -162,6 +163,11 @@ function cx_route($path) {
                                }
                        }
                }
+       } else if (count($path_components) >= 2 && $path_components[0] == 'page') { // FIXME sometime, needs more flexibility...
+               $page_number = $path_components[1];
+
+               $template = 'list';
+               $template_variables['page_number'] = $page_number;
        } else if (count($path_components) >= 3) { // FIXME sometime, needs more flexibility...
                $year = $path_components[0];
                $month = $path_components[1];
index 988d00eb008c457b873b67876d33f581213b9bba..7b1316643984a0ad2569831c7e820833df4a9874 100644 (file)
@@ -127,7 +127,7 @@ function cx_posts_delete_post($post_id) {
        cx_db_exec($sql, $post_id);
 }
 
-function cx_posts_get(int $limit = 0, bool $include_drafts = false) {
+function cx_posts_get(int $limit = 0, int $offset = 0, bool $include_drafts = false) {
        $sql = 'SELECT
                post_id,
                post_slug,
@@ -147,6 +147,10 @@ function cx_posts_get(int $limit = 0, bool $include_drafts = false) {
        if ($limit > 0) {
                $sql .= ' LIMIT ' . $limit;
        }
+       
+       if ($offset > 0) {
+               $sql .= ' OFFSET ' . $offset;
+       }
 
        $sql .= ';';
 
index 4a80b609c1018fabd92d6cadb3595df9ce7b4763..c705060e61f8d8eae02e795d48e95c7b984e080e 100644 (file)
@@ -55,6 +55,10 @@ function cx_site_url() {
        return $details['site_url'];
 }
 
+function cx_site_posts_per_page() {
+       return 5;
+}
+
 cx_setup_register(1, function() {
        cx_db_exec('CREATE TABLE sites (
                        site_id INTEGER PRIMARY KEY,
index 3b4cee27a0e1b819569f67f45a35f593ab91bd57..072cbb44aecd70e64d58d1db0145baa86e0b6577 100644 (file)
@@ -1,6 +1,7 @@
 <?php cx_template_base('base'); ?>
 <main>
-<?php foreach (cx_posts_get() as $post): ?>
+<?php $posts_per_page = cx_site_posts_per_page(); ?>
+<?php foreach (cx_posts_get(limit: $posts_per_page, offset: $page_number * cx_site_posts_per_page()) as $post): ?>
 <?php $post_permalink = '/' . date('Y', $post->date) . '/' . date('m', $post->date) . '/' . $post->slug; ?>
        <article>
                <h1><a href="<?= cx_url($post_permalink) ?>"><?= $post->title ?></a></h1>
@@ -13,4 +14,6 @@
                <?php endif; ?>
        </article>
 <?php endforeach; ?>
+
+       <p><a href="<?= cx_url('/page/' . ($page_number + 1) . '/') ?>">Next Posts</a></p>
 </main>