]> git.bts.cx Git - cx.git/blobdiff - cx/lib/posts.php
Fix CSS for images
[cx.git] / cx / lib / posts.php
index f056c8834797ada3b96a028e07c61a5f6c283b80..4d122dfe642ff2fb087af6a49b9c818138b2a4fc 100644 (file)
@@ -21,6 +21,7 @@ class Post {
        public $date;
        public $is_page;
        public $is_draft;
+       public $nav_index;
        public $data;
        public $html_content;
        public $html_excerpt;
@@ -32,6 +33,7 @@ class Post {
                $this->date = $dict['post_date'];
                $this->is_page = $dict['post_is_page'];
                $this->is_draft = $dict['post_is_draft'];
+               $this->nav_index = $dict['post_navigation_index'];
                $this->data = $dict['post_data'];
                $this->html_content = cx_markdown_generate_html($this->data);
                $this->html_excerpt = null;
@@ -43,6 +45,14 @@ class Post {
                }
        }
 
+       public function get_permalink_path() {
+               $permalink = '/' . $this->slug;
+               if ($this->is_page == false) {
+                       $permalink = '/' . date('Y', $this->date) . '/' . date('m', $this->date) . '/' . $this->slug;
+               }
+               return $permalink;
+       }
+
        public function get_metadata() {
                $data = [];
 
@@ -73,7 +83,7 @@ function cx_post_make_slug($title) {
        return $slug;
 }
 
-function cx_posts_add_post($site_id, $title, $slug, $date, $page, $draft, $data) {
+function cx_posts_add_post($site_id, $title, $slug, $date, $page, $draft, $nav_index, $data) {
        $creation_time = $update_time = time();
        
        if ($slug == null) {
@@ -92,14 +102,16 @@ function cx_posts_add_post($site_id, $title, $slug, $date, $page, $draft, $data)
                        post_date,
                        post_is_page,
                        post_is_draft,
+                       post_navigation_index,
                        post_title,
                        post_data,
                        post_data_version)
-               VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);';
-       cx_db_exec($sql, $site_id, $creation_time, $update_time, $slug, $date, $page, $draft, $title, $data, 1);
+               VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);';
+       $id = cx_db_exec($sql, $site_id, $creation_time, $update_time, $slug, $date, $page, $draft, $nav_index, $title, $data, 1);
+       return $id;
 }
 
-function cx_posts_update_post($post_id, $title, $slug, $date, $page, $draft, $data) {
+function cx_posts_update_post($post_id, $title, $slug, $date, $page, $draft, $nav_index, $data) {
        $update_time = time();
        
        if ($slug == null) {
@@ -116,11 +128,12 @@ function cx_posts_update_post($post_id, $title, $slug, $date, $page, $draft, $da
                post_date = ?,
                post_is_page = ?,
                post_is_draft = ?,
+               post_navigation_index = ?,
                post_title = ?,
                post_data = ?
                WHERE post_id == ?;';
                //LIMIT 1;';
-       cx_db_exec($sql, $update_time, $slug, $date, $page, $draft, $title, $data, $post_id);
+       cx_db_exec($sql, $update_time, $slug, $date, $page, $draft, $nav_index, $title, $data, $post_id);
 }
 
 function cx_posts_delete_post($post_id) {
@@ -135,7 +148,9 @@ function cx_posts_get(int $limit = 0, int $offset = 0, bool $include_drafts = fa
                post_id,
                post_slug,
                post_date,
+               post_is_page,
                post_is_draft,
+               post_navigation_index,
                post_title,
                post_data
                FROM posts
@@ -188,7 +203,9 @@ function cx_posts_find_post($post_id) {
                post_id,
                post_slug,
                post_date,
+               post_is_page,
                post_is_draft,
+               post_navigation_index,
                post_title,
                post_data
                FROM posts
@@ -203,30 +220,43 @@ function cx_posts_find_post($post_id) {
        return null;
 }
 
-function cx_posts_find_article_id($post_slug) {
+function cx_posts_find_article_id($post_slug, bool $include_drafts = false) {
        $sql = 'SELECT
                post_id
                FROM posts
                WHERE post_slug == ?
-               AND post_is_page == FALSE
-               AND post_is_draft == FALSE
-               LIMIT 1;';
+               AND post_is_page == FALSE';
+
+       if ($include_drafts == false) {
+               $sql .= ' AND post_is_draft == FALSE';
+       }
+
+       $sql .= ' LIMIT 1';
+
+       $sql .= ';';
 
        foreach (cx_db_query($sql, $post_slug) as $post) {
                return $post['post_id'];
        }
 
        return null;
+
 }
 
-function cx_posts_find_page_id($post_slug) {
+function cx_posts_find_page_id($post_slug, bool $include_drafts = false) {
        $sql = 'SELECT
                post_id
                FROM posts
                WHERE post_slug == ?
-               AND post_is_page == TRUE
-               AND post_is_draft == FALSE
-               LIMIT 1;';
+               AND post_is_page == TRUE';
+
+       if ($include_drafts == false) {
+               $sql .= ' AND post_is_draft == FALSE';
+       }
+
+       $sql .= ' LIMIT 1';
+
+       $sql .= ';';
 
        foreach (cx_db_query($sql, $post_slug) as $post) {
                return $post['post_id'];
@@ -235,18 +265,30 @@ function cx_posts_find_page_id($post_slug) {
        return null;
 }
 
-function cx_pages_get() {
+function cx_pages_get(bool $navigation_only = true, bool $include_drafts = false) {
        $sql = 'SELECT
                post_id,
                post_slug,
                post_date,
+               post_is_page,
                post_is_draft,
+               post_navigation_index,
                post_title,
                post_data
                FROM posts
-               WHERE post_is_page == TRUE
-               AND post_is_draft == FALSE
-               ORDER BY post_creation_time DESC;';
+               WHERE post_is_page == TRUE';
+
+       if ($navigation_only) {
+               $sql .= ' AND post_navigation_index != ""';
+       }
+
+       if ($include_drafts == false) {
+               $sql .= ' AND post_is_draft == FALSE';
+       }
+
+       $sql .= ' ORDER BY post_navigation_index ASC, post_date DESC';
+
+       $sql .= ';';
 
        foreach (cx_db_query($sql) as $post) {
                $p = new Post($post);
@@ -264,6 +306,7 @@ cx_setup_register(1, function() {
                        post_date INTEGER,
                        post_is_page BOOLEAN,
                        post_is_draft BOOLEAN,
+                       post_navigation_index INTEGER,
                        post_title STRING,
                        post_data BLOB,
                        post_data_version INTEGER,