/**
  * @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;
 }
Example #2
0
 /**
  * @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;
 }