db = $db_adapter; $this->posts = []; $this->site_defaults = null; $this->markdown_engine = null; } public function get_post($key) { $key = sanitize_post_path($key); if(isset($this->posts[$key])) { return $this->posts[$key]; } $post_data = $this->db->get_postdata($key); $post = null; if(isset($post_data)) { $post = new Post($this, $post_data, $this->site_defaults); } $this->posts[$key] = $post; return $post; } public function get_markdown_for($post) { return $this->db->get_post_markdown($post->id); } public function render_post($post) { return ($this->markdown_engine)($post); } public function increment_post_counter(...$opts) { $this->db->increment_post_counter(...$opts); } public function get_children_for($post, ...$search_opts) { $child_list = $this->db->get_post_children($post->path, ...$search_opts); $out_list = []; foreach($child_list as $child_data) { array_push($out_list, new Post($this, $child_data, $this->site_defaults)); } return $out_list; } public function search_posts($search_query) { $search_results = $this->db->search_posts($search_query); $out_list = []; foreach($search_results as $search_result) { array_push($out_list, new Post($this, $search_result, $this->site_defaults)); } return $out_list; } } ?>