markdown = new MarkdownParser(); } /** * @param mixed $data * @return void */ private function load_blog(&$data): void { $blog = array(); $dir = ASSET_ROOT . '/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_base_data('blog'); $this->load_blog($data); $data['title'] = lang('title'); $data['desc'] = lang('blog_short_desc'); return $data; } private function update_images(string $md): string { $pattern = '/(.*)/'; $base = $this->get_url(''); $replace = ""; $replace .= ie('
') . "\"\\2\"" . ie('
'); $replace .= "
"; $md = preg_replace($pattern, $replace, $md); return $md; } /** * @param mixed $name * @return bool| */ private function render_post($name): ?array { $dir = ASSET_ROOT . '/blog'; $path = $dir . '/' . $name . '.md'; if(!file_exists($path)) { return NULL; } $md = $this->markdown->parse($path); $md['content'] = $this->update_images($md['content']); return $md; } /** * @param mixed $name * @return bool|null|array */ public function get_post($name): ?array { $data = parent::get_base_data(); $post = $this->render_post($name); if (!$post) { return NULL; } $data['title'] = $post['meta']['name']; $data['desc'] = $post['meta']['desc']; $data['post'] = $post; return $data; } /** * @param mixed $name */ private function render_writeup($name): ?array { $dir = ASSET_ROOT . '/writeup'; $path = $dir . '/' . $name . '.md'; if(!file_exists($path)) { return NULL; } $md = $this->markdown->parse($path); $md['content'] = $this->update_images($md['content']); return $md; } /** * @param mixed $name * @return bool|null|array */ public function get_writeup($name): ?array { $data = parent::get_base_data(); $writeup = $this->render_writeup($name); if (!$writeup) { return NULL; } $data['title'] = $writeup['meta']['name']; $data['desc'] = $writeup['meta']['desc']; $data['post'] = $writeup; return $data; } } ?>