From 2c78b3efca70b85f2af673c5a8b25e9144b4ec4f Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Tue, 11 Feb 2020 12:09:27 +0200 Subject: [PATCH] Fixed Flex Page cache key not taking account active language --- CHANGELOG.md | 1 + .../Grav/Common/Flex/Types/Pages/PageObject.php | 17 +++++++++++++++++ .../Types/Pages/Traits/PageTranslateTrait.php | 2 +- .../Framework/Flex/Pages/FlexPageObject.php | 3 ++- 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a9fa5d0ad..6f7ec3766 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ * Fixed `FlexObject::triggerEvent()` not emitting events [#2816](https://github.com/getgrav/grav/issues/2816) * Grav 1.7: Fixed saving Flex configuration with ignored values becoming null * Grav 1.7: Fixed `bin/plugin` initialization + * Grav 1.7: Fixed Flex Page cache key not taking account active language # v1.7.0-rc.5 ## 02/03/2020 diff --git a/system/src/Grav/Common/Flex/Types/Pages/PageObject.php b/system/src/Grav/Common/Flex/Types/Pages/PageObject.php index 24b0d863a..1932c41fb 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/PageObject.php +++ b/system/src/Grav/Common/Flex/Types/Pages/PageObject.php @@ -19,6 +19,7 @@ use Grav\Common\Flex\Types\Pages\Traits\PageContentTrait; use Grav\Common\Flex\Types\Pages\Traits\PageLegacyTrait; use Grav\Common\Flex\Types\Pages\Traits\PageRoutableTrait; use Grav\Common\Flex\Types\Pages\Traits\PageTranslateTrait; +use Grav\Common\Language\Language; use Grav\Common\Page\Pages; use Grav\Common\Utils; use Grav\Framework\Filesystem\Filesystem; @@ -129,6 +130,22 @@ class PageObject extends FlexPageObject return parent::getFormValue($name, $default, $separator); } + /** + * {@inheritdoc} + * @see FlexObjectInterface::getCacheKey() + */ + public function getCacheKey(): string + { + $cacheKey = parent::getCacheKey(); + if ($cacheKey) { + /** @var Language $language */ + $language = Grav::instance()['language']; + $cacheKey .= '_' . $language->getActive(); + } + + return $cacheKey; + } + /** * @param array|bool $reorder * @return FlexObject|\Grav\Framework\Flex\Interfaces\FlexObjectInterface diff --git a/system/src/Grav/Common/Flex/Types/Pages/Traits/PageTranslateTrait.php b/system/src/Grav/Common/Flex/Types/Pages/Traits/PageTranslateTrait.php index c1e1e45e6..addd5f5a3 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/Traits/PageTranslateTrait.php +++ b/system/src/Grav/Common/Flex/Types/Pages/Traits/PageTranslateTrait.php @@ -81,7 +81,7 @@ trait PageTranslateTrait } $header = $aPage->header(); - $routes = isset($header->routes) ? $header->routes : []; + $routes = $header->routes ?? []; $route = $routes['default'] ?? $aPage->rawRoute(); if (!$route) { $route = $aPage->route(); diff --git a/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php b/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php index d0c5b0a2d..16e6e83e3 100644 --- a/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php +++ b/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php @@ -193,13 +193,14 @@ class FlexPageObject extends FlexObject implements PageInterface, MediaManipulat return $key; } + /** * {@inheritdoc} * @see FlexObjectInterface::getCacheKey() */ public function getCacheKey(): string { - return $this->hasKey() ? $this->getTypePrefix() . $this->getFlexType() . '.' . $this->getKey() . $this->getLanguage() : ''; + return $this->hasKey() ? $this->getTypePrefix() . $this->getFlexType() . '.' . $this->getKey() . '.' . $this->getLanguage() : ''; } /**