X-Git-Url: https://git.bts.cx/cx.git/blobdiff_plain/a33491c3a25cf858b67f279c10d93e0eb863ad92..326cc7d316faee2371e3b7d62e61b5158c681649:/cx/lib/posts.php?ds=sidebyside diff --git a/cx/lib/posts.php b/cx/lib/posts.php index 988d00e..e46aa28 100644 --- a/cx/lib/posts.php +++ b/cx/lib/posts.php @@ -19,6 +19,7 @@ class Post { public $title; public $slug; public $date; + public $is_page; public $is_draft; public $data; public $html_content; @@ -29,6 +30,7 @@ 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->data = $dict['post_data']; $this->html_content = cx_markdown_generate_html($this->data); @@ -71,7 +73,7 @@ function cx_post_make_slug($title) { return $slug; } -function cx_posts_add_post($site_id, $title, $slug, $date, $draft, $data) { +function cx_posts_add_post($site_id, $title, $slug, $date, $page, $draft, $data) { $creation_time = $update_time = time(); if ($slug == null) { @@ -94,10 +96,10 @@ function cx_posts_add_post($site_id, $title, $slug, $date, $draft, $data) { post_data, post_data_version) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);'; - cx_db_exec($sql, $site_id, $creation_time, $update_time, $slug, $date, false, $draft, $title, $data, 1); + cx_db_exec($sql, $site_id, $creation_time, $update_time, $slug, $date, $page, $draft, $title, $data, 1); } -function cx_posts_update_post($post_id, $title, $slug, $date, $draft, $data) { +function cx_posts_update_post($post_id, $title, $slug, $date, $page, $draft, $data) { $update_time = time(); if ($slug == null) { @@ -112,12 +114,13 @@ function cx_posts_update_post($post_id, $title, $slug, $date, $draft, $data) { SET post_update_time = ?, post_slug = ?, post_date = ?, + post_is_page = ?, post_is_draft = ?, post_title = ?, post_data = ? WHERE post_id == ?;'; //LIMIT 1;'; - cx_db_exec($sql, $update_time, $slug, $date, $draft, $title, $data, $post_id); + cx_db_exec($sql, $update_time, $slug, $date, $page, $draft, $title, $data, $post_id); } function cx_posts_delete_post($post_id) { @@ -127,11 +130,12 @@ 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, post_date, + post_is_page, post_is_draft, post_title, post_data @@ -147,6 +151,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 .= ';'; @@ -156,17 +164,37 @@ function cx_posts_get(int $limit = 0, bool $include_drafts = false) { } } +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, post_slug, post_date, + post_is_page, post_is_draft, post_title, post_data FROM posts - WHERE post_is_page == FALSE - AND post_id == ? + WHERE post_id == ? LIMIT 1;'; foreach (cx_db_query($sql, $post_id) as $post) { @@ -177,11 +205,29 @@ function cx_posts_find_post($post_id) { return null; } -function cx_posts_find_post_id($post_slug) { +function cx_posts_find_article_id($post_slug) { + $sql = 'SELECT + post_id + FROM posts + WHERE post_slug == ? + AND post_is_page == FALSE + AND post_is_draft == FALSE + LIMIT 1;'; + + foreach (cx_db_query($sql, $post_slug) as $post) { + return $post['post_id']; + } + + return null; +} + +function cx_posts_find_page_id($post_slug) { $sql = 'SELECT post_id FROM posts WHERE post_slug == ? + AND post_is_page == TRUE + AND post_is_draft == FALSE LIMIT 1;'; foreach (cx_db_query($sql, $post_slug) as $post) { @@ -191,18 +237,25 @@ function cx_posts_find_post_id($post_slug) { return null; } -function cx_pages_get() { +function cx_pages_get(bool $include_drafts = false) { $sql = 'SELECT post_id, post_slug, post_date, + post_is_page, post_is_draft, 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 ($include_drafts == false) { + $sql .= ' AND post_is_draft == FALSE'; + } + + $sql .= ' ORDER BY post_date ASC'; + + $sql .= ';'; foreach (cx_db_query($sql) as $post) { $p = new Post($post);