/** * @param null $criteria * @param $folder * @return PageCollection */ public static function find($criteria = null, $folder = null) { if (!$folder) { $folder = copi::$app->path('content:'); } if ($criteria && is_string($criteria)) { $criteria = create_function('$p', "return ({$criteria});"); } $pages = []; if (file_exists($folder)) { $directory = new \RecursiveDirectoryIterator($folder); $flattened = new \RecursiveIteratorIterator($directory); $files = new \RegexIterator($flattened, '#(?<!/)\\.(html|md)$|^[^\\.]*$#i'); foreach ($files as $filename => $file) { $page = Page::fromCache($file->getRealPath()); if ($criteria && $criteria($page)) { $pages[] = $page; } else { $pages[] = $page; } } } $collection = new self($pages); return $collection; }
/** * @return misc */ public function parent() { $page = null; $indexfile = $this->dir . '/index'; if (is_file("{$indexfile}.html")) { $page = Page::fromCache("{$indexfile}.html"); } elseif (is_file("{$indexfile}.md")) { $page = Page::fromCache("{$indexfile}.md"); } return $page; }