/** * Searches the index for a matching post. * If found, it creates a new Post object with filtered content * * @return mixed found Post or null */ public function findById($id, $expand = true) { $index = $this->getPostIndex(); $postMeta = $index->get($id); if ($postMeta) { $postMeta = (object) $postMeta; if ($expand === false) { # return unexpanded post return $postMeta; } $fileinfo = new \SplFileInfo($postMeta->filepath); $parser = new Parser($this->readFile($fileinfo)); $post = new Post($postMeta); $post->setRawContent($parser->getContent()); if (!is_null($this->contentFilter)) { $post->setContentFilter($this->contentFilter); } list($prev, $next) = $this->findPrevAndNextPosts($id); $post->prev = $prev; $post->next = $next; return $post; } }
/** * Adds/removes properties on the post appropriate for API consumption. */ protected function preparePostForJson(Post $post) { $post->links = array('self' => $this->app['url_generator']->generate('np_api_get_post', array('id' => $post->id)), 'preview' => $this->app['url_generator']->generate('np_preview_post'), 'put' => $this->app['url_generator']->generate('np_api_put_post', array('id' => $post->id)), 'delete' => $this->app['url_generator']->generate('np_api_delete_post', array('id' => $post->id))); if (isset($post->next->id)) { $post->links['nextPost'] = $this->app['url_generator']->generate('np_api_get_post', array('id' => $post->next->id)); } if (isset($post->prev->id)) { $post->links['previousPost'] = $this->app['url_generator']->generate('np_api_get_post', array('id' => $post->prev->id)); } $post->filteredContent = $post->getContent(); // don't supply the full filepath or prev, next posts in api requests unset($post->filepath); if (isset($post->prev)) { unset($post->prev); } if (isset($post->next)) { unset($post->next); } return $post; }