X-Git-Url: http://git.shiar.net/minimedit.git/blobdiff_plain/5e246b86aaa70c3c215bb484f0940195d9ca1d36..674f6d3f070bcd8a08b725619e80fac0c9f72f1e:/article.inc.php diff --git a/article.inc.php b/article.inc.php index 3c65a97..a39b897 100644 --- a/article.inc.php +++ b/article.inc.php @@ -21,8 +21,8 @@ class ArchiveArticle function __construct($path) { - $this->page = $path; - $this->link = preg_replace('{(?:/index)?\.html$}', '', $path); + $this->page = preg_replace('{^\.(?:/|$)}', '', $path); + $this->link = preg_replace('{(?:/index)?\.html$}', '', $this->page); if (file_exists($this->page)) { $this->raw = file_get_contents($this->page); @@ -141,3 +141,38 @@ class ArchiveArticle ); } } + +class PageSearch +{ + function __construct($path = '.') + { + $this->iterator = new RecursiveCallbackFilterIterator( + new RecursiveDirectoryIterator($path), + function ($current) { + if ($current->getFilename()[0] === '.') { + # skip hidden files and directories + return FALSE; + } + if ($current->isLink()) { + # ignore symlinks, original contents only + return FALSE; + } + # match **/*.html + return $current->isDir() + || preg_match('/\.html$/', $current->getFilename()); + } + ); + } + + function files() + { + # order alphabetically by link + $dir = iterator_to_array(new RecursiveIteratorIterator($this->iterator)); + array_walk($dir, function (&$row, $name) { + # prepare values for sorting (directory index first) + $row = preg_replace('{/index\.html$}', '', $name); + }); + asort($dir); + return $dir; + } +}