mirror of
https://github.com/getgrav/grav.git
synced 2026-03-01 01:51:29 +01:00
Flex Pages optimizations
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user