diff --git a/lib/Pico.php b/lib/Pico.php index e74b49c..37c6a27 100644 --- a/lib/Pico.php +++ b/lib/Pico.php @@ -395,13 +395,13 @@ class Pico $this->triggerEvent('onRequestFile', array(&$this->requestFile)); // load raw file content - $this->triggerEvent('onContentLoading', array(&$this->requestFile)); + $this->triggerEvent('onContentLoading'); $hiddenFileRegex = '/(?:^|\/)(?:_|404' . preg_quote($this->getConfig('content_ext'), '/') . '$)/'; if (file_exists($this->requestFile) && !preg_match($hiddenFileRegex, $this->requestFile)) { $this->rawContent = $this->loadFileContent($this->requestFile); } else { - $this->triggerEvent('on404ContentLoading', array(&$this->requestFile)); + $this->triggerEvent('on404ContentLoading'); header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found'); $this->rawContent = $this->load404Content($this->requestFile); @@ -413,17 +413,17 @@ class Pico $this->triggerEvent('onContentLoaded', array(&$this->rawContent)); // parse file meta - $this->triggerEvent('onMetaParsing', array(&$this->rawContent)); + $this->triggerEvent('onMetaParsing'); $this->meta = $this->parseFileMeta($this->rawContent, $this->getMetaHeaders()); $this->triggerEvent('onMetaParsed', array(&$this->meta)); // parse file content - $this->triggerEvent('onContentParsing', array(&$this->rawContent)); + $this->triggerEvent('onContentParsing'); - $this->content = $this->prepareFileContent($this->rawContent, $this->meta); - $this->triggerEvent('onContentPrepared', array(&$this->content)); + $markdown = $this->prepareFileContent($this->rawContent, $this->meta); + $this->triggerEvent('onContentPrepared', array(&$markdown)); - $this->content = $this->parseFileContent($this->content); + $this->content = $this->parseFileContent($markdown); $this->triggerEvent('onContentParsed', array(&$this->content)); // read pages @@ -1490,15 +1490,12 @@ class Pico $id = substr($file, $contentDirLength, -$contentExtLength); // trigger onSinglePageLoading event - $this->triggerEvent('onSinglePageLoading', array(&$id)); - - if ($id === null) { - continue; - } - - // drop inaccessible pages (e.g. drop "sub.md" if "sub/index.md" exists) + // skip inaccessible pages (e.g. drop "sub.md" if "sub/index.md" exists) by default $conflictFile = $contentDir . $id . '/index' . $contentExt; - if (in_array($conflictFile, $files, true)) { + $skipFile = in_array($conflictFile, $files, true) ?: null; + $this->triggerEvent('onSinglePageLoading', array($id, &$skipFile)); + + if ($skipFile) { continue; } diff --git a/plugins/DummyPlugin.php b/plugins/DummyPlugin.php index c201628..00877bd 100644 --- a/plugins/DummyPlugin.php +++ b/plugins/DummyPlugin.php @@ -113,10 +113,9 @@ class DummyPlugin extends AbstractPicoPlugin * * @see Pico::loadFileContent() * @see DummyPlugin::onContentLoaded() - * @param string &$file path to the file which contents will be read * @return void */ - public function onContentLoading(&$file) + public function onContentLoading() { // your code } @@ -126,10 +125,9 @@ class DummyPlugin extends AbstractPicoPlugin * * @see Pico::load404Content() * @see DummyPlugin::on404ContentLoaded() - * @param string &$file path to the file which contents were requested * @return void */ - public function on404ContentLoading(&$file) + public function on404ContentLoading() { // your code } @@ -167,11 +165,9 @@ class DummyPlugin extends AbstractPicoPlugin * * @see Pico::parseFileMeta() * @see DummyPlugin::onMetaParsed() - * @param string &$rawContent raw file contents - * @param string[] &$headers known meta header fields * @return void */ - public function onMetaParsing(&$rawContent, array &$headers) + public function onMetaParsing() { // your code } @@ -194,10 +190,9 @@ class DummyPlugin extends AbstractPicoPlugin * @see Pico::prepareFileContent() * @see DummyPlugin::prepareFileContent() * @see DummyPlugin::onContentParsed() - * @param string &$rawContent raw file contents of the requested page * @return void */ - public function onContentParsing(&$rawContent) + public function onContentParsing() { // your code } @@ -246,16 +241,22 @@ class DummyPlugin extends AbstractPicoPlugin /** * Triggered before Pico loads a single page * - * Set `$id` to `null` to remove this page from the pages array. + * Set the `$skipFile` parameter to TRUE to remove this page from the pages + * array. Pico usually passes NULL by default, unless it is a conflicting + * page (i.e. `content/sub.md`, but there's also a `content/sub/index.md`), + * then it passes TRUE. Don't change this value incautiously if it isn't + * NULL! Someone likely set it to TRUE or FALSE on purpose... * * @see DummyPlugin::onSinglePageContent() * @see DummyPlugin::onSinglePageLoaded() * @see DummyPlugin::onPagesDiscovered() * @see DummyPlugin::onPagesLoaded() - * @param string &$id relative path to the content file + * @param string $id relative path to the content file + * @param bool|null $skipPage set this to TRUE to remove this page from + * the pages array, otherwise leave it unchanged * @return void */ - public function onSinglePageLoading(&$id) + public function onSinglePageLoading($id, &$skipPage) { // your code }