Flex Pages optimizations

This commit is contained in:
Matias Griese
2021-02-25 17:39:41 +02:00
parent e802d0098f
commit d16a65ebd7
3 changed files with 25 additions and 12 deletions

View File

@@ -3,6 +3,9 @@
1. [](#new)
* Added `ControllerResponseTrait::createDownloadResponse()` method
1. [](#improved)
* Optimized `Flex Pages` parent method when using multi-language
* Optimized `Flex Pages` permissions lookups
# v1.7.7
## 02/23/2021

View File

@@ -27,6 +27,8 @@ trait PageAuthorsTrait
{
/** @var array<int,UserInterface> */
private $_authors;
/** @var array|null */
private $_permissionsCache;
/**
* Returns true if object has the named author.
@@ -70,15 +72,19 @@ trait PageAuthorsTrait
*/
public function getPermissions(bool $inherit = false)
{
$permissions = [];
if ($inherit && $this->getNestedProperty('header.permissions.inherit', true)) {
$parent = $this->parent();
if ($parent && method_exists($parent, 'getPermissions')) {
$permissions = $parent->getPermissions($inherit);
if (null === $this->_permissionsCache) {
$permissions = [];
if ($inherit && $this->getNestedProperty('header.permissions.inherit', true)) {
$parent = $this->parent();
if ($parent && method_exists($parent, 'getPermissions')) {
$permissions = $parent->getPermissions($inherit);
}
}
$this->_permissionsCache = $this->loadPermissions($permissions);
}
return $this->loadPermissions($permissions);
return $this->_permissionsCache;
}
/**

View File

@@ -32,6 +32,8 @@ trait PageRoutableTrait
private $_route;
/** @var string|null */
private $_path;
/** @var PageInterface|null */
private $_parentCache;
/**
* Returns the page extension, got from the page `url_extension` config and falls back to the
@@ -413,8 +415,8 @@ trait PageRoutableTrait
throw new RuntimeException(__METHOD__ . '(PageInterface): Not Implemented');
}
if ($this->root()) {
return null;
if ($this->_parentCache || $this->root()) {
return $this->_parentCache;
}
$filesystem = Filesystem::getInstance(false);
@@ -427,12 +429,14 @@ trait PageRoutableTrait
$parent = $parent->getTranslation($language) ?? $parent;
}
return $parent;
$this->_parentCache = $parent;
} else {
$index = $directory->getIndex();
$this->_parentCache = method_exists($index, 'getRoot') ? $index->getRoot() : null;
}
$index = $directory->getIndex();
return method_exists($index, 'getRoot') ? $index->getRoot() : null;
return $this->_parentCache;
}
/**