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('') . "
" . 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;
}
}
?>