]> git.bts.cx Git - cx.git/commitdiff
Better pagination support
authorBen Sherratt <redacted>
Fri, 3 Jul 2026 08:01:03 +0000 (09:01 +0100)
committerBen Sherratt <redacted>
Fri, 3 Jul 2026 08:01:03 +0000 (09:01 +0100)
cx/lib/images.php
cx/lib/posts.php
cx/lib/url.php
cx/templates/public/base.php
cx/templates/public/list.php
setup.sh [new file with mode: 0755]

index dbe55bf4b23fed11610799cf6a4f90f8348bd5b5..ea29f747938ca936df675143564bf0a03f37aba5 100644 (file)
@@ -95,5 +95,8 @@ cx_setup_register(1, function() {
                        FOREIGN KEY(image_site_id) REFERENCES sites(site_id)
                );');
 
-       mkdir(cx_user_data_path('images'), recursive: true);
+       $image_dir = cx_user_data_path('images');
+       if (is_dir($image_dir) == false) {
+               mkdir($image_dir, recursive: true);
+       }
 });
index 7b1316643984a0ad2569831c7e820833df4a9874..b187c51c46c41f3a55b72b39a085d9792d77ab20 100644 (file)
@@ -160,6 +160,26 @@ function cx_posts_get(int $limit = 0, int $offset = 0, bool $include_drafts = fa
        }
 }
 
+function cx_posts_count(bool $include_drafts = false) {
+       $sql = 'SELECT
+               COUNT(post_id) AS _count
+               FROM posts
+               WHERE post_is_page == FALSE';
+       
+       if ($include_drafts == false) {
+               $sql .= ' AND post_is_draft == FALSE';
+       }
+
+       $sql .= ';';
+
+
+       foreach (cx_db_query($sql) as $count_details) {
+               return $count_details['_count'];
+       }
+
+       return 0;
+}
+
 function cx_posts_find_post($post_id) {
        $sql = 'SELECT
                post_id,
index 1ace5393017db3a523cd2bd892d99416a4faa16c..0bcef4c30ed48db3c755d7f9a30c9a81da679a0a 100644 (file)
@@ -13,3 +13,12 @@ function cx_url_admin($path) {
 function cx_url_site($path) {
        return cx_site_url() . cx_url($path);
 }
+
+function cx_url_page($number, $delta = 0) {
+       $next_number = $number + $delta;
+       if ($next_number <= 0) {
+               return cx_url_site('/');
+       } else {
+               return cx_url_site('/page/' . $next_number );
+       }
+}
index 927c09bcaf989bb75bb62b80d1330d2429a0d63d..8629d34791096bc801fdc78e8b51d5b509b9d005 100644 (file)
        <link rel="stylesheet" href="<?= cx_url('/design/css/style.css') ?>">
        <link rel="alternate" type="application/atom+xml" title="bts.cx" href="<?= cx_url('/feed/') ?>" />
 
+       <meta property="og:site_name" content="<?= cx_site_name(); ?>">
+       <?php if (isset($cx_post_title)): ?>
+       <meta property="og:title" content="<?= $cx_post_title; ?>">
+       <?php else: ?>
+       <meta property="og:title" content="<?= cx_site_name(); ?>">
+       <?php endif; ?>
+
        <?php if (isset($cx_post_meta)): ?>
        
-       <meta property="og:title" content="<?= cx_site_name(); ?> - <?= $cx_post_title; ?>">
        <meta property="og:type" content="article" />
 
        <?php if (isset($cx_post_meta->hero_image)): ?>
        <meta name="twitter:image:alt" content="<?= $cx_post_meta->hero_image_alt; ?>">
        <?php endif; ?>
 
-       <?php /*<meta property="og:description" content="Offering tour packages for individuals or groups.">
-       <meta property="og:site_name" content="<?= cx_site_name(); ?>">
-       <meta name="twitter:image:alt" content="Alt text for image">*/ ?>
-
        <?php endif; ?>
 </head>
 
index 072cbb44aecd70e64d58d1db0145baa86e0b6577..0f02a71fd33b5d806743a2f8822454877b3d5ceb 100644 (file)
@@ -15,5 +15,9 @@
        </article>
 <?php endforeach; ?>
 
-       <p><a href="<?= cx_url('/page/' . ($page_number + 1) . '/') ?>">Next Posts</a></p>
+       <p>
+               <?php $number_of_pages = ceil(cx_posts_count() / $posts_per_page); ?>
+               <?php if($page_number + 1 < $number_of_pages): ?><a href="<?= cx_url_page($page_number, 1) ?>">Older Posts</a><?php endif; ?>
+               <?php if($page_number > 0): ?><a href="<?= cx_url_page($page_number, -1) ?>">Newer Posts</a><?php endif; ?>
+       </p>
 </main>
diff --git a/setup.sh b/setup.sh
new file mode 100755 (executable)
index 0000000..ea851b8
--- /dev/null
+++ b/setup.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+mkdir db
+mkdir public/data
+mkdir public/data/images
+
+cp setup.template.php setup.php
+
+echo "Now edit setup.php with your site details!"