X-Git-Url: http://git.shiar.net/minimedit.git/blobdiff_plain/f547127c637332119b42329ca78d0e1a659d9739..95ed00cbb713d859de15653af848b6b63a204993:/article.inc.php?ds=sidebyside diff --git a/article.inc.php b/article.inc.php index 30de51e..7f8e622 100644 --- a/article.inc.php +++ b/article.inc.php @@ -65,6 +65,18 @@ class ArchiveArticle return; } + function index() + { + $this->handler; + if (empty($this->handler)) { + return; + } + $User = NULL; + $Page = $this; + $res = include "./{$this->handler}/index.php"; + return $res; + } + function restricted() { $this->handler; @@ -149,6 +161,9 @@ class ArchiveArticle function thumb($size = '300x') { if (!$this->image or $this->image[0] !== '/') return; + if (preg_match('{^/thumb/\D}', $this->image)) { + return ltrim($this->image, '/'); + } return preg_replace( ['{^(?:/thumb/[^/]*)?}', '/\.groot(?=\.\w+$)/'], ["thumb/$size", ''], $this->image @@ -228,6 +243,8 @@ class ArchiveArticle class PageSearch { + public $handlers = []; + function __construct($path = '.') { $this->iterator = new RecursiveCallbackFilterIterator( @@ -237,6 +254,11 @@ class PageSearch # skip hidden files and directories return FALSE; } + if (file_exists($current->getFilename() . '/index.php')) { + # contents better provided by handler code + $this->handlers[ $current->getPathname() ] = $current; + return FALSE; + } if ($current->isLink()) { # ignore symlinks, original contents only return FALSE; @@ -254,12 +276,12 @@ class PageSearch 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); + $dir = []; + foreach (new RecursiveIteratorIterator($this->iterator) as $name) { + $article = new ArchiveArticle($name); + $dir[$article->link] = $article; + } + ksort($dir); return $dir; } }