summaryrefslogtreecommitdiff
path: root/src/web/_model/blog.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/web/_model/blog.php')
-rw-r--r--src/web/_model/blog.php80
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;
+ }
+}
+?>