X-Git-Url: https://git.bts.cx/cx.git/blobdiff_plain/4083179b42caa6de33cd4cec006d7ffe46e48a60..c31a7eee27fd40e7aa558ad15e33f65f9fb6aed2:/cx/lib/posts.php?ds=sidebyside diff --git a/cx/lib/posts.php b/cx/lib/posts.php index 6437433..326d81c 100644 --- a/cx/lib/posts.php +++ b/cx/lib/posts.php @@ -19,7 +19,9 @@ class Post { public $title; public $slug; public $date; + public $is_page; public $is_draft; + public $nav_index; public $data; public $html_content; public $html_excerpt; @@ -29,7 +31,9 @@ class Post { $this->title = $dict['post_title']; $this->slug = $dict['post_slug']; $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; @@ -41,6 +45,11 @@ class Post { } } + public function get_permalink_path() { + $post_permalink = $this->is_page ? '/' . $this->slug : '/' . date('Y', $this->date) . '/' . date('m', $this->date) . '/' . $this->slug; + return $post_permalink; + } + public function get_metadata() { $data = []; @@ -71,7 +80,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) { @@ -90,14 +99,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) { @@ -114,11 +125,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) { @@ -133,7 +145,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 @@ -186,7 +200,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 @@ -201,30 +217,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']; @@ -233,18 +262,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); @@ -262,6 +303,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,