diff options
author | Freya Murphy <freya@freyacat.org> | 2024-05-24 09:05:42 -0400 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2024-05-24 09:05:42 -0400 |
commit | c5f39ea2cd7cf02246705ea8872d3b350526165c (patch) | |
tree | 2694f9fdc5d83b529a01f2997c1d89c271c86592 /src/web/_model/blog.php | |
download | website-c5f39ea2cd7cf02246705ea8872d3b350526165c.tar.gz website-c5f39ea2cd7cf02246705ea8872d3b350526165c.tar.bz2 website-c5f39ea2cd7cf02246705ea8872d3b350526165c.zip |
initial
Diffstat (limited to 'src/web/_model/blog.php')
-rw-r--r-- | src/web/_model/blog.php | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/web/_model/blog.php b/src/web/_model/blog.php new file mode 100644 index 0000000..42cee97 --- /dev/null +++ b/src/web/_model/blog.php @@ -0,0 +1,80 @@ +<?php /* Copyright (c) 2024 Freya Murphy */ +class Blog_model extends Model { + + private $markdown; + + function __construct($load) { + parent::__construct($load); + $this->markdown = new MarkdownParser(); + } + + private function load_blog(&$data) { + $blog = array(); + $dir = $GLOBALS['assetroot'] . '/blog'; + if ($handle = opendir($dir)) { + while (false !== ($entry = readdir($handle))) { + if (str_starts_with($entry, ".")) { + continue; + } + $path = $dir . '/' . $entry; + $md = $this->markdown->parse($path); + $blog[$entry] = $md; + } + } + krsort($blog); + $data['blog'] = $blog; + } + + public function get_data(): ?array { + $data = parent::get_data(); + $this->load_blog($data); + $data['title'] = lang('title'); + $data['desc'] = lang('blog_short_desc'); + return $data; + } + + private function load_post($name) { + $dir = $GLOBALS['assetroot'] . '/blog'; + $path = $dir . '/' . $name; + if(!file_exists($path)) { + return FALSE; + } + $md = $this->markdown->parse($path); + return $md; + } + + public function get_post($name) { + $data = parent::get_data(); + $post = $this->load_post($name); + if (!$post) { + return FALSE; + } + $data['title'] = $post['meta']['name']; + $data['desc'] = $post['meta']['desc']; + $data['post'] = $post; + return $data; + } + + private function load_writeup($name) { + $dir = $GLOBALS['assetroot'] . '/writeup'; + $path = $dir . '/' . $name; + if(!file_exists($path)) { + return FALSE; + } + $md = $this->markdown->parse($path); + return $md; + } + + public function get_writeup($name) { + $data = parent::get_data(); + $writeup = $this->load_writeup($name); + if (!$writeup) { + return FALSE; + } + $data['title'] = $writeup['meta']['name']; + $data['desc'] = $writeup['meta']['desc']; + $data['post'] = $writeup; + return $data; + } +} +?> |