From 4046fed60f3950f1ceca2a0b8aa79cc8d8a020e0 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 27 Oct 2021 14:23:39 +0300 Subject: [PATCH 1/3] Changelog update --- CHANGELOG.md | 6 ++++++ .../Grav/Common/Processors/PagesProcessor.php | 20 ++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5320a0e5a..0641d2bb9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# v1.7.25 +## mm/dd/2021 + +1. [](#improved) + * Added `route` and `request` to `onPagesInitialized` event + # v1.7.24 ## 10/26/2021 diff --git a/system/src/Grav/Common/Processors/PagesProcessor.php b/system/src/Grav/Common/Processors/PagesProcessor.php index 470ca907b..36f6718d2 100644 --- a/system/src/Grav/Common/Processors/PagesProcessor.php +++ b/system/src/Grav/Common/Processors/PagesProcessor.php @@ -42,15 +42,29 @@ class PagesProcessor extends ProcessorBase $this->container['debugger']->addMessage($this->container['cache']->getCacheStatus()); $this->container['pages']->init(); - $this->container->fireEvent('onPagesInitialized', new Event(['pages' => $this->container['pages']])); - $this->container->fireEvent('onPageInitialized', new Event(['page' => $this->container['page']])); + + $route = $this->container['route']; + + $this->container->fireEvent('onPagesInitialized', new Event( + [ + 'pages' => $this->container['pages'], + 'route' => $route, + 'request' => $request + ] + )); + $this->container->fireEvent('onPageInitialized', new Event( + [ + 'page' => $this->container['page'], + 'route' => $route, + 'request' => $request + ] + )); /** @var PageInterface $page */ $page = $this->container['page']; if (!$page->routable()) { $exception = new RequestException($request, 'Page Not Found', 404); - $route = $this->container['route']; // If no page found, fire event $event = new Event([ 'page' => $page, From 125f2a8662f7eb1c654551db67d0d104be0b3e5a Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 27 Oct 2021 14:24:16 +0300 Subject: [PATCH 2/3] Improved page cloning --- CHANGELOG.md | 1 + system/src/Grav/Common/Page/Page.php | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0641d2bb9..5de83960a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ 1. [](#improved) * Added `route` and `request` to `onPagesInitialized` event + * Improved page cloning # v1.7.24 ## 10/26/2021 diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index 2099be212..379f9bf58 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -218,6 +218,14 @@ class Page implements PageInterface return $this; } + public function __clone() + { + $this->header = $this->header ? clone $this->header : null; + $this->route = null; + $this->raw_route = null; + $this->_forms = null; + } + /** * @return void */ From 1d1c10f0a64c25c18368d3191a8077cc804faa23 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 27 Oct 2021 14:59:23 +0300 Subject: [PATCH 3/3] Added method `Page::initialize()` --- CHANGELOG.md | 2 +- system/src/Grav/Common/Page/Page.php | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5de83960a..66f07b665 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ 1. [](#improved) * Added `route` and `request` to `onPagesInitialized` event - * Improved page cloning + * Improved page cloning, added method `Page::initialize()` # v1.7.24 ## 10/26/2021 diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index 379f9bf58..11b9790cc 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -220,10 +220,21 @@ class Page implements PageInterface public function __clone() { + $this->initialized = false; $this->header = $this->header ? clone $this->header : null; - $this->route = null; - $this->raw_route = null; - $this->_forms = null; + } + + /** + * @return void + */ + public function initialize(): void + { + if (!$this->initialized) { + $this->initialized = true; + $this->route = null; + $this->raw_route = null; + $this->_forms = null; + } } /**