summaryrefslogtreecommitdiff
path: root/src/web/_model/projects.php
blob: 537bce52b7e2c99787328e6e407e7da7b32788e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php /* Copyright (c) 2024 Freya Murphy */
class Projects_model extends Model {

	private $markdown;

	function __construct()
	{
		$this->markdown = new MarkdownParser();
	}

	/**
	 * @param array<string,mixed> $data
	 */
	private function load_projects(&$data): void
	{
		$projects = array();
		$dir = ASSET_ROOT . '/projects';
		if ($handle = opendir($dir)) {
			while (false !== ($entry = readdir($handle))) {
				if (str_starts_with($entry, ".")) {
					continue;
				}
				$path = $dir . '/' . $entry;
				$md = $this->markdown->parse($path);
				$projects[$entry] = $md;
			}
		}
		krsort($projects);
		$data['projects'] = $projects;
	}

	public function get_data(): ?array
	{
		$data = parent::get_base_data();
		$this->load_projects($data);
		$data['title'] = lang('title');
		$data['desc'] = lang('short_desc');
		return $data;
	}
}
?>