/** * Parse markdown file * * @param array or string $file Absolute path to file * @return array Result of rendering with statuscode, content and metadata */ public function parseFile($file) { $file = Filters::arrayToPath($file); // File found if (file_exists($file)) { $file = file_get_contents($file, FILE_USE_INCLUDE_PATH); $file = $this->splitFile($file); // Metadata found if (count($file) > 1) { $content = $this->parseMarkdown($file[1]); $metadata = $this->parseMetadata($file[0]); $status = isset($metadata['status']) ? $metadata['status'] : 200; return array('status' => $status, 'content' => $content, 'metadata' => $metadata); // No metadata found } else { return array('status' => 200, 'content' => $this->parseMarkdown($file[0])); } // File not found, return false } else { return array('status' => 404, 'content' => false); } }
/** * Create navigation item * * @param array $request Current request URI * @param array $uri URI from current navigation item * @param array $metadata Current navigation item's metadata * @return array Navigation item */ private function createNavigation($request, $uri, $metadata) { $data = array(); if (isset($metadata['hidden']) && $metadata['hidden'] == 'true') { $data['hidden'] = true; } else { $data['title'] = isset($metadata['title']) ? $metadata['title'] : end($uri); $data['title'] = isset($metadata['navigation']) ? $metadata['navigation'] : $data['title']; $data['url'] = Filters::arrayToUri($uri); $level = count($uri); $data['active'] = Filters::arrayToUri(array_slice($request, 0, $level)) == Filters::arrayToUri($uri) ? true : false; } return $data; }
/** * Execute all important hooks to render request * * @param array $uri HTTP request uri * @param string $site Hostname - optional * @return array API data */ public function render($uri) { $uri = Filters::sanitizeUri($uri); $this->hooks->execute('init'); $this->hooks->execute('request.prerender'); $this->hooks->execute('request.render', array($uri)); $this->hooks->execute('request.postrender'); return $this->api(); }