cx_require('lib', 'db.php');
cx_require('lib', 'setup.php');
-cx_require('third_party', 'parsedown', 'Parsedown.php');
-
-function mk_markdown($markdown) {
- static $Parsedown = new Parsedown();
-
- return $Parsedown->text($markdown);
-}
+cx_require('lib', 'markdown.php');
class PostMetadata {
public $hero_image;
public $title;
public $slug;
public $date;
+ public $is_page;
public $is_draft;
+ public $nav_index;
public $data;
public $html_content;
public $html_excerpt;
$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 = mk_markdown($this->data);
+ $this->html_content = cx_markdown_generate_html($this->data);
$this->html_excerpt = null;
// Read more...
$segments = explode('---', $this->data, 2);
if (count($segments) > 1) {
- $this->html_excerpt = mk_markdown($segments[0]);
+ $this->html_excerpt = cx_markdown_generate_html($segments[0]);
}
}
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, $nav_index, $data) {
$creation_time = $update_time = time();
if ($slug == null) {
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, false, $draft, $title, $data, 1);
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);';
+ cx_db_exec($sql, $site_id, $creation_time, $update_time, $slug, $date, $page, $draft, $nav_index, $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, $nav_index, $data) {
$update_time = time();
if ($slug == null) {
SET post_update_time = ?,
post_slug = ?,
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, $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) {
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_navigation_index,
post_title,
post_data
FROM posts
if ($limit > 0) {
$sql .= ' LIMIT ' . $limit;
}
+
+ if ($offset > 0) {
+ $sql .= ' OFFSET ' . $offset;
+ }
$sql .= ';';
}
}
+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_navigation_index,
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) {
return null;
}
-function cx_posts_find_post_id($post_slug) {
+function cx_posts_find_article_id($post_slug, bool $include_drafts = false) {
$sql = 'SELECT
post_id
FROM posts
WHERE post_slug == ?
- 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_pages_get() {
+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';
+
+ 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_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);
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,