From 99bbd1f698687bc7765376d73cc9a93d2e4c1e78 Mon Sep 17 00:00:00 2001 From: LarsDW223 Date: Sat, 30 Apr 2016 11:56:27 +0200 Subject: [PATCH] Check if method '$renderer->getLastlevel()' exists or if '$renderer->lastlevel' is accessible. If not for both then always use level 1 to prevent an error causing an empty page e.g. on "hrun" and "detritus". See #11. --- syntax.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/syntax.php b/syntax.php index 8574d45..44e99c7 100644 --- a/syntax.php +++ b/syntax.php @@ -338,7 +338,19 @@ class syntax_plugin_filelist extends DokuWiki_Syntax_Plugin { * @return void */ function _render_page($result, $params, &$renderer) { - $this->_render_page_section($result['files'], $result['basedir'], $result['webdir'], $params, $renderer, $renderer->lastlevel + 1); + if ( method_exists ($renderer, 'getLastlevel') === false ) { + $class_vars = get_class_vars (get_class($renderer)); + if ($class_vars ['lastlevel'] !== NULL) { + // Old releases before "hrun": $lastlevel is accessible + $this->_render_page_section($result['files'], $result['basedir'], $result['webdir'], $params, $renderer, $renderer->lastlevel + 1); + } else { + // Release "hrun" or newer without method 'getLastlevel()'. + // Lastlevel can't be determined. Workaroud: always use level 1. + $this->_render_page_section($result['files'], $result['basedir'], $result['webdir'], $params, $renderer, 1); + } + } else { + $this->_render_page_section($result['files'], $result['basedir'], $result['webdir'], $params, $renderer, $renderer->getLastlevel() + 1); + } } /**